euler-1.61.0/0000755000175000001440000000000010331355253011554 5ustar ericuserseuler-1.61.0/dll/0000755000175000001440000000000010327040156012325 5ustar ericuserseuler-1.61.0/dll/dll.doc0000644000175000001440000001402107417015637013601 0ustar ericusers DLL.DOC How to extend EULER with own functions? This document describes how you are able to write built-in functions, which reside in a DLL (dynamic linkage library). Such an extension may be necessary, if the function cannot be written in the EULER programming language or would be too inefficient. You need a C compiler that can produce Windows 95 GUI DLLs or Linux / Unix shared library. The following description applies to Borland C++ Version 4.52. It should not be difficult to use any other compiler for Windows 95. You DLL must export one function or several functions. You can use this function in EULER with its exported name. To load the DLL, write e.g. >dll("test.dll","f",2) This will load the DLL test.dll, and get the address of a function f, which takes two parameters. You may then call this function with e.g. >z=f(x,y) just like any other EULER function. DLL function may take between 0 and 15 parameters. They always have a fixed parameter number, unlike user defined EULER functions and some built-in functions, which may take a veriable number of parameters. You may define more than one function "f", it their parameter number is different. DLL functions may issue an error. To write the DLL, generate a DLL project, which makes a Windows 95 GUI DLL (maybe any other Windows 32 model is sufficient, but it must be a 32 bit application). Link DLLDEF.C to your program and your own file, e.g. MINE.C. An example of this file is the following, which I commented for you #include "dlldef.h" #include // We need strcpy for the error message extern "C" char * _export fold (header * p[], int np, char *newram, char *ramend) // Your function must be of this type !!! { if (np!=2) // Check number of parameters { strcpy(newram,"Need 2 Parameters"); return newram; // Return ERROR } if (p[0]->type!=s_matrix || p[1]->type!=s_matrix) // Check the type of parameters { strcpy(newram,"Need 2 vectors"); return newram; } int n=dimsof(p[0])->c; // dimsof is a macro which lets you access the // dimension structure of a matrix if (dimsof(p[0])->r!=1 || dimsof(p[1])->r!=1 || dimsof(p[1])->c!=n) // We want two 1xn vectors ! { strcpy(newram,"Need to vectors of same size"); return newram; } header *hd=new_matrix(1,n,newram,ramend); // get place for the result if (!hd) // Better to check for overflow !!! { strcpy(newram,"Out of memory"); return newram; } // Do the computation : int i,j,k; double x; for (i=0; i=n) k=0; } matrixof(hd)[i]=x; } new_real(2.3,newram,ramend); // For practice, we return two values, a matrix and a real return newram; // new_... increases newram ! } As you see, there is a lot of error checking to be done. This is typical for an interpreted language. By the way, the example produces the cyclic folding of two vectors defined as r[i]=sum_j v[i]*w[i+j modulo n] The parameters of your functions are an array of pointers to headers, the size of this array and the bounds for the place, where you can return your result. The return value of your function marks the end of your result, unless it is equal to the original newram value. In this case, you must copy an error string to newram, which will be shown to the user of your function. What is a header? Each EULER variable has a header, which defines its size, its name and its type. After the header, there may be a dimension information and after that you will see an array of double numbers, which contain the data. The types of interest are s_real, s_complex, s_interval, s_matrix, s_cmatrix, s_imatrix and s_string. Only s_matrix, s_cmatrix and s_imatrix have a dimension information, wich is a structure with tow integers r and c (rows and columns). The s_string type has the string after the header. You do not have to know about the type constants, for you may use the new_... functions defined in DLLDEF.H: header *make_header (int type, int size, char * &newram, char *ramend); header *new_string (char *s, char * &newram, char *ramend); header *new_real (double x, char * &newram, char *ramend); header *new_complex (double x, double y, char * &newram, char *ramend); header *new_interval (double a, double b, char * &newram, char *ramend); header *new_matrix (int rows, int columns, char * &newram, char *ramend); header *new_cmatrix (int rows, int columns, char * &newram, char *ramend); header *new_imatrix (int rows, int columns, char * &newram, char *ramend); These function allow you to build place for your results at newram. They do increase newram automatically. Furthermore, you do not have to enter anything after you called new_... with the exception of the matrix data. To access the dimensions of a matrix, a string or the data of a matrix, use the following macros, which all accept headers as parameters: #define stringof(hd) ((char *)((hd)+1)) // returns the address of the string (char *) #define realof(hd) ((double *)((hd)+1)) // returns the address of the double number, the real part of a complex // number or the lower bound of an interval. #define matrixof(hd) ((double *)((char *)((hd)+1)+sizeof(dims))) // return the address of the first double number in a matrix // resp. its real part or lower bound #define dimsof(hd) ((dims *)((hd)+1)) // returns the address of a dims structure (with members r and c) // valid for matrices Note that complex numbers are stored as two double numbers, as well as intervals. After you have filled your results (or results) with values, return the new value of newram. In Borland C++, you must use the following DEF file (e.g. test.def): LIBRARY TEST EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE EXPORTS fold=_fold @1 This will export the internal _fold name as fold. Load this example into EULER with dll("test.dll","fold",2). You may use the function as in fold(x,y), where x and y are two 1xn vectors. That is all! In case of troubles, send me an EMail: Rene Grothmann euler-1.61.0/dll/test.def0000644000175000001440000000012507417015637013776 0ustar ericusersLIBRARY TEST EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE EXPORTS fold=_fold @1 euler-1.61.0/dll/dlldef.c0000644000175000001440000000425207417015637013742 0ustar ericusers#include "dlldef.h" #include #include int FAR PASCAL _export DllEntryPoint (HINSTANCE hInstance, DWORD reason, LPVOID res) { return TRUE; } header *make_header (int type, int size, char * &newram, char *ramend) { header *hd=(header *)newram; if (newram+size>ramend) return 0; hd->size=size; hd->type=type; hd->flags=0; *(hd->name)=0; hd->xor=0; newram+=size; return hd; } header *new_string (char *s, char * &newram, char *ramend) { int size=sizeof(header)+(strlen(s)/2+1)*2; header *hd=make_header(s_string,size,newram,ramend); if (hd) strcpy(stringof(hd),s); return hd; } header *new_real (double x, char * &newram, char *ramend) { int size=sizeof(header)+sizeof(double); header *hd=make_header(s_real,size,newram,ramend); if (hd) *realof(hd)=x; return hd; } header *new_complex (double x, double y, char * &newram, char *ramend) { int size=sizeof(header)+2*sizeof(double); header *hd=make_header(s_complex,size,newram,ramend); if (hd) { realof(hd)[1]=x; realof(hd)[2]=y; } return hd; } header *new_interval (double a, double b, char * &newram, char *ramend) { int size=sizeof(header)+2*sizeof(double); header *hd=make_header(s_interval,size,newram,ramend); if (hd) { realof(hd)[1]=a; realof(hd)[2]=b; } return hd; } header *new_matrix (int rows, int columns, char * &newram, char *ramend) { int size=sizeof(header)+sizeof(dims)+ rows*columns*sizeof(double); header *hd=make_header(s_matrix,size,newram,ramend); if (hd) { dimsof(hd)->c=columns; dimsof(hd)->r=rows; } return hd; } header *new_cmatrix (int rows, int columns, char * &newram, char *ramend) { int size=sizeof(header)+sizeof(dims)+ 2*rows*columns*sizeof(double); header *hd=make_header(s_cmatrix,size,newram,ramend); if (hd) { dimsof(hd)->c=columns; dimsof(hd)->r=rows; } return hd; } header *new_imatrix (int rows, int columns, char * &newram, char *ramend) { int size=sizeof(header)+sizeof(dims)+ 2*rows*columns*sizeof(double); header *hd=make_header(s_imatrix,size,newram,ramend); if (hd) { dimsof(hd)->c=columns; dimsof(hd)->r=rows; } return hd; } extern "C" char * _export TEST (header * p[], int np, char *newram, char *ramend) { return newram; } euler-1.61.0/dll/dlldef.h0000644000175000001440000000200207417015637013736 0ustar ericusersenum { s_real,s_complex,s_matrix,s_cmatrix, s_reference,s_command,s_submatrix,s_csubmatrix,s_string,s_udf, s_interval,s_imatrix,s_isubmatrix }; typedef struct { long size; char name[16]; int xor; int type; int flags; } header; typedef struct { int c,r; } dims; #define stringof(hd) ((char *)((hd)+1)) #define realof(hd) ((double *)((hd)+1)) #define matrixof(hd) ((double *)((char *)((hd)+1)+sizeof(dims))) #define dimsof(hd) ((dims *)((hd)+1)) header *make_header (int type, int size, char * &newram, char *ramend); header *new_string (char *s, char * &newram, char *ramend); header *new_real (double x, char * &newram, char *ramend); header *new_complex (double x, double y, char * &newram, char *ramend); header *new_interval (double a, double b, char * &newram, char *ramend); header *new_matrix (int rows, int columns, char * &newram, char *ramend); header *new_cmatrix (int rows, int columns, char * &newram, char *ramend); header *new_imatrix (int rows, int columns, char * &newram, char *ramend); euler-1.61.0/dll/test.c0000644000175000001440000000144307417015637013466 0ustar ericusers#include "dlldef.h" #include extern "C" char * _export fold (header * p[], int np, char *newram, char *ramend) { if (np!=2) { strcpy(newram,"Need 2 Parameters"); return newram; } if (p[0]->type!=s_matrix || p[1]->type!=s_matrix) { strcpy(newram,"Need 2 vectors"); return newram; } int n=dimsof(p[0])->c; if (dimsof(p[0])->r!=1 || dimsof(p[1])->r!=1 || dimsof(p[1])->c!=n) { strcpy(newram,"Need to vectors of same size"); return newram; } header *hd=new_matrix(1,n,newram,ramend); if (!hd) { strcpy(newram,"Out of memory"); return newram; } int i,j,k; double x; for (i=0; i=n) k=0; } matrixof(hd)[i]=x; } new_real(2.3,newram,ramend); return newram; } euler-1.61.0/configure.in0000644000175000001440000000253610331173573014076 0ustar ericusersdnl Process this file with autoconf to produce a configure script. dnl Created by Anjuta - will be overwritten dnl If you don't want it to overwrite it, dnl Please disable it in the Anjuta project configuration AC_INIT(configure.in) AM_INIT_AUTOMAKE(euler, 1.61.0) AM_CONFIG_HEADER(config.h) AC_ISC_POSIX CFLAGS="" AC_SUBST(CFLAGS) AC_PROG_CC AM_PROG_CC_STDC AC_HEADER_STDC AM_PROG_LIBTOOL PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0,,exit) AC_SUBST(GTK_LIBS) AC_SUBST(GTK_CFLAGS) dnl Checks for programs. dnl Checks for libraries. dnl Checks for header files. dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for library functions. dnl Checks for Additional stuffs. dnl AC_PROG_INSTALL dnl Set SOURCE DIR in config.h. packagesrcdir=`cd $srcdir && pwd` dnl Set PREFIX if test "x${prefix}" = "xNONE"; then packageprefix=${ac_default_prefix} else packageprefix=${prefix} fi dnl Subst INSTALL_DIR. NO_PREFIX_INSTALL_DIR="${packageprefix}" AC_SUBST(NO_PREFIX_INSTALL_DIR) INSTALL_DIR="${packageprefix}" AC_SUBST(INSTALL_DIR) AC_DEFINE_UNQUOTED(INSTALL_DIR, "${packageprefix}") AC_DEFINE_UNQUOTED(SOURCE_DIR, "${packagesrcdir}") AC_OUTPUT([ Makefile src/Makefile progs/Makefile progs/user/Makefile docs/Makefile docs/french/Makefile docs/german/Makefile docs/german/images/Makefile docs/images/Makefile docs/reference/Makefile ]) euler-1.61.0/src/0000755000175000001440000000000010331251041012331 5ustar ericuserseuler-1.61.0/src/binary.c0000644000175000001440000002421510254272260013777 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : binary.c -- file access */ #include #include #include #include "binary.h" #include "output.h" #define wrong_arg() { error=26; output("Wrong argument\n"); return; } #define wrong_arg_in(x) { error=26; output1("Wrong arguments for %s\n",x); return; } static FILE *fa=0; void mopen (header *hd) { header *st=hd,*hd1,*result; if (fa) fclose(fa); hd1=nextof(hd); hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; if (hd->type!=s_string || hd1->type!=s_string) wrong_arg_in("open"); fa=fopen(stringof(hd),stringof(hd1)); if (!fa) { error=1; output("Could not open the file!\n"); return; } result=new_real((double)ferror(fa),""); if (error) return; moveresult(st,result); } void mclose (header *hd) { new_real(fa!=0?(double)ferror(fa):-1,""); if (error) return; if (fa) fclose(fa); fa=0; } void mwrite (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("write"); if (!fa) return; fprintf(fa,"%s",stringof(hd)); result=new_real(ferror(fa),""); if (error) return; moveresult(st,result); } #if 0 void mputuchar (header *hd) { header *st=hd,*result; int n,i; unsigned char *p,*start=(unsigned char *)newram; double *m; hd=getvalue(hd); if (error) return; if (hd->type!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n)) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n*sizeof(unsigned short))) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n*sizeof(unsigned long))) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype==s_real) wrong_arg_in("getchar"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getchar"); if (fa) { if (!freeramfrom(start,n)) { output("Stack overflow in getchar(n)."); error=1; return; } newram+=n; count=fread(start,1,n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype==s_real) wrong_arg_in("getword"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getword"); if (fa) { if (!freeramfrom(start,n*sizeof(unsigned short))) { output("Stack overflow in getword(n)."); error=1; return; } newram=(char *)(start+n); count=fread(start,sizeof(unsigned short),n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype==s_real) wrong_arg_in("getlongword"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getlongword"); if (fa) { if (!freeramfrom(start,n*sizeof(unsigned long))) { output("Stack overflow in getlongword(n)."); error=1; return; } newram=(char *)(start+n); count=fread(start,sizeof(unsigned long),n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype==s_real) wrong_arg_in("getchar"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getchar"); if (fa) { if (!freeramfrom(start,n+1)) { output("Stack overflow in getchar(n)."); error=1; return; } newram+=n+1; count=fread(start,1,n,fa); start[n]=0; } result=new_string((char *)start,strlen((char *)start),""); if (error) return; m=matrixof(result); for (n=0; ntype!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n)) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n*sizeof(short))) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype!=s_real && hd->type!=s_matrix) wrong_arg_in("putchar(v)"); getmatrix(hd,&i,&n,&m); if (i!=1 || n<1) wrong_arg_in("putchar(v)"); if (fa) { if (!freeramfrom(start,n*sizeof(long))) { output("Stack overflow in getchar(n)."); error=1; return; } for (p=start,i=0; itype==s_real) wrong_arg_in("getchar"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getchar"); if (fa) { if (!freeramfrom(start,n)) { output("Stack overflow in getchar(n)."); error=1; return; } newram+=n; count=fread(start,1,n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype==s_real) wrong_arg_in("getword"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getword"); if (fa) { if (!freeramfrom(start,n*sizeof(short))) { output("Stack overflow in getword(n)."); error=1; return; } newram=(char *)(start+n); count=fread(start,sizeof(short),n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype==s_real) wrong_arg_in("getlongword"); n=(long)*realof(hd); if (n<=0) wrong_arg_in("getlongword"); if (fa) { if (!freeramfrom(start,n*sizeof(long))) { output("Stack overflow in getlongword(n)."); error=1; return; } newram=(char *)(start+n); count=fread(start,sizeof(long),n,fa); } result=new_matrix(1,count,""); if (error) return; m=matrixof(result); for (n=0; ntype!=s_real) wrong_arg_in("getvector"); if (!fa) return; n=(unsigned int) *realof(hd); result=new_matrix(1,n,""); if (error) return; m=matrixof(result); for (i=0; i * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include #include /* for strchr */ #include "rc.h" static short colors[3][MAX_COLORS] = { {255,0,100,0 ,0 ,0 ,100,150,100,50,220 ,80 ,80 ,80 ,140,190}, {255,0,0 ,100,0 ,100,100,150,100,50,80 ,220 ,80 ,140 ,140,190}, {255,0,0 ,0 ,100,100, 0,150,100,50,80 ,80 ,220 ,140 , 80,190} }; /* define enumeration values to be returned for specific symbols */ typedef enum { E_TOKEN_FIRST = G_TOKEN_LAST, E_TOKEN_SAVEATEXIT, E_TOKEN_BROWSER, E_TOKEN_TFONT, E_TOKEN_PFONT, E_TOKEN_TWIDTH, E_TOKEN_THEIGHT, E_TOKEN_GWIDTH, E_TOKEN_GHEIGHT, E_TOKEN_ESTACK, E_TOKEN_GSTACK, E_TOKEN_GLINES, E_TOKEN_GCOLORS, E_TOKEN_LAST } EulerRcTokenType; /* symbol array */ static const struct { gchar *name; guint token; } symbols[] = { { "saveatexit", E_TOKEN_SAVEATEXIT }, { "browser", E_TOKEN_BROWSER }, { "tfont", E_TOKEN_TFONT }, { "pfont", E_TOKEN_PFONT }, { "twidth", E_TOKEN_TWIDTH }, { "theight", E_TOKEN_THEIGHT }, { "gwidth", E_TOKEN_GWIDTH }, { "gheight", E_TOKEN_GHEIGHT }, { "estack", E_TOKEN_ESTACK }, { "gstack", E_TOKEN_GSTACK }, { "glines", E_TOKEN_GLINES }, { "colors", E_TOKEN_GCOLORS } }; static const guint n_symbols = sizeof (symbols) / sizeof (symbols[0]); static guint eulerrc_parse(GScanner *scanner, EulerPrefs *prefs) { guint token; token = g_scanner_get_next_token(scanner); switch (token) { case E_TOKEN_SAVEATEXIT: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->saveatexit = scanner->value.v_int; break; case E_TOKEN_BROWSER: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_STRING) return G_TOKEN_STRING; strcpy(prefs->browser, scanner->value.v_string); break; case E_TOKEN_TFONT: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_STRING) return G_TOKEN_STRING; strcpy(prefs->tfont, scanner->value.v_string); break; case E_TOKEN_PFONT: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_STRING) return G_TOKEN_STRING; strcpy(prefs->pfont, scanner->value.v_string); break; case E_TOKEN_TWIDTH: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->twidth = scanner->value.v_int; break; case E_TOKEN_THEIGHT: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->theight = scanner->value.v_int; break; case E_TOKEN_GWIDTH: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->gwidth = scanner->value.v_int; break; case E_TOKEN_GHEIGHT: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->gheight = scanner->value.v_int; break; case E_TOKEN_ESTACK: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->estack = scanner->value.v_int; break; case E_TOKEN_GSTACK: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->gstack = scanner->value.v_int; break; case E_TOKEN_GLINES: token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; prefs->glines = scanner->value.v_int; break; case E_TOKEN_GCOLORS: { int i, j; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return G_TOKEN_EQUAL_SIGN; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_LEFT_CURLY) return G_TOKEN_LEFT_CURLY; for (j=0 ; jcolors[i][j] = scanner->value.v_int; if (i!=2) { token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_COMMA) return G_TOKEN_COMMA; } } token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_RIGHT_CURLY) return G_TOKEN_RIGHT_CURLY; } token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_RIGHT_CURLY) return G_TOKEN_RIGHT_CURLY; } break; default: return token; } return G_TOKEN_NONE; } static gint eulerrc_load(EulerPrefs *prefs) { GScanner *scanner; gint fd; guint i, expected_token = G_TOKEN_NONE; gchar *filename; filename = g_strconcat(g_get_home_dir(),"/.euler/eulerrc",NULL); fd = open(filename, O_RDONLY); g_free(filename); if (fd < 0) return 0; scanner = g_scanner_new(NULL); /* Don't return G_TOKEN_SYMBOL, but the symbol's value */ scanner->config->symbol_2_token = TRUE; /* Don't return G_TOKEN_IDENTIFIER, but convert it to string */ scanner->config->identifier_2_string = TRUE; g_scanner_freeze_symbol_table(scanner); for (i = 0; i < n_symbols; i++) g_scanner_add_symbol(scanner,symbols[i].name,GINT_TO_POINTER(symbols[i].token)); g_scanner_thaw_symbol_table(scanner); g_scanner_input_file(scanner, fd); scanner->input_name = ".eulerrc"; /* * Scanning loop, we parse the input until it's end is reached, * the scanner encountered a lexing error, or our sub routine came * across invalid syntax */ while(1) { expected_token = eulerrc_parse(scanner,prefs); if (expected_token != G_TOKEN_NONE) { switch (expected_token) { case G_TOKEN_EQUAL_SIGN: g_scanner_unexp_token(scanner,expected_token,NULL,"=",NULL,NULL,TRUE); break; case G_TOKEN_EOF: break; default: g_scanner_unexp_token(scanner,expected_token,NULL,NULL,NULL,NULL,TRUE); break; } break; } } g_scanner_destroy(scanner); close(fd); return 1; } /* * preference init */ EulerPrefs eulerrc_init() { EulerPrefs prefs; int i,j; prefs.saveatexit = E_SAVEATEXIT_DEFAULT; prefs.twidth = E_TWIDTH_DEFAULT; prefs.theight = E_THEIGHT_DEFAULT; prefs.gwidth = E_GWIDTH_DEFAULT; prefs.gheight = E_GHEIGHT_DEFAULT; prefs.estack = E_ESTACK_DEFAULT; prefs.gstack = E_GSTACK_DEFAULT; prefs.glines = E_GLINES_DEFAULT; for (i=0 ; i<3 ; i++) for (j=0 ; jsaveatexit); fprintf(file,"\n#\n# browser for documentation viewing\n#\n"); fprintf(file,"browser = \"%s\"\n",prefs->browser); fprintf(file,"\n#\n# text window font\n#\n"); fprintf(file,"tfont = \"%s\"\n",prefs->tfont); fprintf(file,"\n#\n# editor font\n#\n"); fprintf(file,"pfont = \"%s\"\n",prefs->pfont); fprintf(file,"\n#\n# text window width and height (in chars)\n#\n"); fprintf(file,"twidth = %d\ntheight = %d\n",prefs->twidth,prefs->theight); fprintf(file,"\n#\n# graphics window width and height (in pixels)\n#\n"); fprintf(file,"gwidth = %d\ngheight = %d\n",prefs->gwidth,prefs->gheight); fprintf(file,"\n#\n# Euler stack size in kbyte\n#\n"); fprintf(file,"estack = %d\n",prefs->estack); fprintf(file,"\n#\n# graphic stack in kbyte\n#\n"); fprintf(file,"gstack = %d\n",prefs->gstack); fprintf(file,"\n#\n# glines fixes the font size for the graphics window\n# the font size is gheight / glines.\n#\n"); fprintf(file,"glines = %d\n",prefs->glines); fprintf(file,"\n#\n# the 16 basic colors used for the graphics\n#\n"); fprintf(file,"colors = {\n"); for (j=0 ; jcolors[i][j]); if (i!=2) fprintf(file,", "); } fprintf(file,"}\n"); } fprintf(file,"}\n"); fclose(file); } } euler-1.61.0/src/rc.h0000644000175000001440000000201410277352521013121 0ustar ericusers/* * Euler - a numerical lab * * file : rc.h -- resource file handling */ #ifndef _RC_H_ #define _RC_H_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define E_SAVEATEXIT_DEFAULT 1 #define E_TWIDTH_DEFAULT 80 #define E_THEIGHT_DEFAULT 24 #define E_TFONT_DEFAULT "7x14" //#define E_TFONT_DEFAULT "-*-courier-medium-r-*-*-*-120-*-*-*-*-*-*" #define E_PFONT_DEFAULT "Terminal 10" #define E_GWIDTH_DEFAULT 500 #define E_GHEIGHT_DEFAULT 500 #define E_ESTACK_DEFAULT 8*1024l #define E_GSTACK_DEFAULT 4*1024l #define E_GLINES_DEFAULT 40 #define E_BROWSER_DEFAULT "netscape" #define MAX_COLORS 16 typedef struct _EulerPrefs { int saveatexit; int estack; int twidth; int theight; int gwidth; int gheight; int gstack; int glines; short colors[3][MAX_COLORS]; char browser[256]; char tfont[256]; char gfont[256]; char pfont[256]; } EulerPrefs; EulerPrefs eulerrc_init(void); void eulerrc_save(EulerPrefs *prefs); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __RC_H__ */ euler-1.61.0/src/srch0000755000175000001440000000025207452044355013237 0ustar ericusers#!/bin/sh # # Find a token within source files ( *.[ch] ) # Enjoy! # Jorge.- if [ ! $# = 1 ]; then echo "Usage:" echo " srch " else egrep -n $1 *.[ch] fi euler-1.61.0/src/interval.c0000644000175000001440000004025610330506670014342 0ustar ericusers#include #include #include #include #include "interval.h" #include "spread.h" #include "output.h" #define error(s) error=1, output(s"\n") static long nmark; #define increase(r,n) nmark=(n); if (!freeramfrom((r),(nmark))) outofram(); (r)+=nmark; double eps_1_up=(1+DBL_EPSILON),eps_1_down=(1-DBL_EPSILON); static double min (double x, double y) { if (xy) return x; else return y; } double round_up (double x) { if (x>0) return x*eps_1_up; else return x*eps_1_down; } double round_down (double x) { if (x>0) return x*eps_1_down; else return x*eps_1_up; } void interval_add (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *ar=round_down(*a+*a1); *br=round_up(*b+*b1); } void interval_sub (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *ar=round_down(*a-*b1); *br=round_up(*b-*a1); } void interval_mult (double *a, double *b, double *a1, double *b1, double *ar, double *br) { if (*a>=0) { if (*a1>=0) { *ar=round_down(*a**a1); *br=round_up(*b**b1); } else if (*b1>=0) { *ar=round_down(*b**a1); *br=round_up(*b**b1); } else { *ar=round_down(*b**a1); *br=round_up(*a**b1); } } else if (*b>=0) { if (*a1>=0) { *ar=round_down(*a**b1); *br=round_up(*b**b1); } else if (*b1>=0) { *ar=min(round_down(*a**b1),round_down(*b**a1)); *br=max(round_up(*b**b1),round_up(*a**a1)); } else { *ar=round_down(*b**a1); *br=round_up(*a**a1); } } else { if (*a1>=0) { *ar=round_down(*a**b1); *br=round_up(*b**a1); } else if (*b1>=0) { *ar=round_down(*a**b1); *br=round_up(*a**a1); } else { *ar=round_down(*b**b1); *br=round_up(*a**a1); } } } void interval_div (double *a, double *b, double *a1, double *b1, double *ar, double *br) { if (*a>=0) { if (*a1>=0) { *ar=round_down(*a/ *b1); *br=round_up(*b/ *a1); } else if (*b1>=0) error("Division by 0"); else { *ar=round_down(*b/ *b1); *br=round_up(*a/ *a1); } } else if (*b>=0) { if (*a1>=0) { *ar=round_down(*a/ *a1); *br=round_up(*b/ *a1); } else if ( *b1>=0) error("Division by 0"); else { *ar=round_down(*b/ *b1); *br=round_up(*a/ *b1); } } else { if (*a1>=0) { *ar=round_down(*a/ *a1); *br=round_up(*b/ *b1); } else if ( *b1>=0) error("Division by 0"); else { *ar=round_down(*b/ *a1); *br=round_up(*a/ *b1); } } } void interval_invert (double *a, double *b, double *ar, double *br) { *ar=-*b; *br=-*a; } void minterval (header *hd) { header *st=hd,*hd1=nextof(hd),*result=0; int i,j; long n,k; double *m1,*m2,*m; hd=getvalue(hd); hd1=getvalue(hd1); if (error) return; if (hd->type==s_real) { if (hd1->type==s_real) { result=new_interval(*realof(hd),*realof(hd1),""); if (error) return; if (*aof(result)>*bof(result)) error("Empty Interval"); } else if (hd1->type==s_matrix) { i=dimsof(hd1)->r; j=dimsof(hd1)->c; result=new_imatrix(i,j,""); if (error) return; n=(long)i*j; m=matrixof(result); m1=matrixof(hd1); for (k=0; k*(m-1)) { error("Empty interval"); return; } } } else error("Illegal argument for ~"); } else if (hd->type==s_matrix) { if (hd1->type==s_real) { i=dimsof(hd)->r; j=dimsof(hd)->c; result=new_imatrix(i,j,""); if (error) return; n=(long)i*j; m=matrixof(result); m1=matrixof(hd); for (k=0; k*(m-1)) { error("Empty interval"); return; } } } else if (hd1->type==s_matrix) { i=dimsof(hd1)->r; j=dimsof(hd1)->c; result=new_imatrix(i,j,""); if (i!=dimsof(hd)->r || j!=dimsof(hd)->c) error("Matrix dimensions must agree for ~"); if (error) return; n=(long)i*j; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (k=0; k*(m-1)) { error("Empty interval"); return; } } } else error("Illegal argument for ~a,b~"); } else error("Illegal argument for ~a,b~"); if (error) return; moveresult(st,result); } void minterval1 (header *hd) { header *st=hd,*result=0; int i,j; long n,k; double *m1,*m; hd=getvalue(hd); if (error) return; if (hd->type==s_real) { result=new_interval(round_down(*realof(hd)), round_up(*realof(hd)),""); } else if (hd->type==s_matrix) { i=dimsof(hd)->r; j=dimsof(hd)->c; result=new_imatrix(i,j,""); if (error) return; n=(long)i*j; m=matrixof(result); m1=matrixof(hd); for (k=0; k1) *ar=1; if (*br<-1) *br=-1; else if (*br>1) *br=1; } void icos (double *a, double *b, double *ar, double *br) { double m=(*a+*b)/2,x=-1,y=1,a1=*a-m,b1=*b-m; interval_mult(&x,&y,&a1,&b1,ar,br); *ar-=sin(m); *br-=sin(m); interval_mult(ar,br,&a1,&b1,&x,&y); *ar=x+cos(m); *br=y+cos(m); if (*ar<-1) *ar=-1; else if (*ar>1) *ar=1; if (*br<-1) *br=-1; else if (*br>1) *br=1; } void itan (double *a, double *b, double *ar, double *br) { if (*a>=M_PI/2 || *b<=-M_PI/2) { error("tan out of range"); return; } *ar=round_down(tan(*a)); *br=round_up(tan(*b)); } void iatan (double *a, double *b, double *ar, double *br) { *ar=round_down(atan(*a)); *br=round_up(atan(*b)); } void iexp (double *a, double *b, double *ar, double *br) { *ar=round_down(exp(*a)); *br=round_up(exp(*b)); } void ilog (double *a, double *b, double *ar, double *br) { if (*a<=0) { error("Log out of range"); return; } *ar=round_down(log(*a)); *br=round_up(log(*b)); } void isqrt (double *a, double *b, double *ar, double *br) { if (*a<=0) { error("Sqrt out of range"); return; } *ar=round_down(sqrt(*a)); *br=round_up(sqrt(*b)); } void iabs (double *a, double *b, double *ar, double *br) { if (*a<0) { if (*b<0) { *ar=-*b; *br=-*a; } else { *ar=0; if (*b>-*a) *br=*b; else *br=-*a; } } else { *ar=*a; *br=*b; } } void ipow (double *a, double *b, double *a1, double *b1, double *ar, double *br) { int n; if (*a>0) { if (*a>=1) { if (*a1>=0) { *ar=round_down(pow(*a,*a1)); *br=round_up(pow(*b,*b1)); } else if (*b1>0) { *ar=round_down(pow(*b,*a1)); *br=round_up(pow(*b,*b1)); } else { *ar=round_down(pow(*b,*a1)); *br=round_up(pow(*a,*b1)); } } else if (*b>1) { *ar=round_down(min(pow(*a,*b1),pow(*b,*a1))); *br=round_up(max(pow(*b,*b1),pow(*a,*a1))); } else { if (*a1>=0) { *br=round_up(pow(*b,*a1)); *ar=round_down(pow(*a,*b1)); } else if (*b1>0) { *br=round_up(pow(*a,*a1)); *ar=round_down(pow(*a,*b1)); } else { *br=round_up(pow(*a,*a1)); *ar=round_down(pow(*b,*b1)); } } } else if (*a1==*b1 && *b1==(n=(int)*a1)) { if (n%2==0) { if (n>0) { if (*b>=0) { *ar=0; *br=round_up(max(pow(*b,n),pow(-*a,n))); } else { *ar=round_down(pow(-*b,n)); *br=round_up(pow(-*a,n)); } } else if (n==0) { *ar=*br=1; } else { if (*b>=0) error("0^n undefined for negative n"); else { *ar=round_down(pow(-*a,n)); *br=round_up(pow(-*b,n)); } } } else { if (n>0) { *ar=round_down(pow(*a,n)); *br=round_up(pow(*b,n)); } else { *br=-round_down(pow(*b,n)); *ar=-round_up(pow(*a,n)); } } } else error("Cannot raise negative number to non-integer power."); } void imax (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *br=max(*b,*b1); *ar=max(*a,*a1); } void imin (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *br=min(*b,*b1); *ar=min(*a,*a1); } void fid (double *a, double *b) { *b=*a; } void ileft (double *a, double *b, double *r) { *r=*a; } void mleft (header *hd) { spreadir1(fid,ileft,hd); } void iright (double *a, double *b, double *r) { *r=*b; } void mright (header *hd) { spreadir1(fid,iright,hd); } void imiddle (double *a, double *b, double *r) { *r=(*a+*b)/2; } void mmiddle (header *hd) { spreadir1(fid,imiddle,hd); } void idiameter (double *a, double *b, double *r) { *r=*b-*a; } void fnull (double *a, double *b) { *b=0; } void mdiameter (header *hd) { spreadir1(fnull,idiameter,hd); } void ior (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *ar=min(*a,*a1); *br=max(*b,*b1); } void iintersects (double *a, double *b, double *a1, double *b1, double *z) { if (*b>=*a1 && *a<=*b1) *z=1.0; else *z=0.0; } void iand (double *a, double *b, double *a1, double *b1, double *ar, double *br) { *ar=max(*a,*a1); *br=min(*b,*b1); if (*ar>*br) error("Empty intersection."); } void iless1 (double *a, double *b, double *a1, double *b1, double *r) { *r=(*a>*a1 && *b<=*b1) || (*a>=*a1 && *b<*b1); } void miless (header *hd) { spreadf2r(0,0,iless1,hd); } void ilesseq1 (double *a, double *b, double *a1, double *b1, double *r) { *r=*a>=*a1 && *b<=*b1; } void milesseq (header *hd) { spreadf2r(0,0,ilesseq1,hd); } void copy_interval (double *x, double *y) { *x++=*y++; *x=*y; } void make_interval (header *hd) /**** make_interval make a function argument interval. ****/ { header *old=hd,*nextarg; unsigned long size; int r,c,i,j; double *m,*m1; hd=getvariablesub(hd); if (isinterval(hd)) return; if (iscomplex(hd)) { output("Cannot convert from complex to interval.\n"); error=1; return; } hd=getvalue(hd); if (hd->type==s_real) { size=sizeof(header)+2*sizeof(double); nextarg=nextof(old); if (!freeram(size-old->size)) { output("Memory overflow!\n"); error=180; return; } if (newram>(char *)nextarg) memmove((char *)old+size,(char *)nextarg, newram-(char *)nextarg); newram+=size-old->size; *(old->name)=0; old->size=size; old->type=s_interval; *aof(old)=*realof(hd); *bof(old)=*realof(hd); } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); size=imatrixsize(r,c); nextarg=nextof(old); if (!freeram(size-old->size)) { output("Memory overflow!\n"); error=180; return; } if (newram>(char *)nextarg) memmove((char *)old+size,(char *)nextarg, newram-(char *)nextarg); newram+=size-old->size; *(old->name)=0; old->size=size; old->type=s_imatrix; dimsof(old)->r=r; dimsof(old)->c=c; m1=matrixof(old); for (i=r-1; i>=0; i--) for (j=c-1; j>=0; j--) { *imat(m1,c,i,j)=*mat(m,c,i,j); *(imat(m1,c,i,j)+1)=*mat(m,c,i,j); } } else { output("Argument not real or complex.\n"); error=1; return; } } /******************* interval linear systems **************/ void i_add (interval x, interval y, interval z) { z[0]=round_down(x[0]+y[0]); z[1]=round_up(x[1]+y[1]); } void i_sub (interval x, interval y, interval z) { z[0]=round_down(x[0]-y[1]); z[1]=round_up(x[1]-y[0]); } void i_mult (interval x, interval y, interval z) { double h,h1; interval_mult(x,x+1,y,y+1,&h,&h1); z[0]=h; z[1]=h1; } void i_div (interval x, interval y, interval z) { double h,h1; interval_div(x,x+1,y,y+1,&h,&h1); z[0]=h; z[1]=h1; } double i_abs (interval x) { return max(fabs(x[1]),fabs(x[2])); } void i_copy (interval x, interval y) { x[0]=y[0]; x[1]=y[1]; } static char *ram; static int *perm,*col,signdet,luflag=0; static interval **i_lumat,*i_c,i_det; static int rank; void i_lu (double *a, int n, int m) /***** clu lu decomposition of a *****/ { int i,j,k,mm,j0,kh; double *d,piv,temp,zmax,help; interval t,*h,*temp1; if (!luflag) { /* get place for result c and move a to c */ i_c=(interval *)ram; increase(ram,(long)n*m*sizeof(interval)); memmove((char *)i_c,(char *)a,(long)n*m*sizeof(interval)); } else i_c=(interval *)a; /* inititalize c_lumat */ i_lumat=(interval **)ram; increase(ram,(long)n*sizeof(interval *)); h=i_c; for (i=0; izmax) zmax=help; if (zmax==0.0) { error=130; return; } d[k]=zmax; } signdet=1; rank=0; i_det[0]=1.0; i_det[1]=0.0; k=0; for (kh=0; kh=0) { output("Determinant may be 0\n"); error=131; return; } if (j0!=k) { signdet=-signdet; mm=perm[j0]; perm[j0]=perm[k]; perm[k]=mm; temp=d[j0]; d[j0]=d[k]; d[k]=temp; temp1=i_lumat[j0]; i_lumat[j0]=i_lumat[k]; i_lumat[k]=temp1; } for (j=k+1; j=n) { kh++; break; } } if (k=0; k--) { sum[0]=0; sum[1]=0.0; for (j=k+1; j=0; i--) { interval_mult(xa,xb,za,zb,&ha,&hb); interval_add(&ha,&hb,p,p+1,za,zb); p-=2; } } void iddeval (double *x, double *xi, double *z, double *zi) { int i; double *p,h,hi,*dd,xh,xhi; p=divdif+(2l*degree); dd=divx+(2l*(degree-1)); *z=*p; *zi=*(p+1); p-=2; for (i=degree-1; i>=0; i--) { xh=round_down(*x-*(dd+1)); xhi=round_up(*xi-*dd); dd-=2; interval_mult(&xh,&xhi,z,zi,&h,&hi); *z=round_down(h+*p); *zi=round_up(hi+*(p+1)); p-=2; } } void mexpand (header *hd) { header *st=hd,*hd1=nextof(hd),*result; double *m,*mr,x,d,f; int c,r; long n; hd=getvalue(hd); hd1=getvalue(hd1); if (error) return; if (!hd1->type==s_real || (f=*realof(hd1))<=0) { output("expand by a positiv scalar only!\n"); error=1; return; } if (hd->type==s_interval) { d=(*bof(hd)-*aof(hd))/2; x=*aof(hd)+d; result=new_interval( round_down(x-d*f),round_up(x+d*f),""); if (error) return; } else if (hd->type==s_imatrix) { getmatrix(hd,&c,&r,&m); result=new_imatrix(c,r,""); if (error) return; mr=matrixof(result); n=(long)r*c; while (n>0) { d=(*(m+1)-*m)/2; x=*m+d; *mr++=round_down(x-d*f); *mr++=round_up(x+d*f); m+=2; n--; } } else if (hd->type==s_real) { result=new_interval(round_down(*realof(hd)-f), round_up(*realof(hd)+f),""); if (error) return; } else if (hd->type==s_matrix) { getmatrix(hd,&c,&r,&m); result=new_imatrix(c,r,""); if (error) return; mr=matrixof(result); n=(long)r*c; while (n>0) { *mr++=round_down(*m-f); *mr++=round_up(*m++ +f); n--; } } else wrong_arg(); moveresult(st,result); } euler-1.61.0/src/interval.h0000644000175000001440000000437007453127447014361 0ustar ericusers/* * Euler - a numerical lab * * platform : all * * file : interval.h -- interval type functions */ #ifndef _INTERVAL_H_ #define _INTERVAL_H_ #include "stack.h" double round_up (double x); double round_down (double x); void minterval (header *hd); void minterval1 (header *hd); void mleft (header *hd); void mright (header *hd); void mmiddle (header *hd); void mdiameter (header *hd); void mexpand (header *hd); void make_interval (header *hd); void interval_add (double *, double *, double *, double *, double *, double *); void interval_sub (double *, double *, double *, double *, double *, double *); void interval_mult (double *, double *, double *, double *, double *, double *); void interval_div (double *, double *, double *, double *, double *, double *); void imax (double *, double *, double *, double *, double *, double *); void imin (double *, double *, double *, double *, double *, double *); void interval_invert (double *, double *, double *, double *); void icos (double *, double *, double *, double *); void isin (double *, double *, double *, double *); void itan (double *, double *, double *, double *); void iatan (double *, double *, double *, double *); void iexp (double *, double *, double *, double *); void ilog (double *, double *, double *, double *); void iabs (double *, double *, double *, double *); void isqrt (double *, double *, double *, double *); void ipow (double *, double *, double *, double *, double *, double *); void ior (double *a, double *b, double *a1, double *b1, double *ar, double *br); void iintersects (double *a, double *b, double *a1, double *b1, double *ar); void iand (double *a, double *b, double *a1, double *b1, double *ar, double *br); void miless (header *hd); void milesseq (header *hd); void copy_interval (double *, double *); void i_solvesim (double *a, int n, double *b, int m, double *c); void ipeval (double *, double *, double *, double *); void iddeval (double *, double *, double *, double *); typedef double interval[2]; void i_add (interval x, interval y, interval z); void i_sub (interval x, interval y, interval z); void i_mult (interval x, interval y, interval z); void i_div (interval x, interval y, interval z); double i_abs (interval x); void i_copy (interval x, interval y); #endif euler-1.61.0/src/extend.h0000644000175000001440000000023507453036120014003 0ustar ericusers#ifndef _EXTEND_H_ #define _EXTEND_H_ #include "stack.h" #ifdef WAVES void mplaywav (header *hd); #endif #ifdef DLL void mdll (header *hd); #endif #endif euler-1.61.0/src/metaps.c0000644000175000001440000007454410277414040014015 0ustar ericusers/************************************************************************* * metaps * * metafile postscript output driver * * Eric Boucharé, 08/08/2001 * *************************************************************************/ #include #include #include #include "meta.h" #include "sysdep.h" #include "graphics.h" static struct { int sethuecolor:1; int setclip:1; int linesolid:1; int linedotted:1; int linedashed:1; int linearrow:1; int markercross:1; int markercircle:1; int markerdiamond:1; int markerdot:1; int markerplus:1; int markersquare:1; int markerstar:1; int bar:1; int fbar:1; int bar1:1; int fbar1:1; int fbar2:1; int fb1d1:1; int fb1d2:1; int fb1c:1; int fill:1; int fillh:1; int ffillh:1; int reencode:1; int text:1; int rtext:1; int ctext:1; } firstuse; static int clipped = 0; static int lineop=0, lcolor, lstyle, lwidth; static double x=-1.0, y=-1.0; static void lineend(FILE *out, int color, int style, int width); static void ps_meta_begin (void *p); static void ps_meta_end (void *p); static void ps_meta_clear (void *p); static void ps_meta_clip (void *p, double c, double r, double c1, double r1); static void ps_meta_line (void *p, double c, double r, double c1, double r1, int color, int style, int width); static void ps_meta_marker (void *p, double c, double r, int color, int type); static void ps_meta_fill (void *p, double c[], int st, int n, int connect[]); static void ps_meta_fillh (void *p, double c[], double hue, int color, int connect); static void ps_meta_bar (void *p, double c, double r, double c1, double r1, double hue, int color, int connect); static void ps_meta_bar1 (void *p, double c, double r, double c1, double r1, int color, int connect); static void ps_meta_text (void *p, double c, double r, char *text, int color, int alignment); static void ps_meta_vtext (void *p, double c, double r, char *text, int color, int alignment); static void ps_meta_vutext (void *p, double c, double r, char *text, int color, int alignment); static void ps_meta_scale (void *p, double s); static metadevice psdev = { NULL, ps_meta_begin, ps_meta_end, ps_meta_clear, ps_meta_clip, ps_meta_line, ps_meta_marker, ps_meta_bar, ps_meta_bar1, ps_meta_fill, ps_meta_fillh, ps_meta_text, ps_meta_vtext, ps_meta_vutext, ps_meta_scale }; static char setcolormacro[]; int dump_postscript(char *filename) { int i; char moment[26]; time_t tim, *p_tim; metadevice *old; FILE *out=fopen(filename,"w"); if (!out) return 0; /* postscript intro */ firstuse.sethuecolor = 1; firstuse.setclip = 1; firstuse.linesolid = 1; firstuse.linedotted = 1; firstuse.linedashed = 1; firstuse.linearrow = 1; firstuse.markercross = 1; firstuse.markercircle = 1; firstuse.markerdiamond = 1; firstuse.markerdot = 1; firstuse.markerplus = 1; firstuse.markersquare = 1; firstuse.markerstar = 1; firstuse.bar = 1; firstuse.fbar = 1; firstuse.bar1 = 1; firstuse.fbar1 = 1; firstuse.fbar2 = 1; firstuse.fb1d1 = 1; firstuse.fb1d2 = 1; firstuse.fb1c = 1; firstuse.fill = 1; firstuse.fillh = 1; firstuse.ffillh = 1; firstuse.reencode = 1; firstuse.text = 1; firstuse.rtext = 1; firstuse.ctext = 1; p_tim = &tim; tim = time(0); sprintf(moment,"%s",ctime(p_tim)); moment[(strlen(moment)-1)] = 0; /* enleve le '\n' final */ fprintf(out,"%%!PS-Adobe-2.0 EPSF-2.0\n"); fprintf(out,"%%%%BoundingBox: 0 0 %d %d\n",getmetawidth(),getmetaheight()); fprintf(out,"%%%%CreationDate: %s\n",moment); fprintf(out,"%%%%Creator Euler\n"); fprintf(out,"%%%%EndComments\n"); // Color management fprintf(out,"/colors [\n"); for (i=0; i<16; i++) fprintf(out,"%g %g %g\n",(double)(getmetacolor(0,i)/255.0),(double)(getmetacolor(1,i)/255.0),(double)(getmetacolor(2,i)/255.0)); fprintf(out,"] def\n"); fprintf(out,"%s\n",setcolormacro); fprintf(out,"%%%%Beginning of the flag page\n"); fprintf(out,"gsave newpath\n"); fprintf(out,"/Helvetica findfont %d scalefont setfont\n",getmetaheight()/getmetalines()); fprintf(out,"gsave\n newpath 0 0 moveto (lq) true charpath pathbbox\n /y2 exch def pop /y1 exch def pop\n /fontsize y2 y1 sub def\ngrestore\n"); /* meta replay */ psdev.data = (void*)out; old = setmetadevice(&psdev); playmeta(); setmetadevice(old); psdev.data = NULL; /* postscript end */ if (lineop) lineend(out,lcolor,lstyle,lwidth); fprintf(out,"stroke grestore showpage\n"); fclose(out); return 1; } /***************************************************************************** * * postscript device methods * *****************************************************************************/ /************* * * color selection postscript macros * *************/ // set color (0 =< num =< 15) // num sc static char setcolormacro[] = "/sc {\n\ /i exch def\n\ /idx i 3 mul def\n\ colors idx get colors idx 1 add get colors idx 2 add get setrgbcolor\n\ } def\n"; // set hue color (0 < hue < 1) // color hue shc static char sethuecolormacro[] = "/shc {\n\ /hue exch def\n\ /i exch def\n\ /idx i 3 mul def\n\ /r colors idx get 255 mul def\n\ /g colors idx 1 add get 255 mul def\n\ /b colors idx 2 add get 255 mul def\n\ r 2 div 128 add 2 mul hue mul 255 div\n\ g 2 div 128 add 2 mul hue mul 255 div\n\ b 2 div 128 add 2 mul hue mul 255 div\n\ setrgbcolor\n\ } def\n"; /************* * * clipping postscript macros * *************/ // rectangle clipping // x1 y1 x2 y2 setclip static char setclipmacro[]= "/setclip {\n\ gsave\n\ /y2 exch def\n\ /x2 exch def\n\ /y1 exch def\n\ /x1 exch def\n\ newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath clip\n\ } def\n"; /************* * * line postscript macros * *************/ // solid line postscript macro // [x1 y1 x2 y2 ... ] color width l static char linemacro[]= "/l {\n\ gsave\n\ /w exch def\n\ /c exch def\n\ /pts exch def\n\ c sc\n\ w 3.53 div setlinewidth\n\ newpath\n\ pts 0 get pts 1 get moveto\n\ 2 2 pts length 1 sub\n\ {\n\ /i exch def\n\ pts i get pts i 1 add get lineto\n\ } for\n\ stroke\n\ grestore\n\ } def"; // dashed line postscript macro // [ x1 y1 x2 y2 ... ] color width ld static char dashedlinemacro[] = "/ld {\n\ gsave\n\ /w exch def\n\ /c exch def\n\ /pts exch def\n\ c sc\n\ w 3.53 div setlinewidth\n\ [2 2 ] 0 setdash newpath\n\ pts 0 get pts 1 get moveto\n\ 2 2 pts length 1 sub\n\ {\n\ /i exch def\n\ pts i get pts i 1 add get lineto\n\ } for\n\ stroke [] 0 setdash\n\ grestore\n\ } def"; // arrow line postscript macro (arrow at the end of the line) // [ x1 y1 x2 y2 ... ] color width ratio la static char arrowlinemacro[] = "/sin20 20 sin def\n\ /drawarrow {\n\ /ratio exch def\n\ /y2 exch def\n\ /x2 exch def\n\ /y1 exch def\n\ /x1 exch def\n\ /dx x2 x1 sub def\n\ /dy y2 y1 sub def\n\ /norme dx dx mul dy dy mul add sqrt def\n\ /cs dx norme div def\n\ /sn dy norme div def\n\ /ah 10 ratio mul def\n\ newpath x1 y1 moveto x2 ah cs mul sub y2 ah sn mul sub lineto stroke\n\ norme 1.e-8 ge\n\ {\n\ /k0 x1 norme cs mul add def\n\ /k1 y1 norme sn mul add def\n\ newpath x2 y2 moveto\n\ k0 ah cs sn sin20 mul add mul sub k1 ah sn cs sin20 mul sub mul sub lineto\n\ k0 ah cs sn sin20 mul sub mul sub k1 ah sn cs sin20 mul add mul sub lineto\n\ closepath\n\ fill\n\ } {} ifelse\n\ } def\n\ /la {\n\ gsave\n\ /r exch def\n\ /w exch def\n\ /c exch def\n\ /pts exch def\n\ c sc\n\ w setlinewidth\n\ newpath\n\ 0 2 pts length 3 sub\n\ {\n\ /i exch def\n\ pts i get pts i 1 add get pts i 2 add get pts i 3 add get r drawarrow\n\ } for\n\ stroke\n\ grestore\n\ } def"; /************* * * marker postscript macros * *************/ // cross marker postscript macro // x y msize color mcrs static char markercrossmacro[] = "/mcrs {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x ms sub y ms sub moveto\n\ ms 2 mul ms 2 mul rlineto\n\ x ms sub y ms add moveto\n\ ms 2 mul ms 2 mul neg rlineto\n\ stroke\n\ grestore\n\ } def"; // circle marker postscript macro // x y msize color mcir static char markercirclemacro[] = "/mcir {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x y ms 0 360 arc\n\ stroke\n\ grestore\n\ } def\n"; // diamond marker postscript macro // x y msize color mdia static char markerdiamondmacro[] = "/mdia {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x ms sub y moveto\n\ ms ms rlineto\n\ ms ms neg rlineto\n\ ms neg ms neg rlineto\n\ closepath\n\ stroke\n\ grestore\n\ } def\n"; // dot marker postscript macro // x y msize color mdot static char markerdotmacro[] = "/mdot {\n\ gsave\n\ /c exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath x y moveto 1 0 rlineto stroke\n\ grestore\n\ } def\n"; // plus marker postscript macro // x y msize color mpls static char markerplusmacro[] = "/mpls {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x ms sub y moveto\n\ ms 2 mul 0 rlineto\n\ x y ms sub moveto\n\ 0 ms 2 mul rlineto\n\ stroke\n\ grestore\n\ } def\n"; // square marker postscript macro // x y msize color msqr static char markersquaremacro[] = "/msqr {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x ms sub y ms add moveto\n\ ms 2 mul 0 rlineto\n\ 0 ms 2 mul neg rlineto\n\ ms 2 mul neg 0 rlineto\n\ closepath\n\ stroke\n\ grestore\n\ } def\n"; // star marker postscript macro // x y msize color mstr static char markerstarmacro[] = "/mstr {\n\ gsave\n\ /c exch def\n\ /ms exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath\n\ x ms sub y ms sub moveto\n\ ms 2 mul ms 2 mul rlineto\n\ x ms sub y ms add moveto\n\ ms 2 mul ms 2 mul neg rlineto\n\ x ms sub y moveto\n\ ms 2 mul 0 rlineto\n\ x y ms sub moveto\n\ 0 ms 2 mul rlineto\n\ stroke\n\ grestore\n\ } def\n"; /************* * * bar postscript macros * *************/ // bar pattern postscript macro // x y w h color hue bar static char barmacro[] = "/bar {\n\ gsave\n\ /hue exch def\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c 0 eq {\n\ 1.0 hue sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c hue shc\n\ } ifelse\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath fill\n\ grestore\n\ } def\n"; // framed bar pattern postscript macro // x y w h color hue fbar static char fbarmacro[] = "/fbar {\n\ gsave\n\ /hue exch def\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c 0 eq {\n\ 1.0 hue sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c hue shc\n\ } ifelse\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath fill\n\ 0 0 0 setrgbcolor\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath stroke\n\ grestore\n\ } def\n"; /************* * * bar postscript macros * *************/ // solid pattern colored bar postscript macro // x y w h color bar1 static char bar1macro[] = "/bar1 {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c 0 eq {\n\ 1.0 0.5 sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c 0.5 shc\n\ } ifelse\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath fill\n\ grestore\n\ } def\n"; // frame bar postscript macro // x y w h color fbar2 static char fbar2macro[] = "/fbar2 {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath stroke\n\ grestore\n\ } def\n"; // framed bar postscript macro // x y w h color fbar1 static char fbar1macro[] = "/fbar1 {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c 0 eq {\n\ 1.0 0.5 sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c 0.5 shc\n\ } ifelse\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath fill\n\ 1 sc\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath stroke\n\ grestore\n\ } def\n"; // diagonal 1 pattern bar postscript macro // x y w h color fbd1 static char fb1d1macro[] = "/fb1d1 {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ /ww 1024 def\n\ /hh 1024 def\n\ /s 20 def\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath clip\n\ newpath\n\ /nmax ww hh add s div def\n\ 0 1 nmax {\n\ /i exch def\n\ 0 i s mul ww sub moveto ww hh rlineto\n\ } for stroke\n\ newpath\n\ 1 sc\n\ 2 setlinewidth\n\ x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath stroke\n\ grestore\n\ } def\n"; // diagonal2 pattern bar postscript macro // x y w h color fb1d2 static char fb1d2macro[] = "/fb1d2 {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ /ww 1024 def\n\ /hh 1024 def\n\ /s 20 def\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath clip\n\ newpath\n\ /nmax ww hh add s div def\n\ 0 1 nmax {\n\ /i exch def\n\ 0 i s mul moveto ww hh neg rlineto\n\ } for stroke\n\ newpath\n\ 1 sc\n\ 2 setlinewidth\n\ x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath\n\ stroke\n\ grestore\n\ } def\n"; // cross pattern bar postscript macro // x y w h color fb1c static char fb1cmacro[] = "/fb1c {\n\ gsave\n\ /c exch def\n\ /h exch def\n\ /w exch def\n\ /y exch def\n\ /x exch def\n\ c sc\n\ /ww 1024 def\n\ /hh 1024 def\n\ /s 20 def\n\ newpath x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath clip\n\ newpath\n\ /nmax ww hh add s div def\n\ 0 1 nmax {\n\ /i exch def\n\ 0 i s mul ww sub moveto ww hh rlineto\n\ 0 i s mul moveto ww hh neg rlineto\n\ } for stroke\n\ newpath\n\ 1 sc\n\ 2 setlinewidth\n\ x y moveto w 0 rlineto 0 h neg rlineto w neg 0 rlineto closepath\n\ stroke\n\ grestore\n\ } def\n"; /************* * * filled with hue color pattern postscript macros * *************/ // filled and framed region (defined by 4 points) // x1 y1 x2 y2 x3 y3 x4 y4 color hue ffillh static char ffillhmacro[] = "/ffillh {\n\ gsave\n\ /h exch def\n\ /c exch def\n\ /y4 exch def\n\ /x4 exch def\n\ /y3 exch def\n\ /x3 exch def\n\ /y2 exch def\n\ /x2 exch def\n\ /y1 exch def\n\ /x1 exch def\n\ c 0 eq {\n\ 1.0 h sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c h shc\n\ } ifelse\n\ newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto x4 y4 lineto closepath fill\n\ 0 0 0 setrgbcolor\n\ newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto x4 y4 lineto closepath stroke\n\ grestore\n\ } def\n"; // filled region (defined by 4 points) // x1 y1 x2 y2 x3 y3 x4 y4 color hue fillh static char fillhmacro[] = "/fillh {\n\ gsave\n\ /h exch def\n\ /c exch def\n\ /y4 exch def\n\ /x4 exch def\n\ /y3 exch def\n\ /x3 exch def\n\ /y2 exch def\n\ /x2 exch def\n\ /y1 exch def\n\ /x1 exch def\n\ c 0 eq {\n\ 1.0 h sub 255.0 mul 360.0 div 0.5 0.9 sethsbcolor\n\ }{\n\ c h shc\n\ } ifelse\n\ newpath x1 y1 moveto x2 y2 lineto x3 y3 lineto x4 y4 lineto closepath fill\n\ grestore\n\ } def\n"; /************* * * arbitrary filled region postscript macro * *************/ // arbitrary filled region macro // [x1 y1 x2 y2 ...] color pf\n"); static char fillmacro[] = "/pf {\n\ gsave\n\ /c exch def\n\ /pts exch def\n\ c sc\n\ newpath\n\ pts 0 get pts 1 get moveto\n\ 3 3 pts length 1 sub\n\ {\n\ /i exch def\n\ pts i get pts i 1 add get lineto\n\ } for\n\ closepath fill\n\ newpath\n\ 1 sc\n\ pts 0 get pts 1 get moveto\n\ 2 3 pts length 4 sub\n\ {\n\ /i exch def\n\ pts i get 1 eq\n\ {\n\ pts i 1 add get pts i 2 add get lineto\n\ } if\n\ } for\n\ pts pts length 1 sub get 1 eq\n\ {\n\ closepath\n\ } if\n\ stroke\n\ grestore\n\ } def\n"; /************* * * string postscript macros * *************/ static char *encoding[] = { "quotesinglbase", "quotedblbase", "ellipsis", "OE", "oe", "quotedblleft", "quotedblright", "fi", "fl", "endash", "emdash", "bullet", "dagger", "daggerdbl", "florin", "fraction", "dotlessi", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "-none-", "ring", "cedilla", "-none-", "hungarumlaut", "ogonek", "caron", "space", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis" }; // ReEncode postscript macro to handle full Latin1 char set // static char reencodemacro[] = "/reencsmalldict 12 dict def\n\ /ReEncodeSmall\n\ {\n\ reencsmalldict begin\n\ /newcodesandnames exch def\n\ /newfontname exch def\n\ /basefontname exch def\n\ /basefontdict basefontname findfont def\n\ /newfont basefontdict maxlength dict def\n\ basefontdict\n\ {\n\ exch dup /FID ne\n\ {\n\ dup /Encoding eq\n\ {\n\ exch dup length array copy\n\ newfont 3 1 roll put\n\ }{\n\ exch newfont 3 1 roll put\n\ } ifelse\n\ }{\n\ pop pop\n\ } ifelse\n\ } forall\n\ newfont /FontName newfontname put\n\ newcodesandnames aload pop\n\ newcodesandnames length 2 idiv\n\ {\n\ newfont /Encoding get 3 1 roll put\n\ } repeat\n\ newfontname newfont definefont pop\n\ end\n\ } def"; // Left string postscript macro // x y angle (str) color Lstr static char lstrmacro[] = "/Lstr {\n\ gsave\n\ /c exch def\n\ /str exch def\n\ /ang exch def\n\ /y exch def\n\ /x exch def\n\ newpath c sc 0 0 moveto\n\ x y translate ang rotate 0 fontsize neg moveto str show\n\ grestore\n\ } def"; // Center string postscript macro // x y angle (str) color Cstr static char cstrmacro[] = "/Cstr {\n\ gsave\n\ /c exch def\n\ /str exch def\n\ /ang exch def\n\ /y exch def\n\ /x exch def\n\ str stringwidth pop\n\ /width exch def\n\ newpath c sc 0 0 moveto\n\ x y translate ang rotate width neg 2 div fontsize neg moveto str show\n\ grestore\n\ } def"; // Right string postscript macro // x y angle (str) color Rstr static char rstrmacro[] = "/Rstr {\n\ gsave\n\ /c exch def\n\ /str exch def\n\ /ang exch def\n\ /y exch def\n\ /x exch def\n\ str stringwidth pop\n\ /width exch def\n\ newpath c sc 0 0 moveto\n\ x y translate ang rotate width neg fontsize neg moveto str show\n\ grestore\n\ } def"; #define col(c) ((double)(((c)*getmetawidth())/1024.0)) #define row(r) ((double)(((r)*getmetaheight())/1024.0)) static void lineend(FILE *out, int color, int style, int width) { switch (style) { case line_solid: fprintf(out,"] %d %d l\n",color,width); break; case line_dotted: case line_dashed: fprintf(out,"] %d %d ld\n",color,width); break; case line_arrow: fprintf(out,"] %d %d %g la\n",color,width,getmetaheight()/1024.0); break; } lineop = 0; x = -1.0; y = -1.0; } static void ps_meta_begin (void *p) { FILE *out = (FILE*)p; if (lineop) lineend(out,lcolor,lstyle,lwidth); } static void ps_meta_end (void *p) { FILE *out = (FILE*)p; if (lineop) lineend(out,lcolor,lstyle,lwidth); } static void ps_meta_clear (void *p) { FILE *out = (FILE*)p; if (lineop) lineend(out,lcolor,lstyle,lwidth); } static void ps_meta_clip (void *p, double c, double r, double c1, double r1) { FILE *out = (FILE*)p; if (lineop) lineend(out,lcolor,lstyle,lwidth); if (!clipped) { if (firstuse.setclip) { fprintf(out,"%s",setclipmacro); firstuse.setclip = 0; } fprintf(out,"%g %g %g %g setclip\n",col(c),row(1024.0-r),col(c1),row(1024.0-r1)); clipped = 1; } else { fprintf(out,"grestore\n"); clipped = 0; } } static void ps_meta_line (void *p, double c, double r, double c1, double r1, int color, int style, int width) { FILE *out = (FILE*)p; if ((lineop && (c!=x || r!=y || color != lcolor || style!=lstyle || width!=lwidth)) || (!lineop)) { if (lineop) lineend(out,lcolor,lstyle,lwidth); switch (style) { case line_solid: if (firstuse.linesolid) { fprintf(out,"%s\n",linemacro); firstuse.linesolid = 0; } break; case line_dotted: case line_dashed: if (firstuse.linedotted) { fprintf(out,"%s\n",dashedlinemacro); firstuse.linedotted = 0; } break; case line_arrow: if (firstuse.linearrow) { fprintf(out,"%s\n",arrowlinemacro); firstuse.linearrow = 0; } break; } fprintf(out,"[ %g %g %g %g ",col(c),row(1024.0-r),col(c1),row(1024.0-r1)); lcolor = color; lstyle = style; lwidth = width; x = c1;y=r1; lineop = 1; } else { fprintf(out,"%g %g ",col(c1),row(1024.0-r1)); x = c1;y=r1; } } static void ps_meta_marker (void *p, double c, double r, int color, int type) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); double ms = 10*getmetaheight()/1024.0; if (lineop) lineend(out,lcolor,lstyle,lwidth); switch (type) { case marker_cross: if (firstuse.markercross) { fprintf(out,"%s\n",markercrossmacro); firstuse.markercross = 0; } fprintf(out,"%g %g %g %d mcrs\n",x,y,ms,color); break; case marker_circle: if (firstuse.markercircle) { fprintf(out,"%s\n",markercirclemacro); firstuse.markercircle = 0; } fprintf(out,"%g %g %g %d mcir\n",x,y,ms,color); break; case marker_diamond: if (firstuse.markerdiamond) { fprintf(out,"%s\n",markerdiamondmacro); firstuse.markerdiamond = 0; } fprintf(out,"%g %g %g %d mdia\n",x,y,ms,color); break; case marker_dot: if (firstuse.markerdot) { fprintf(out,"%s\n",markerdotmacro); firstuse.markerdot = 0; } fprintf(out,"%g %g %d mdot\n",x,y,color); break; case marker_plus: if (firstuse.markerplus) { fprintf(out,"%s\n",markerplusmacro); firstuse.markerplus = 0; } fprintf(out,"%g %g %g %d mpls\n",x,y,ms,color); break; case marker_square: if (firstuse.markersquare) { fprintf(out,"%s\n",markersquaremacro); firstuse.markersquare = 0; } fprintf(out,"%g %g %g %d msqr\n",x,y,ms,color); break; case marker_star: if (firstuse.markerstar) { fprintf(out,"%s\n",markerstarmacro); firstuse.markerstar = 0; } fprintf(out,"%g %g %g %d mstr\n",x,y,ms,color); break; } } static void ps_meta_bar (void *p, double c, double r, double c1, double r1, double hue, int color, int framed) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); double w=col(c1-c); double h=row(r1-r); if (lineop) lineend(out,lcolor,lstyle,lwidth); if (firstuse.sethuecolor) { fprintf(out,"%s\n",sethuecolormacro); firstuse.sethuecolor = 0; } switch (framed) { case 0: if (firstuse.bar) { fprintf(out,"%s\n",barmacro); firstuse.bar = 0; } fprintf(out,"%g %g %g %g %d %g bar\n",x,y,w,h,color,hue); break; default: if (firstuse.fbar) { fprintf(out,"%s\n",fbarmacro); firstuse.fbar = 0; } fprintf(out,"%g %g %g %g %d %g fbar\n",x,y,w,h,color,hue); } } static void ps_meta_bar1 (void *p, double c, double r, double c1, double r1, int color, int style) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); double w=col(c1-c); double h=row(r1-r); if (lineop) lineend(out,lcolor,lstyle,lwidth); switch (style) { case bar_solid : if (firstuse.bar1) { if (firstuse.sethuecolor) { fprintf(out,"%s\n",sethuecolormacro); firstuse.sethuecolor = 0; } fprintf(out,"%s\n",bar1macro); firstuse.bar1 = 0; } fprintf(out,"%g %g %g %g %d bar1\n",x,y,w,h,color); break; case bar_frame : if (firstuse.fbar2) { fprintf(out,"%s\n",fbar2macro); firstuse.fbar2 = 0; } fprintf(out,"%g %g %g %g %d fbar2\n",x,y,w,h,color); break; case bar_framed : case bar_hhatch : case bar_vhatch : if (firstuse.fbar1) { if (firstuse.sethuecolor) { fprintf(out,"%s\n",sethuecolormacro); firstuse.sethuecolor = 0; } fprintf(out,"%s\n",fbar1macro); firstuse.fbar1 = 0; } fprintf(out,"%g %g %g %g %d fbar1\n",x,y,w,h,color); break; case bar_diagonal1 : if (firstuse.fb1d1) { fprintf(out,"%s\n",fb1d1macro); firstuse.fb1d1 = 0; } fprintf(out,"%g %g %g %g %d fb1d1\n",x,y,w,h,color); break; case bar_diagonal2 : if (firstuse.fb1d2) { fprintf(out,"%s\n",fb1d2macro); firstuse.fb1d2 = 0; } fprintf(out,"%g %g %g %g %d fb1d2\n",x,y,w,h,color); break; case bar_cross : if (firstuse.fb1c) { fprintf(out,"%s\n",fb1cmacro); firstuse.fb1c = 0; } fprintf(out,"%g %g %g %g %d fb1c\n",x,y,w,h,color); break; } } static void ps_meta_fill (void *p, double c[], int style, int n, int connect[]) { FILE *out = (FILE*)p; double x, y; int i; if (lineop) lineend(out,lcolor,lstyle,lwidth); if (firstuse.fill) { fprintf(out,"%s\n",fillmacro); firstuse.fill = 0; } fprintf(out,"[ "); for (i=0;i127) { if (firstuse.reencode) { fprintf(out,"%s\n",reencodemacro); firstuse.reencode = 0; } return 1; } return 0; } static void ps_meta_text (void *p, double c, double r, char *s, int color, int alignment) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); char *t=s,ch; int beginreencode=0; if (lineop) lineend(out,lcolor,lstyle,lwidth); while (*t) { ch =*t; if (!beginreencode) { beginreencode = scantext(out, *t); if (beginreencode) { fprintf(out,"gsave /scan-vec [\n8#%o /%s\n",256+ch,encoding[128+ch]); } } else if (scantext(out, *t)) { fprintf(out,"8#%o /%s\n",256+ch,encoding[128+ch]); } t++; } if (beginreencode) { fprintf(out,"] def\n/Helvetica /Helvetica-8 scan-vec ReEncodeSmall\n/Helvetica-8 findfont %d scalefont setfont\n",getmetaheight()/getmetalines()); } switch (alignment) { case 0: if (firstuse.text) { fprintf(out,"%s\n",lstrmacro); firstuse.text=0; } fprintf(out,"%g %g 0 (%s) %d Lstr\n",x,y,s,color); break; case 1: if (firstuse.ctext) { fprintf(out,"%s\n",cstrmacro); firstuse.ctext=0; } fprintf(out,"%g %g 0 (%s) %d Cstr\n",x,y,s,color); break; case 2: if (firstuse.rtext) { fprintf(out,"%s\n",rstrmacro); firstuse.rtext=0; } fprintf(out,"%g %g 0 (%s) %d Rstr\n",x,y,s,color); break; } if (beginreencode) fprintf(out,"grestore\n"); } static void ps_meta_vtext (void *p, double c, double r, char *s, int color, int alignment) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); char *t=s,ch; int beginreencode=0; if (lineop) lineend(out,lcolor,lstyle,lwidth); while (*t) { ch =*t; if (!beginreencode) { beginreencode = scantext(out,*t); if (beginreencode) { fprintf(out,"gsave /scan-vec [\n8#%o /%s\n",256+ch,encoding[128+ch]); } } else if (scantext(out,*t)) { fprintf(out,"8#%o /%s\n",256+ch,encoding[128+ch]); } t++; } if (beginreencode) { fprintf(out,"] def\n/Helvetica /Helvetica-8 scan-vec ReEncodeSmall\n/Helvetica-8 findfont %d scalefont setfont\n",getmetaheight()/getmetalines()); } switch (alignment) { case 0: if (firstuse.text) { fprintf(out,"%s\n",lstrmacro); firstuse.text=0; } fprintf(out,"%g %g -90 (%s) %d Lstr\n",x,y,s,color); break; case 1: if (firstuse.ctext) { fprintf(out,"%s\n",cstrmacro); firstuse.ctext=0; } fprintf(out,"%g %g -90 (%s) %d Cstr\n",x,y,s,color); break; case 2: if (firstuse.rtext) { fprintf(out,"%s\n",rstrmacro); firstuse.rtext=0; } fprintf(out,"%g %g -90 (%s) %d Rstr\n",x,y,s,color); break; } if (beginreencode) fprintf(out,"grestore\n"); } static void ps_meta_vutext (void *p, double c, double r, char *s, int color, int alignment) { FILE *out = (FILE*)p; double x=col(c); double y=row(1024.0-r); char *t=s,ch; int beginreencode=0; if (lineop) lineend(out,lcolor,lstyle,lwidth); while (*t) { ch =*t; if (!beginreencode) { beginreencode = scantext(out,*t); if (beginreencode) { fprintf(out,"gsave /scan-vec [\n8#%o /%s\n",256+ch,encoding[128+ch]); } } else if (scantext(out,*t)) { fprintf(out,"8#%o /%s\n",256+ch,encoding[128+ch]); } t++; } if (beginreencode) { fprintf(out,"] def\n/Helvetica /Helvetica-8 scan-vec ReEncodeSmall\n/Helvetica-8 findfont %d scalefont setfont\n",getmetaheight()/getmetalines()); } switch (alignment) { case 0: if (firstuse.text) { fprintf(out,"%s\n",lstrmacro); firstuse.text=0; } fprintf(out,"%g %g 90 (%s) %d Lstr\n",x,y,s,color); break; case 1: if (firstuse.ctext) { fprintf(out,"%s\n",cstrmacro); firstuse.ctext=0; } fprintf(out,"%g %g 90 (%s) %d Cstr\n",x,y,s,color); break; case 2: if (firstuse.rtext) { fprintf(out,"%s\n",rstrmacro); firstuse.rtext=0; } fprintf(out,"%g %g 90 (%s) %d Rstr\n",x,y,s,color); break; } if (beginreencode) fprintf(out,"grestore\n"); } static void ps_meta_scale (void *p, double s) { FILE *out = (FILE*)p; if (lineop) lineend(out,lcolor,lstyle,lwidth); } euler-1.61.0/src/metaps.h0000644000175000001440000000055107466223636014024 0ustar ericusers/************************************************************************* * metaps * * metafile postscript output driver * * Eric Boucharé, 08/08/2001 * *************************************************************************/ #ifndef PSGRAPH_H #define PSGRAPH_H #include #include "sysdep.h" int dump_postscript(char *filename); #endif euler-1.61.0/src/dll.c0000644000175000001440000000516107453066404013275 0ustar ericusers#include "stack.h" class Lib { HANDLE Handle; String Name; public : Lib (char *name) : Name(name) { Handle=LoadLibrary(name); } ~Lib () { FreeLibrary(Handle); } char *name () { return Name; } HANDLE handle () { return Handle; } }; int nlibs=0; const int maxlibs=32; static Lib *libs[maxlibs]; typedef char * (*LibFunction) (header * params [], int nparam, char *newram, char *ramend); class LibFunctions { LibFunctions *Next; LibFunction F; String Name; int NArgs; public : LibFunctions (char *name, LibFunction f, LibFunctions *next, int nargs) : Next(next),Name(name),F(f),NArgs(nargs) {} char *name () { return Name; } LibFunction f () { return F; } LibFunctions *next () { return Next; } LibFunctions *find (char *s, int n); int nargs () { return NArgs; } }; LibFunctions * LibFunctions::find (char *s, int n) { LibFunctions *p=this; while (p) { if (!strcmp(p->name(),s) && p->nargs()==n) return p; p=p->next(); } return 0; } LibFunctions* libfunctions=0; void mdll (header *hd) { header *st=hd,*hd1=nextof(hd),*hd2=nextof(hd1); hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; hd2=getvalue(hd2); if (error) return; if (hd->type!=s_string || hd1->type!=s_string || hd2->type!=s_real) wrong_arg_in("dll"); char *p=stringof(hd); int i,n=*realof(hd2); if (n<0 || n>16) { output("DLL functions must have 0 to 16 parameters.\n"); error=1; return; } HANDLE h=0; for (i=0; iname())==0) { h=libs[i]->handle(); break; } if (!h) { if (nlibs==maxlibs) { output("Too many libraries!\n"); error=1; return; } libs[nlibs]=new Lib(p); if (!libs[nlibs]->handle()) { output("Could not open the DLL library!\n"); error=1; return; } h=libs[nlibs]->handle(); nlibs++; } LibFunction f=(LibFunction)GetProcAddress(h,stringof(hd1)); if (!f) { output("Could not find the function!\n"); error=1; return; } if (!libfunctions->find(stringof(hd1),n)) libfunctions=new LibFunctions(stringof(hd1),f,libfunctions,n); else hd1=new_string("",4,""); moveresult(st,hd1); } void closelibs () { int i; for (i=0; ifind(name,n); if (!l) return 0; static header *h[16]; int i; for (i=0; if()(h,n,newram,ramend); if (ram>newram) { memmove((char *)st,newram,ram-newram); newram=(char *)st+(ram-newram); } else { output1("%s returned an error:\n",l->name()); output(newram); output("\n"); error=1; } return 1; } euler-1.61.0/src/fft.c0000644000175000001440000001222107452667614013305 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : fft.c -- fast fourier transform */ #include #include "sysdep.h" #include "linear.h" #include "output.h" #include "fft.h" #define outofram() { output("Out of Memory!\n"); error=120; return; } /************** fft *****************/ static int nn; static complex *ff,*zz,*fh; extern char *ram; static void rfft (long m0, long p0, long q0, long n); static void fft (double *a, int n, int signum); static void fftn (double data[], unsigned long nn[], int ndim, int isign); void mfft (header *hd) { header *st=hd,*result; double *m,*mr; unsigned long nn[2]; int r,c,i; long l; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { make_complex(st); hd=st; } if (hd->type!=s_cmatrix && hd->type!=s_complex) wrong_arg_in("fft"); getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); memmove((char *)mr,(char *)m,(long)2*r*c*sizeof(double)); if (r==1) { fft(mr,c,1); } else { nn[0]=r; nn[1]=c; for (l=1,i=0; i<20; i++,l*=2) if (l==r) goto cont1; goto err; cont1 : for (l=1,i=0; i<20; i++,l*=2) if (l==c) goto cont; err : output("fft columns must be a power of 2\n"); error=1; return; cont : fftn(mr-1,nn,2,1); } if (error) return; moveresult(st,result); } void mifft (header *hd) { header *st=hd,*result; double *m,*mr,f; unsigned long nn[2],l; int r,c,i,j; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { make_complex(st); hd=st; } if (hd->type!=s_cmatrix && hd->type!=s_complex) wrong_arg_in("fft"); getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); memmove((char *)mr,(char *)m,(long)2*r*c*sizeof(double)); if (r==1) { fft(mr,c,-1); } else { nn[0]=r; nn[1]=c; for (l=1,i=0; i<20; i++,l*=2) if ((int)l==r) goto cont1; goto err; cont1 : for (l=1,i=0; i<20; i++,l*=2) if ((int)l==c) goto cont; err : output("fft columns must be a power of 2\n"); error=1; return; cont : fftn(mr-1,nn,2,-1); f=(double)c*r; for (i=0; i1) for (m=0; m=nn) mh-=nn; } for (l=0; l=0; idim--) { n=nn[idim]; nrem=ntot/(n*nprev); ip1=nprev << 1; ip2=ip1*n; ip3=ip2*nrem; i2rev=1; for (i2=1; i2<=ip2; i2+=ip1) { if (i2 < i2rev) { for (i1=i2; i1<=i2+ip1-2; i1+=2) { for (i3=i1; i3<=ip3; i3+=ip2) { i3rev=i2rev+i3-i2; SWAP(data[i3],data[i3rev]); SWAP(data[i3+1],data[i3rev+1]); } } } ibit=ip2 >> 1; while (ibit >= ip1 && i2rev > ibit) { i2rev -= ibit; ibit >>= 1; } i2rev += ibit; } ifp1=ip1; while (ifp1 < ip2) { ifp2=ifp1 << 1; theta=isign*6.28318530717959/(ifp2/ip1); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (i3=1; i3<=ifp1; i3+=ip1) { for (i1=i3; i1<=i3+ip1-2; i1+=2) { for (i2=i1; i2<=ip3; i2+=ifp2) { k1=i2; k2=k1+ifp1; tempr=(double)wr*data[k2]-(double)wi*data[k2+1]; tempi=(double)wr*data[k2+1]+(double)wi*data[k2]; data[k2]=data[k1]-tempr; data[k2+1]=data[k1+1]-tempi; data[k1] += tempr; data[k1+1] += tempi; } } wr=(wtemp=wr)*wpr-wi*wpi+wr; wi=wi*wpr+wtemp*wpi+wi; } ifp1=ifp2; } nprev *= n; } } #undef SWAP euler-1.61.0/src/fft.h0000644000175000001440000000032707452616061013304 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : fft.h -- fast fourier transform */ #ifndef _FFT_H_ #define _FFT_H_ #include "stack.h" void mfft (header *hd); void mifft (header *hd); #endif euler-1.61.0/src/error0000644000175000001440000000430307417034163013424 0ustar ericusers# assign.c 12 "Cannot change type of non-local variable %s!" 43 "Internal variable error!" 45 "Cannot assign this type!" 45 "Illegal assignment!\nRow or column numbers do not agree!" 45 "Illegal assignment!" 45 "Cannot assign this type to intervals!" 320 "Cannot assign a UDF to a variable!" 500 "Memory overflow." 500 "Not enough memory for function %s!" 501 "Memory overflow in assignment." binary.c 1 "Could not open the file!" 1 "Stack overflow in putchar(n)." 26 "Wrong argument" 26 "Wrong arguments for %s" # mainloop.c "Error while closing dumpfile." "Error in function %s" 1 1 "String value expected!" 1 "User interrupted!" 11 "Name too long!" 11 "Name expected at:\n%s" 53 "Could not open file %s!" 55 "Return missing in %s!" 56 "Use return only in functions!" 57 "Break only allowed in functions!" 57 "For only allowed in functions!" 57 "Loop only allowed in functions!" 57 "Repeat only allowed in functions!" 57 "End only allowed in functions!" 57 "Else only allowed in functions!" 57 "Elseif only allowed in functions!" 57 "Endif only allowed in functions!" 58 "User interrupted!" 71 "Syntax error in for." 72 "Startvalue must be real!" 73 "Endvalue missing in for!" 73 "Endvalue must be real!" 73 "Stepvalue must be real!" 73 "Endvalue missing in loop!" 100 "To many commas!" 101 "To many commas!" 102 "Illegal multiple assignment!" 110 "End missing!" 110 "Endif missing, searching for endif!" 110 "Endif missing, searching for else!" 111 "If only allowed in functions!" 120 "Cannot clear in a function!" 130 "Cannot execute a number or matrix!" 131 "Execution failed or program returned a failure!" 160 "Function %s not found!" 160 "Variable %s not found!" 201 "Dump needs a filename!" 201 "Dir needs a string!" 201 "Path needs a string!" 201 "Meta needs a filename!" 201 "postscript needs a filename!" 210 "Cannot assign to value!" 220 "Need a udf!" 221 "Cannot load a file in a function!" 221 "Cannot load a notebook in a function!" 401 "End missing!" 401 "End missing in loop!" 401 "End missing in repeat statement!" 720 "Cannot forget functions in a function!" 1001 "comment illegal at this place" 1002 "endcomment missing!" 11021 "Function not found!" euler-1.61.0/src/udf.c0000644000175000001440000005403010331220172013256 0ustar ericusers#include #include #include #include "sysdep.h" #include "stack.h" #include "output.h" #include "command.h" #include "input.h" #include "express.h" #include "builtin.h" #include "mainloop.h" #include "udf.h" static char *argname[] = { "arg1","arg2","arg3","arg4","arg5","arg6","arg7","arg8","arg9","arg10", "arg11","arg12","arg13","arg14","arg15","arg16","arg17","arg18","arg19", "arg20" }; static int xors[20]; static header *running; void make_xors (void) { int i; for (i=0; i<20; i++) xors[i]=xor(argname[i]); } static char *type_udfline (char *start) { char outline[1024],*p=start,*q; double x; int comn; q=outline; while (*p) { if (*p==2) { p++; memmove((char *)(&x),p,sizeof(double)); p+=sizeof(double); sprintf(q,"%g",x); q+=strlen(q); } else if (*p==3) { p++; memmove((char *)(&comn),p,sizeof(int)); p+=sizeof(int); sprintf(q,"%s",command_list[comn].name); q+=strlen(q); } else *q++=*p++; if (q>outline+1022) { q=outline+1023; break; } } *q=0; output(outline); output("\n"); return p+1; } void minput (header *); void trace_udfline (char *next) { int scan,oldtrace; extern header *running; header *hd,*res; output1("%s: ",running->name); type_udfline(next); again: wait_key(&scan); switch (scan) { case fk1 : case cursor_down : break; case fk2 : case cursor_up : trace=2; break; case fk3 : case cursor_right : trace=0; break; case fk4 : case help : hd=(header *)newram; oldtrace=trace; trace=0; new_string("Expression",12,""); if (error) goto cont; minput(hd); if (error) goto cont; res=getvalue(hd); if (error) goto cont; give_out(res); cont : newram=(char *)hd; trace=oldtrace; goto again; case fk9 : case escape : output("Trace interrupted\n"); error=11010; break; case fk10 : case cursor_left : trace=-1; break; default : output( "\nKeys :\n" "cursor_down Single step\n" "cursor_up Step over subroutines\n" "cursor_right Go until return\n" "insert Evaluate expression\n" "escape Abort execution\n" "cursor_left End trace\n\n"); goto again; } } void do_trace(void) /**** do_trace toggles tracing or sets the trace bit of a udf. ****/ { header *f; char name[64]; scan_space(); if (!strncmp(next,"off",3)) { trace=0; next+=3; } else if (!strncmp(next,"alloff",6)) { next+=6; f=(header *)ramstart; while ((char *)ftype==s_udf) { f->flags&=~1; f=nextof(f); } trace=0; } else if (!strncmp(next,"on",2)) { trace=1; next+=2; } else if (*next==';' || *next==',' || *next==0) trace=!trace; else { if (*next=='"') next++; scan_name(name); if (error) return; if (*next=='"') next++; f=searchudf(name); if (!f || f->type!=s_udf) { output("Function not found!\n"); error=11021; return; } f->flags^=1; if (f->flags&1) output1("Tracing %s\n",name); else output1("No longer tracing %s\n",name); scan_space(); } if (*next==';' || *next==',') next++; } header *searchudf (char *name) /***** searchudf search a udf, named "name". return 0, if not found. *****/ { header *hd; int r; r=xor(name); hd=(header *)ramstart; while ((char *)hdtype==s_udf) { if (r==hd->xor && !strcmp(hd->name,name)) return hd; hd=nextof(hd); } return 0; } commandtyp *preview_command (unsigned long *l); char ystring[256]; void get_udf (void) /***** get_udf define a user defined function. *****/ { char name[16],argu[16],*p,*firstchar,*startp; int *ph,*phh,count=0,n; unsigned long l; header *var,*result,*hd; FILE *actfile=infile; commandtyp *com; int comn; double x; if (udfon==1) { output("Cannot define a function in a function!\n"); error=60; return; } scan_space(); scan_name(name); if (error) return; kill_udf(name); var=new_reference(0,name); if (error) return; result=new_udf(""); if (error) return; p=udfof(result); udf=1; /* udf is for the prompt! */ scan_space(); ph=(int *)p; p+=sizeof(inttyp); if (*next=='(') { while(1) { next++; scan_space(); if (*next==')') break; phh=(int *)p; *phh=0; p+=sizeof(inttyp); scan_name(argu); if (error) goto aborted; count++; strcpy(p,argu); p+=16; *((int *)p)=xor(argu); p+=sizeof(inttyp); test: scan_space(); if (*next==')') break; else if (*next=='=') { next++; *phh=1; newram=p; hd=(header *)p; scan_value(); if (error) goto aborted; strcpy(hd->name,argu); hd->xor=xor(argu); p=newram; goto test; } else if (*next==',') continue; else { output("Syntax error in parameter list!\n"); error=701; goto aborted; } } next++; } *ph=count; if (*next==0) { next_line(); } while (1) /* help section of the udf */ { if (*next=='#' && *(next+1)=='#') { while (*next) { *p++=*next++; if (!freeramfrom(p,16)) { output("Memory overflow while defining a function!\n"); error=210; goto stop; } } *p++=0; next_line(); } else break; if (actfile!=infile) { output("End of file reached in function definition!\n"); error=2200; goto stop; } } *udfstartof(result)=(p-(char *)result); startp=p; firstchar=next; while (1) { if (error) goto stop; if (!strncmp(next,"endfunction",strlen("endfunction"))) { if (p==startp || *(p-1)) *p++=0; *p++=1; next+=strlen("endfunction"); break; } if (actfile!=infile) { output("End of file reached in function definition!\n"); error=2200; goto stop; } if (*next=='#' && *(next+1)=='#') { *p++=0; next_line(); firstchar=next; } else if (*next) { if (*next=='"') { *p++=*next++; while (*next!='"' && *next) *p++=*next++; if (*next=='"') *p++=*next++; else { output("\" missing.\n"); error=2200; goto stop; } } else if (*next=='\'' && *(next+1)=='\'') { *p++=*next++; *p++=*next++; while (*next && (*next!='\'' || *(next+1)!='\'')) *p++=*next++; if (*next=='\'') { *p++=*next++; *p++=*next++; } else { output("\'\' missing.\n"); error=2200; goto stop; } } else if (isdigit(*next) || (*next=='.' && isdigit(*(next+1))) ) { if (next!=firstchar && isalpha(*(next-1))) { *p++=*next++; while (isdigit(*next)) *p++=*next++; } else { if ((p-(char *)result)%2==0) *p++=' '; *p++=2; sscanf(next,"%lg%n",&x,&n); next+=n; memmove(p,(char *)(&x),sizeof(double)); p+=sizeof(double); } } else if (isalpha(*next) && (next==firstchar || !isalpha(*(next-1))) && (com=preview_command(&l))!=0) /* Try to find a builtin command */ { if ((p-(char *)result)%2==0) *p++=' '; *p++=3; comn=com-command_list; memmove(p,(char *)(&comn),sizeof(int)); p+=sizeof(int); next+=l; } else if (*next=='.' && *(next+1)=='.') { *p++=' '; next_line(); firstchar=next; } #ifdef YACAS else if (*next=='@' && *(next+1)=='"') { next+=2; char *q=ystring; while (*next!='"' && *next && (q-ystring)<255) *q++=*next++; if (*next=='"') next++; else { output("\" missing.\n"); error=2200; goto stop; } *q++=0; q=call_yacas(ystring); strcpy(p,q); p+=strlen(p); } #endif else *p++=*next++; } else { *p++=0; next_line(); firstchar=next; } if (!freeramfrom(p,80)) { output("Memory overflow while defining a function!\n"); error=210; goto stop; } } stop: udf=0; if (error) return; result->size=(((p-(char *)result)-1)/ALIGNMENT+1)*ALIGNMENT; newram=(char *)result+result->size; assign(var,result); aborted: udf=0; } void do_type (void) { char name[16]; header *hd; char *p,*pnote; int i,count,defaults; builtintyp *b; scan_space(); scan_name(name); hd=searchudf(name); b=find_builtin(name); if (b) { if (b->nargs>=0) output1( "%s is a builtin function with %d argument(s).\n" ,name,b->nargs); else output1( "%s is a builtin function.\n" ,name); } if (hd && hd->type==s_udf) { if (b) output1("%s is also a user defined function.\n",name); output1("function %s (",name); p=helpof(hd); memmove(&count,p,sizeof(inttyp)); p+=sizeof(inttyp); pnote=p; for (i=0; itype==s_udf) { output1("function %s (",name); p=helpof(hd); memmove(&count,p,sizeof(inttyp)); p+=sizeof(inttyp); pnote=p; for (i=0; if==do_end) { if (trace>0) trace_udfline(udfline); return; } else if (com->f==do_repeat || com->f==do_loop || com->f==do_for) { scan_end(); if (error) return; } break; default : next++; } } } static void scan_endif (void) /***** scan_endif scan for "endif". *****/ { commandtyp *com; int comn; char *oldline=udfline; while (1) { switch (*next) { case 1 : output("Endif missing, searching for endif!\n"); error=110; udfline=oldline; return; case 0 : udfline=next+1; next++; break; case 2 : next+=1+sizeof(double); break; case 3 : next++; memmove((char *)(&comn),next,sizeof(int)); next+=sizeof(int); com=command_list+comn; if (com->f==do_endif) { if (trace>0) trace_udfline(udfline); return; } else if (com->f==do_if) { scan_endif(); if (error) return; } break; default : next++; } } } static int scan_else (void) /***** scan_else scan for "else". return 1, if elseif was found. *****/ { commandtyp *com; int comn; char *oldline=udfline; while (1) { switch (*next) { case 1 : output("Endif missing, searching for else!\n"); error=110; udfline=oldline; return 0; case 0 : udfline=next+1; next++; break; case 2 : next+=1+sizeof(double); break; case 3 : next++; memmove((char *)(&comn),next,sizeof(int)); next+=sizeof(int); com=command_list+comn; if (com->f==do_endif || com->f==do_else) { if (trace>0) trace_udfline(udfline); return 0; } else if (com->f==do_elseif) { return 1; } else if (com->f==do_if) { scan_endif(); if (error) return 0; } break; default : next++; } } } void do_global (void) { char name[16]; int r; header *hd; while (1) { scan_space(); scan_name(name); r=xor(name); #ifdef SPLIT_MEM hd=(header *)varstart; #else hd=(header *)udfend; #endif if (hd==(header *)startlocal) break; while ((char *)hdxor && !strcmp(hd->name,name)) break; hd=nextof(hd); } if ((char *)hd>=startlocal) { output1("Variable %s not found!\n",name); error=160; return; } newram=endlocal; hd=new_reference(hd,name); newram=endlocal=(char *)nextof(hd); scan_space(); if (*next!=',') break; else next++; } } void do_useglobal (void) { searchglobal=1; } void do_return (void) { if (!udfon) { output("Use return only in functions!\n"); error=56; return; } else udfon=2; } void do_break (void) { if (!udfon) { output("End only allowed in functions!\n"); error=57; } } void do_for (void) /***** do_for do a for command in a UDF. for i=value to value step value; .... ; end *****/ { int h,signum; char name[16],*jump; header *hd,*init,*end,*step; double vend,vstep; struct { header hd; double value; } rv; if (!udfon) { output("For only allowed in functions!\n"); error=57; return; } rv.hd.type=s_real; *rv.hd.name=0; rv.hd.size=sizeof(header)+sizeof(double); rv.value=0.0; scan_space(); scan_name(name); if (error) return; kill_local(name); newram=endlocal; hd=new_reference(&rv.hd,name); if (error) return; endlocal=newram=(char *)hd+hd->size; scan_space(); if (*next!='=') { output("Syntax error in for.\n"); error=71; goto end; } next++; init=scan(); if (error) goto end; init=getvalue(init); if (error) goto end; if (init->type!=s_real) { output("Startvalue must be real!\n"); error=72; goto end; } rv.value=*realof(init); scan_space(); if (strncmp(next,"to",2)) { output("Endvalue missing in for!\n"); error=73; goto end; } next+=2; end=scan(); if (error) goto end; end=getvalue(end); if (error) goto end; if (end->type!=s_real) { output("Endvalue must be real!\n"); error=73; goto end; } vend=*realof(end); scan_space(); if (!strncmp(next,"step",4)) { next+=4; step=scan(); if (error) goto end; step=getvalue(step); if (error) goto end; if (step->type!=s_real) { output("Stepvalue must be real!\n"); error=73; goto end; } vstep=*realof(step); } else vstep=1.0; signum=(vstep>=0)?1:-1; vend=vend+signum*epsilon; if (signum>0 && rv.value>vend) { scan_end(); goto end; } else if (signum<0 && rv.value0 && rv.value>vend) break; else if (signum<0 && rv.valuetype!=s_real) { output("Startvalue must be real!\n"); error=72; return; } oldindex=loopindex; loopindex=(long)*realof(init); scan_space(); if (strncmp(next,"to",2)) { output("Endvalue missing in loop!\n"); error=73; goto end; } next+=2; end=scan(); if (error) goto end; end=getvalue(end); if (error) goto end; if (end->type!=s_real) { output("Endvalue must be real!\n"); error=73; goto end; } vend=(long)*realof(end); if (loopindex>vend) { scan_end(); goto end; } newram=endlocal; scan_space(); if (*next==';' || *next==',') next++; jump=next; while (!error) { if (*next==1) { output("End missing in loop!\n"); error=401; goto end; } h=command(); if (udfon!=1 || h==c_return) break; if (h==c_break) { scan_end(); break; } if (h==c_end) { loopindex++; if (loopindex>vend) break; else next=jump; if (test_key()==escape) { output("User interrupted!\n"); error=1; break; } } } end : loopindex=oldindex; } void do_repeat (void) /***** do_loop do a loop command in a UDF. for value to value; .... ; endfor *****/ { int h; char *jump; if (!udfon) { output("Repeat only allowed in functions!\n"); error=57; return; } newram=endlocal; scan_space(); if (*next==';' || *next==',') next++; jump=next; while (!error) { if (*next==1) { output("End missing in repeat statement!\n"); error=401; break; } h=command(); if (udfon!=1 || h==c_return) break; if (h==c_break) { scan_end(); break; } if (h==c_end) { next=jump; if (test_key()==escape) { output1("User interrupted\n"); error=1; break; } } } } void do_end (void) { if (!udfon) { output("End only allowed in functions!\n"); error=57; } } static int ctest (header *hd) /**** ctest test, if a matrix contains nonzero elements. ****/ { double *m; long n,i; hd=getvalue(hd); if (error) return 0; if (hd->type==s_string) return (*stringof(hd)!=0); if (hd->type==s_real) return (*realof(hd)!=0.0); if (hd->type==s_complex) return (*realof(hd)!=0.0 && *imagof(hd)!=0.0); if (hd->type==s_matrix) { n=(long)(dimsof(hd)->r)*dimsof(hd)->c; m=matrixof(hd); for (i=0; itype==s_cmatrix) { n=(long)(dimsof(hd)->r)*dimsof(hd)->c; m=matrixof(hd); for (i=0; itype==s_reference && !referenceof(hd)) { if (iname[0]==0 && *(int *)p) { p+=16+2*sizeof(inttyp); moveresult((header *)newram,(header *)p); p=(char *)nextof((header *)p); hd=nextof(hd); continue; } else { hd1=getvalue(hd); if (error) return; } } else hd1=hd; if (iname,p); hd1->xor=*((int *)(p+16)); p+=16+sizeof(inttyp); if (defaults) p=(char *)nextof((header *)p); } else { strcpy(hd1->name,argname[i]); hd1->xor=xors[i]; } hd=nextof(hd); } for (i=n; iname,""); hd->xor=0; hd=nextof(hd); } if (sp==0 && argn>nargu) sp=nargu; udflineold=udfline; oldargn=actargn; oldsp=actsp; actargn=argn; actsp=sp; udfline=next=udfof(var); udfold=udfon; udfon=1; oldstartlocal=startlocal; oldendlocal=endlocal; startlocal=(char *)args; endlocal=newram; oldrunning=running; running=var; oldindex=loopindex; oldsearchglobal=searchglobal; searchglobal=0; oldepsilon=epsilon; oldchanged=epsilon=changedepsilon; if ((oldtrace=trace)>0) { if (trace==2) trace=0; if (trace>0) trace_udfline(next); } else if (var->flags&1) { trace=1; if (trace>0) trace_udfline(next); } udfcount++; if (udfcount>MAXUDF) { output("To many recursions!\n"); error=1; } while (!error && udfon==1) { command(); if (udfon==2) { result=scan_value(); if (error) { output1("Error in function %s\n",var->name); print_error(udfline); break; } moveresult1(st,result); break; } if (test_key()==escape) { output("User interrupted!\n"); error=58; break; } } udfcount--; endlocal=oldendlocal; startlocal=oldstartlocal; running=oldrunning; loopindex=oldindex; if (oldchanged==changedepsilon) epsilon=oldepsilon; else epsilon=changedepsilon; if (trace>=0) trace=oldtrace; if (error) output1("Error in function %s\n",var->name); if (udfon==0) { output1("Return missing in %s!\n",var->name); error=55; } udfon=udfold; next=oldnext; udfline=udflineold; actargn=oldargn; actsp=oldsp; searchglobal=oldsearchglobal; } void mdo (header *hd) { header *st=hd,*hd1,*result; int count=0; unsigned long size; if (!hd) wrong_arg_in("do"); hd=getvalue(hd); result=hd1=next_param(st); if (hd->type!=s_string) wrong_arg_in("do"); if (error) return; hd=searchudf(stringof(hd)); if (!hd || hd->type!=s_udf) wrong_arg_in("do"); while (hd1) { strcpy(hd1->name,argname[count]); hd1->xor=xors[count]; hd1=next_param(hd1); count++; } if (result) { size=(char *)result-(char *)st; if (size>0 && newram!=(char *)result) memmove((char *)st,(char *)result,newram-(char *)result); newram-=size; } interpret_udf(hd,st,count,0); } euler-1.61.0/src/udf.h0000644000175000001440000000135107453341741013302 0ustar ericusers/* * Euler - a numerical lab * * file : udf.h -- user defined function management */ #ifndef _UDF_H_ #define _UDF_H_ #include "stack.h" extern int udfon; void mdo (header *hd); void make_xors (void); /* * commands */ void get_udf (void); void do_type (void); void do_trace(void); void do_global (void); void do_useglobal (void); void do_if (void); void do_else (void); void do_elseif (void); void do_endif (void); void do_repeat (void); void do_loop (void); void do_for (void); void do_break (void); void do_end (void); void do_return (void); /* * builtin */ void mindex (header *hd); header *searchudf (char *name); void interpret_udf (header *var, header *args, int nargs, int sp); void trace_udfline (char *next); #endif euler-1.61.0/src/command.c0000644000175000001440000004136610327026400014131 0ustar ericusers/* * Euler - a numerical lab * * platform : all * * file : command.c -- builtin command handling */ #include #include #include #include #include #include #include #include "command.h" #include "builtin.h" #include "express.h" #include "input.h" #include "meta.h" #include "metaps.h" #include "graphics.h" #include "output.h" #include "help.h" #include "udf.h" #include "mainloop.h" #define EXTENSION ".e" #define BOOKEXTENSION ".en" int promptnotebook=1,booktype=0; FILE *infile=0,*outfile=0; char* path[32]; int npath=0; static int printcomments=1; static void load_file (void) /***** load_file interpret a file. *****/ { char filename[256]; char oldline[1024],fn[256],*oldnext; int oldbooktype=booktype,pn; header *hd; FILE *oldinfile; if (udfon) { output("Cannot load a file in a function!\n"); error=221; return; } scan_space(); if (*next=='(') { hd=scan_value(); if (error) return; if (hd->type!=s_string) { output("String value expected!\n"); error=1; return; } strcpy(filename,stringof(hd)); } else { scan_namemax(filename,256); } if (error) return; oldinfile=infile; pn=-1; retry : if (pn>=0) { strcpy(fn,path[pn]); strcat(fn,PATH_DELIM_STR); strcat(fn,filename); } else strcpy(fn,filename); infile=fopen(fn,"r"); if (!infile) { strcat(fn,EXTENSION); infile=fopen(fn,"r"); pn++; if (!infile) { if (pn>=npath) { output1("Could not open %s!\n",filename); error=53; infile=oldinfile; return; } else goto retry; } } strcpy(oldline,input_line); oldnext=next; *input_line=0; next=input_line; booktype=0; while (!error && infile && !quit) command(); booktype=oldbooktype; if (infile) fclose(infile); infile=oldinfile; strcpy(input_line,oldline); next=oldnext; } static void load_book (void) /***** load_book interpret a notebook file. *****/ { header *hd; char name[256]; char oldline[1024],fn[256],*oldnext; int oldbooktype=booktype; FILE *oldinfile; if (udfon) { output("Cannot load a notebook in a function!\n"); error=221; return; } scan_space(); if (*next=='(') { hd=scan_value(); if (error) return; if (hd->type!=s_string) { output("String value expected!\n"); error=1; return; } strcpy(name,stringof(hd)); } else { scan_namemax(name,256); } if (error) return; oldinfile=infile; infile=fopen(name,"r"); if (!infile) { strcpy(fn,name); strcat(fn,BOOKEXTENSION); infile=fopen(fn,"r"); if (!infile) { output1("Could not open %s!\n",stringof(name)); error=53; infile=oldinfile; return; } } strcpy(oldline,input_line); oldnext=next; *input_line=0; next=input_line; booktype=1; while (!error && infile && !quit) { startglobal=startlocal; endglobal=endlocal; command(); } booktype=oldbooktype; if (infile) fclose(infile); infile=oldinfile; strcpy(input_line,oldline); next=oldnext; } static void do_clg (void) { graphic_mode(); gclear(); gflush(); } static void do_cls (void) { text_mode(); clear_screen(); } void clear (void) /***** clear clears the stack and remove all variables and functions. *****/ { char name[32]; scan_space(); if (*next==';' || *next==',' || *next==0) { endlocal=startlocal; } else while(1) { scan_name(name); if (error) return; kill_local(name); scan_space(); if (*next==',') { next++; continue; } else break; } } static void do_clear (void) { if (udfon) { output("Cannot clear in a function!\n"); error=120; return; } clear(); } static void do_quit (void) { quit=1; } static void do_exec (void) { header *name; char *s; name=scan_value(); if (error) return; if (name->type!=s_string) { output("Cannot execute a number or matrix!\n"); error=130; return; } s=stringof(name); while (*s && !isspace(*s)) s++; if (*s) *s++=0; if (execute(stringof(name),s)) { output("Execution failed or program returned a failure!\n"); error=131; } } static void do_forget (void) { char name[16]; header *hd; int r; if (udfon) { output("Cannot forget functions in a function!\n"); error=720; return; } while (1) { scan_space(); scan_name(name); r=xor(name); hd=(header *)ramstart; while ((char *)hdxor && !strcmp(hd->name,name)) break; hd=nextof(hd); } if ((char *)hd>=udfend) { output1("Function %s not found!\n",name); error=160; return; } kill_udf(name); scan_space(); if (*next!=',') break; else next++; } } extern int builtin_count; extern builtintyp builtin_list[]; extern int command_count; extern commandtyp command_list[]; static void do_list (void) { header *hd; int i, c, cend, lw=linelength/16; output(" *** Builtin functions:\n"); for (i=0; i=builtin_count) cend=builtin_count; for (c=i; c=command_count) cend=command_count; for (c=i; ctype!=s_udf) break; if (i>=lw) { i=0; output("\n"); } output1("%-16s",hd->name); if (test_key()==escape) return; hd=nextof(hd); i++; } output("\n"); } static void listvar1 (char *s, header *hd) { output1("%-20sType: %s\n",hd->name,s); } static void listvar2 (char *s, header *hd) { output1("%-20sType: %s (%dx%d)\n",hd->name,s,dimsof(hd)->r,dimsof(hd)->c); } static void listvar3 (char *s, header *hd) { output1("%-20sType: %s (%dx%0d)",hd->name,s, submdimsof(hd)->r,submdimsof(hd)->c); } static void do_listvar (void) { header *hd=(header *)startlocal; while (hd<(header *)endlocal) { switch (hd->type) { case s_real : listvar1("Real",hd); break; case s_interval : listvar1("Interval",hd); break; case s_complex : listvar1("Complex",hd); break; case s_string : listvar1("String",hd); break; case s_matrix : listvar2("Real Matrix",hd); break; case s_cmatrix : listvar2("Complex Matrix",hd); break; case s_imatrix : listvar2("Interval Matrix",hd); break; case s_reference : listvar1("Reference",hd); break; case s_submatrix : listvar3("Real Submatrix",hd); break; case s_isubmatrix : listvar3("Interval Submatrix",hd); break; case s_csubmatrix : listvar3("Complex Submatrix",hd); break; default: listvar1("Unknown Type",hd); break; } hd=nextof(hd); if (test_key()==escape) break; } } static void do_dump (void) { header *file; if (outfile) { if (fclose(outfile)) { output("Error while closing dumpfile.\n"); } outfile=0; } scan_space(); if (*next==';' || *next==',' || *next==0) { if (*next) next++; return; } file=scan_value(); if (error || file->type!=s_string) { output("Dump needs a filename!\n"); error=201; return; } outfile=fopen(stringof(file),"a"); if (!outfile) { output1("Could not open %s.\n",stringof(file)); } } static void do_dir (void) { header *file; int len, npl, i, j, k, imax; char **entries=NULL; int n_entries=0; scan_space(); if (*next==';' || *next==',' || *next==0) { file=new_string("*",5,""); } else file=scan_value(); if (error || file->type!=s_string) { output("Dir needs a string!\n"); error=201; return; } len = scan_dir(".",stringof(file),&entries,&n_entries); len +=2; npl = linelength/len; imax = n_entries/npl; if (n_entries % npl) imax++; for (i=0; i=n_entries) break; output1("%s", entries[npl*i+j]); l=strlen(entries[npl*i+j]); for (k=0;ktype!=s_string) { output("Path needs a string!\n"); error=201; return; } p=stringof(ppath); for (i=2; is && *(q-1)==PATH_DELIM_CHAR) q--; *q=0; if (*p==';') p++; path[npath]=(char *)malloc(strlen(s)+1); strcpy(path[npath],s); npath++; } if (*next!=';') goto out; } static void do_cd (void) { header *hd; char name[256]; char *s; scan_space(); if (*next==';' || *next==',' || *next==0) { s=cd(""); output1("%s\n",s); return; } if (*next=='(') { hd=scan_value(); if (error) return; if (hd->type!=s_string) { output("String value expected!\n"); error=1; return; } strcpy(name,stringof(hd)); } else { scan_namemax(name,256); } if (error) return; s=cd(name); if (*next!=';') output1("%s\n",s); if (*next==',' || *next==';') next++; } static void do_meta (void) { header *file; scan_space(); file=scan_value(); if (error || file->type!=s_string) { output("Meta needs a filename!\n"); error=201; return; } if (!dump_meta(stringof(file))) { output1("Could not open %s.\n",stringof(file)); } } static void do_postscript (void) { header *file; scan_space(); file=scan_value(); if (error || file->type!=s_string) { output("postscript needs a filename!\n"); error=201; return; } if (!dump_postscript(stringof(file))) output1("Could not open %s.\n",stringof(file)); } static void do_remove (void) { header *hd; char name[256]; if (*next=='(') { hd=scan_value(); if (error) return; if (hd->type!=s_string) { output("String value expected!\n"); error=1; return; } strcpy(name,stringof(hd)); } else { scan_namemax(name,256); } if (error) return; remove(name); } static void do_do (void) { int udfold; char name[16]; char *oldnext=next,*udflineold; header *var; scan_space(); scan_name(name); if (error) return; var=searchudf(name); if (!var || var->type!=s_udf) { output("Need a udf!\n"); error=220; return; } udflineold=udfline; udfline=next=udfof(var); udfold=udfon; udfon=1; while (!error && udfon==1) { command(); if (udfon==2) break; if (test_key()==escape) { output("User interrupted!\n"); error=58; break; } } if (error) output1("Error in function %s\n",var->name); if (udfon==0) { output1("Return missing in %s!\n",var->name); error=55; } udfon=udfold; udfline=udflineold; if (udfon) next=oldnext; else { next=input_line; *next=0; } } static void do_mdump (void) { header *hd; #ifndef SPLIT_MEM output1("ramstart : 0\nstartlocal : %ld\n",startlocal-ramstart); output1("endlocal : %ld\n",endlocal-ramstart); output1("newram : %ld\n",newram-ramstart); output1("ramend : %ld\n",ramend-ramstart); #else output1("ramstart : 0\nstartlocal : %ld\n",startlocal-varstart); output1("endlocal : %ld\n",endlocal-varstart); output1("newram : %ld\n",newram-varstart); output1("ramend : %ld\n",ramend-varstart); #endif hd=(header *)ramstart; #ifdef SPLIT_MEM while ((char *)hdname); output1("size %6ld ",(long)hd->size); output1("type %d\n",hd->type); hd=nextof(hd); } hd=(header *)varstart; #endif while ((char *)hdname); #else output1("%6ld : %16s, ",(char *)hd-varstart,hd->name); #endif output1("size %6ld ",(long)hd->size); output1("type %d\n",hd->type); hd=nextof(hd); } } static void hex_out1 (int n) { if (n<10) output1("%c",n+'0'); else output1("%c",n-10+'A'); } static void hex_out (unsigned int n) { hex_out1(n/16); hex_out1(n%16); output(" "); } static void string_out (unsigned char *p) { int i; unsigned char a; for (i=0; i<16; i++) { a=*p++; output1("%c",(a<' ')?'_':a); } } static void do_hexdump (void) { char name[16]; unsigned char *p,*end; int i=0,j; unsigned long count=0; header *hd; scan_space(); scan_name(name); if (error) return; hd=searchvar(name); if (!hd) hd=searchudf(name); if (error || hd==0) return; p=(unsigned char *)hd; end=p+hd->size; output1("\n%5lx ",count); while (p=16) { i=0; string_out(p-16); output1("\n%5lx ",count); if (test_key()==escape) break; } } for (j=i; j<16; j++) output(" "); string_out(p-i); output("\n"); } void do_help (void) { char name[256]; header *hd; int count,i,defaults; char *p,*end,*pnote; builtintyp *b; scan_space(); p=name; while (*next!=0 && *next!=' ') { *p++=*next++; if (p-name>254) break; } *p=0; if (!*name) strcpy(name,"help"); b=find_builtin(name); if (b) { if (b->nargs>=0) { output1( "%s is a builtin function with %d argument(s).\n" ,name,b->nargs); } else output1( "%s is a builtin function.\n" ,name); } hd=searchudf(name); if (hd && hd->type==s_udf) { if (b) output1("%s is also a user defined function.\n",name); output1("function %s (",name); end=udfof(hd); p=helpof(hd); memmove(&count,p,sizeof(inttyp)); p+=sizeof(inttyp); pnote=p; for (i=0; iname,p2->name); } void sort_command (void) { command_count=0; while (command_list[command_count].name) command_count++; qsort(command_list,command_count,sizeof(commandtyp), (int (*)(const void *, const void *))command_compare); } commandtyp *preview_command (unsigned long *l) { commandtyp h; char name[16],*a,*n; *l=0; a=next; n=name; while (*l<15 && isalpha(*a)) { *n++=*a++; *l+=1; } *n=0; if (isalpha(*a)) return 0; h.name=name; return (commandtyp *)bsearch(&h,command_list,command_count,sizeof(commandtyp), (int (*)(const void *, const void *))command_compare); } euler-1.61.0/src/command.h0000644000175000001440000000117707453343065014151 0ustar ericusers/* * Euler - a numerical lab * * platform : all * * file : command.h -- builtin command handling */ #ifndef _COMMAND_H_ #define _COMMAND_H_ #include "stack.h" extern char* path[32]; extern int npath; typedef enum { c_none, c_allv, c_quit, c_hold, c_shg, c_load, c_udf, c_return, c_for, c_end, c_break, c_loop, c_if, c_repeat, c_endif, c_else, c_elseif, c_clear, c_clg, c_cls, c_exec, c_forget, c_global } comtyp; typedef struct { char *name; comtyp nr; void (*f)(void); } commandtyp; extern commandtyp command_list[]; void sort_command (void); commandtyp *preview_command (unsigned long *l); #endif euler-1.61.0/src/mainloop.c0000644000175000001440000002020410331244566014327 0ustar ericusers/* * mainloop.c * * 2002/09/01 path variable has two default values : * - the current dir * - the install prog dir * thanks to Masao KAWAMURA * * do_path function modified to let these two items * unchnged when the path function is called. * * 2002/06/02 out_matrix, out_cmatrix and out_imatrix now react to a change * in window size. * */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "sysdep.h" #include "output.h" #include "input.h" #include "funcs.h" #include "graphics.h" #include "interval.h" #include "builtin.h" #include "express.h" #include "stack.h" #include "meta.h" #include "metaps.h" #include "command.h" #include "mainloop.h" #include "udf.h" #include "edit.h" #include "scalp.h" #include "help.h" #ifdef YACAS #include "yacas2e.h" #endif char *udfline; /* * path for euler file research */ int searchglobal=0; FILE *metafile=0; double epsilon,changedepsilon; char titel[]="This is EULER, Version %s.\n\n" "Type help(Return) for help.\n" "Enter command: (%ld Bytes free.)\n\n"; int error,quit,surpressed,udf=0,errorout,outputing=1,stringon=0,trace=0; char input_line[1024]; int nosubmref=0; static header commandheader; extern commandtyp command_list[]; int commandtype; /***************** some builtin commands *****************/ int builtin (void) /***** builtin interpret a builtin command, number no. *****/ { unsigned long l; commandtyp *p; int comn; if (*next==3) { next++; #ifdef SPECIAL_ALIGNMENT memmove((char *)(&comn),next,sizeof(int)); #else comn=*((int *)next); #endif p=command_list+comn; l=sizeof(int); } else if (udfon) return 0; else p=preview_command(&l); if (p) { next+=l; p->f(); if (*next==';' || *next==',') next++; commandtype=p->nr; return 1; } return 0; } header *scan_expression (void) /***** scan_expression scans a variable, a value or a builtin command. *****/ { if (builtin()) return &commandheader; return scan(); } #define addsize(hd,size) ((header *)((char *)(hd)+size)) static void do_assignment (header *var) /***** do_assignment assign a value to a variable. *****/ { header *variable[8],*rightside[8],*rs,*v,*mark; int rscount,varcount,i,j; unsigned long offset,oldoffset,dif; char *oldendlocal; scan_space(); if (*next=='=') { next++; nosubmref=1; rs=scan_value(); nosubmref=0; if (error) return; varcount=0; /* count the variables, that get assigned something */ while (vartype!=s_reference && var->type!=s_submatrix && var->type!=s_csubmatrix && var->type!=s_isubmatrix) { output("Cannot assign to value!\n"); error=210; } variable[varcount]=var; var=nextof(var); varcount++; if (varcount>=8) { output("To many commas!\n"); error=100; return; } } /* count and note the values, that are assigned to the variables */ rscount=0; while (rs<(header *)newram) { rightside[rscount]=rs; rs=nextof(rs); rscount++; if (rscount>=8) { output("To many commas!\n"); error=101; return; } } /* cannot assign 2 values to 3 variables , e.g. */ if (rscount>1 && rscount1)?i:0],offset)); if (error) return; offset=endlocal-oldendlocal; if (oldoffset!=offset) /* size of var. changed */ { v=addsize(variable[i],offset); if (v->type==s_reference) mark=referenceof(v); else mark=submrefof(v); /* now shift all references of the var.s */ if (mark) /* not a new variable */ for (j=i+1; jtype==s_reference && referenceof(v)>mark) referenceof(v)=addsize(referenceof(v),dif); else if (submrefof(v)>mark) submrefof(v)=addsize(submrefof(v),dif); } } } } else /* just an expression which is a variable */ { var=getvalue(var); } if (error) return; if (*next!=';') give_out(var); if (*next==',' || *next==';') next++; } int command (void) /***** command scan a command and interpret it. return, if the user wants to quit. *****/ { header *expr; int ret=c_none; quit=0; error=0; errorout=0; while(1) { scan_space(); if (*next) break; else next_line(); } if (*next==1) return ret; #ifdef YACAS if (*next=='>') { next+=1; do_yacas(); return 0; } #endif expr=scan_expression(); if (!expr) { newram=endlocal; return ret; } if (error) { newram=endlocal; print_error(next); next=input_line; input_line[0]=0; return ret; } if (expr==&commandheader) { newram=endlocal; return commandtype; } switch (expr->type) { case s_real : case s_complex : case s_matrix : case s_cmatrix : case s_imatrix : case s_string : case s_interval : if (*next!=';') give_out(expr); if (*next==',' || *next==';') next++; break; case s_reference : case s_submatrix : case s_csubmatrix : case s_isubmatrix : do_assignment(expr); break; default : break; } if (error) print_error(next); newram=endlocal; if (error) { next=input_line; input_line[0]=0; } return ret; } /******************* main functions ************************/ void clear_fktext (void) { int i; for (i=0; i<10; i++) fktext[i][0]=0; } #include #include #include #include #include static int is_dir(char *dirname) { struct stat buf; if (stat(dirname,&buf)==0) { if (S_ISDIR(buf.st_mode)) return 1; } return 0; } static void define_eulercfg() { FILE *file; char *filename, *dirname; dirname = g_strconcat(g_get_home_dir(),"/.euler",NULL); if (!is_dir(dirname)) { mkdir(dirname,0755); } g_free(dirname); filename = g_strconcat(g_get_home_dir(),"/.euler/euler.cfg",NULL); file = fopen(filename, "r"); if (file) { fclose(file); g_free(filename); return; } file = fopen(filename, "w"); g_free(filename); if (file) { fprintf(file,"path(\".;%s/share/euler/progs\");\n",INSTALL_DIR); fprintf(file,"cd(\"%s/share/euler/progs\");\n",INSTALL_DIR); fprintf(file,"load \"util.e\";\n"); fprintf(file,"load \"framed.e\";\n"); fprintf(file,"load \"x.e\";\n"); fprintf(file,"load \"remez.e\";\n"); fprintf(file,"load \"steffens.e\";\n"); fprintf(file,"load \"gauss.e\";\n"); fprintf(file,"load \"histo.e\";\n"); fprintf(file,"load \"interval.e\";\n"); fprintf(file,"load \"broyden.e\";\n"); fprintf(file,"load \"fminmax.e\";\n"); fprintf(file,"load \"3dplot.e\";\n"); fprintf(file,"load \"svd.e\";\n"); fprintf(file,"load \"splines.e\";\n"); fprintf(file,"load \"statist.e\";\n"); fprintf(file,"shortformat();\n"); fprintf(file,"shrinkwindow();\n"); fclose(file); } } void main_loop (int argc, char *argv[]) { int i; char *eulercfg; define_eulercfg(); #ifndef SPLIT_MEM output2(titel,VERSION,(unsigned long)(ramend-ramstart)); #else output2(titel,VERSION,(unsigned long)(ramend-varstart)); #endif #ifndef SPLIT_MEM newram=startlocal=endlocal=ramstart; #else newram=startlocal=endlocal=varstart; #endif udfend=ramstart; changedepsilon=epsilon=10000*DBL_EPSILON; /* * setup default paths */ path[0]=(char *)malloc(2); strcpy(path[0],"."); path[1]=(char *)malloc(strlen(INSTALL_DIR) + strlen("/share/euler/progs") + 1); strcpy(path[1], INSTALL_DIR); strcat(path[1], "/share/euler/progs"); npath=2; sort_builtin(); sort_command(); make_xors(); clear_fktext(); accuinit(); #ifdef YACAS init_yacas(); #endif next=input_line; *next=0; /* clear input line */ eulercfg = g_strconcat("load \"",g_get_home_dir(),"/.euler/euler.cfg\";",NULL); strcpy(input_line,eulercfg); g_free(eulercfg); for (i=1; i extern int udf; extern int outputing; extern int errorout; extern int trace; extern int quit; extern double epsilon,changedepsilon; extern int actargn,actsp; extern int stringon; extern int udfon; extern int searchglobal; extern char *udfline; extern char input_line[1024]; extern FILE *infile, *outfile; int command (void); void main_loop (int argc, char *argv[]); #endif euler-1.61.0/src/scalp.c0000644000175000001440000004402607453013675013631 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : scalp.c -- long accumulator */ #include #include #include #include "interval.h" #include "express.h" #include "output.h" #include "scalp.h" /************************ Exact Scalar Product ******************/ #define LR_SIZE 128 #define LR_BASE 64 #define LR_U_MIN -64 #define LR_E_MAX 63 #define LR_DOUBLE_LENGTH 8 #define error(s) error=1, output(s"\n") typedef struct { int E,U,S; unsigned short M[LR_SIZE]; } Accu; Accu A1,A2,h,g,h1,g1,hh; int accumode=s_real; #define accu(a,n) (((a)->M)[LR_BASE+(n)]) #define iszero(a) ((a)->U==(a)->E && accu((a),(a)->U)==0) #define MI 65536.0 static double EXP2 [17] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384.0, 32768.0,65536.0}; static void accutruncate (Accu *a) { while (accu(a,a->E)==0 && a->E>a->U) a->E--; while (accu(a,a->U)==0 && a->E>a->U) a->U++; if (a->E==a->U && accu(a,a->E)==0) { a->E=a->U=0; accu(a,0)=0; a->S=1; } } static void accuload (Accu *a, double x) { double y; int n; if (x==0) { a->S=1; a->E=a->U=0; accu(a,0)=0; return; } if (x<0) { a->S=-1; x=-x; } else a->S=1; if (x>1) { x=frexp(x,&n); a->E=n/16; n-=a->E*16; x*=EXP2[n]; a->U=a->E; while (x!=0.0) { accu(a,a->U)=(unsigned short)(y=floor(x)); x-=y; a->U--; x*=MI; } a->U++; if (a->U<=LR_U_MIN || a->UE-LR_DOUBLE_LENGTH) return; } else if (x<1) { x=frexp(x,&n); a->E=n/16-1; n-=a->E*16; x*=EXP2[n]; a->U=a->E; while (x!=0.0) { accu(a,a->U)=(unsigned short)(y=floor(x)); x-=y; a->U--; x*=MI; } a->U++; if (a->U<=LR_U_MIN || a->UE-LR_DOUBLE_LENGTH) return; } else { accu(a,0)=1; a->E=0; a->U=0; } accutruncate(a); } #define exp16(n) ldexp(1,(n)*16) static double accuget (Accu *a) { double y; int j; y=accu(a,a->E); for (j=a->E-1; j>=a->U && j>=a->E-LR_DOUBLE_LENGTH; j--) { y=y*MI+accu(a,j); } return a->S*y*exp16(j+1); } static void accucopy (Accu *a, Accu *b) { int i; a->E=b->E; a->U=b->U; a->S=b->S; for (i=a->U; i<=a->E; i++) accu(a,i)=accu(b,i); } static void accuadd (Accu *a, Accu *b); static void accusub (Accu *a, Accu *b) { unsigned long l,l1; int i,j; int o=0; if (iszero(b)) return; if (iszero(a)) { accucopy(a,b); a->S=-a->S; return; } if (b->S!=a->S) { if (a->S<0) { b->S=-1; accuadd(a,b); b->S=1; return; } else { b->S=1; accuadd(a,b); b->S=-1; return; } } else { if (b->EE) { greater : if (b->UU) { for (j=b->U; jU; j++) accu(a,j)=0; a->U=b->U; } i=b->U; while (i<=b->E) { l=accu(a,i); l1=(unsigned long)accu(b,i)+o; if (l0) { accu(a,i)--; break; } accu(a,i)=65535u; i++; } } else if (b->E>a->E) { less : i=a->U; if (b->UU) { for (j=b->U; jU; j++) accu(a,j)=accu(b,j); a->U=b->U; } while (i<=a->E) { if (i>=b->U) l=accu(b,i); else l=0; l1=(unsigned long)accu(a,i)+o; if (l=b->U && accu(b,i)>0) { accu(a,i)=accu(b,i)-1; i++; break; } accu(a,i)=65535u; i++; } for (; i<=b->E; i++) accu(a,i)=accu(b,i); a->E=b->E; a->S=-a->S; } else { i=a->E; while (i>=a->U) { if (iU) goto greater; if (accu(a,i)accu(b,i)) goto greater; i--; } if (i>=b->U) goto less; accu(a,0)=0; a->E=a->U=0; a->S=1; return; } } accutruncate(a); } static void accuadd (Accu *a, Accu *b) { unsigned long l; int i,j; int o=0; if (iszero(b)) return; if (iszero(a)) { accucopy(a,b); return; } if (b->S==a->S) { if (b->U>a->E) { for (j=a->E+1; jU; j++) accu(a,j)=0; a->E=b->U-1; } i=b->U; while (i<=b->E) { if (iU) { accu(a,i)=accu(b,i); } else { if (i>a->E) { l=(unsigned long)accu(b,i)+o; a->E=i; } else l=((unsigned long)accu(a,i)+accu(b,i))+o; accu(a,i)=(unsigned short)(l&65535l); if (l>=65536l) o=1; else o=0; } i++; } while (o) { if (i>LR_E_MAX) { output("Accumulator overflow.\n"); error=1; return; } if (i>a->E) { accu(a,i)=1; a->E=i; i++; break; } if (iU) { accu(a,i)=1; i++; break; } l=(unsigned long)accu(a,i)+1; accu(a,i)=(unsigned short)(l&65535l); if (l>=65536l) o=1; else o=0; i++; } if (iU) for (j=i; jU; j++) accu(a,j)=0; if (b->UU) a->U=b->U; } else if (b->S<0) { b->S=1; accusub(a,b); b->S=-1; return; } else if (a->S<0) { b->S=-1; accusub(a,b); b->S=1; return; } accutruncate(a); } static void accumult (Accu *a, Accu *b) { unsigned long l,l1,o1; static Accu hm; int i,j,k,o,start=1; if (iszero(a)) return; if (iszero(b)) { accuload(a,0.0); return; } for (i=a->U; i<=a->E; i++) { for (o1=0,o=0,j=b->U,k=i+j; j<=b->E; j++,k++) { if (k>LR_E_MAX || k=65536l) { accu(&hm,k)=(unsigned short)(l1&65535l); o=1; } else { accu(&hm,k)=(unsigned short)l1; o=0; } o1=(l>>16)&65535l; } start=0; if (k>LR_E_MAX || kS==b->S) a->S=1; else a->S=-1; a->U=b->U+a->U; a->E=b->E+a->E; if (accu(&hm,a->E+1)!=0) a->E++; for (i=a->U; i<=a->E; i++) accu(a,i)=accu(&hm,i); accutruncate(a); } static void accuimult (double a, double b, double a1, double b1) { if (a>=0) { if (a1>=0) { accuload(&h,a); accuload(&g,a1); accuload(&h1,b); accuload(&g1,b1); } else if (b1>=0) { accuload(&h,b); accuload(&g,a1); accuload(&h1,b); accuload(&g1,b1); } else { accuload(&h,b); accuload(&g,a1); accuload(&h1,a); accuload(&g1,b1); } } else if (b>=0) { if (a1>=0) { accuload(&h,a); accuload(&g,b1); accuload(&h1,b); accuload(&g1,b1); } else if (b1>=0) { if (a*b1 <= b*a1) { accuload(&h,a); accuload(&g,b1); } else { accuload(&h,b); accuload(&g,a1); } if (b*b1 >= a*a1) { accuload(&h1,b); accuload(&g1,b1); } else { accuload(&h1,a); accuload(&g1,a1); } } else { accuload(&h,b); accuload(&g,a1); accuload(&h1,a); accuload(&g1,b1); } } else { if (a1>=0) { accuload(&h,a); accuload(&g,b1); accuload(&h1,b); accuload(&g1,a1); } else if (b1>=0) { accuload(&h,a); accuload(&g,b1); accuload(&h1,a); accuload(&g1,a1); } else { accuload(&h,b); accuload(&g,b1); accuload(&h1,a); accuload(&g1,a1); } } accumult(&g,&h); accuadd(&A1,&g); if (error) return; accumult(&g1,&h1); accuadd(&A2,&g1); } void maccuload (header *hd) { header *st=hd,*result; int r,c; double *m; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&A1,*m++); accumode=s_real; while (c>1) { accuload(&h,*m++); accuadd(&A1,&h); c--; if (error) return; } result=new_real(accuget(&A1),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&A1,*m++); accuload(&A2,*m++); accumode=s_complex; while (c>1) { accuload(&h,*m++); accuadd(&A1,&h); if (error) return; accuload(&h,*m++); accuadd(&A2,&h); if (error) return; c--; } result=new_complex(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&A1,*m++); accuload(&A2,*m++); accumode=s_interval; while (c>1) { accuload(&h,*m++); accuadd(&A1,&h); if (error) return; accuload(&h,*m++); accuadd(&A2,&h); if (error) return; c--; } result=new_interval( round_down(accuget(&A1)),round_up(accuget(&A2)),""); if (error) return; moveresult(st,result); return; } else error("Wrong argument for accuload.\n"); } void maccuadd (header *hd) { header *st=hd,*result; int r,c; double *m; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } if (accumode==s_real || accumode==s_complex) { accuload(&h,*m++); accuadd(&A1,&h); if (error) return; } else { accuload(&h,*m++); accuadd(&A1,&h); accuadd(&A2,&h); if (error) return; } accumode=s_real; while (c>1) { if (accumode==s_real || accumode==s_complex) { accuload(&h,*m++); accuadd(&A1,&h); if (error) return; } else { accuload(&h,*m++); accuadd(&A1,&h); accuadd(&A2,&h); if (error) return; } c--; } result=new_real(accuget(&A1),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } if (accumode==s_interval) { output("Cannot add complex to an interval accu.\n"); error=1; return; } if (accumode==s_real) { accuload(&A2,0.0); accumode=s_complex; } accuload(&h,*m++); accuadd(&A1,&h); accuload(&h,*m++); accuadd(&A2,&h); if (error) return; while (c>1) { accuload(&h,*m++); accuadd(&A1,&h); accuload(&h,*m++); accuadd(&A2,&h); if (error) return; c--; } result=new_complex(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } if (accumode==s_complex) { output("Cannot add interval to a complex accu.\n"); error=1; return; } if (accumode==s_real) { A2=A1; accumode=s_interval; } accuload(&h,*m++); accuadd(&A1,&h); accuload(&h,*m++); accuadd(&A2,&h); if (error) return; while (c>1) { accuload(&h,*m++); accuadd(&A1,&h); accuload(&h,*m++); accuadd(&A2,&h); if (error) return; c--; } result=new_interval( round_down(accuget(&A1)),round_up(accuget(&A2)),""); if (error) return; moveresult(st,result); return; } else error("Wrong argument for accuload.\n"); } void maccuload2 (header *hd) { header *st=hd,*hd1,*result; int r,c,r1,c1; double *m,*m1; hd1=nextof(hd); equal_params_2(&hd,&hd1); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1 || r1!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } if (c==0 || c!=c1) { output("Wrong vectors in accuload.\n"); error=1; return; } accuload(&A1,*m++); accuload(&h,*m1++); accumult(&A1,&h); accumode=s_real; if (error) return; while (c>1) { accuload(&h,*m++); accuload(&h1,*m1++); accumult(&h,&h1); accuadd(&A1,&h); c--; if (error) return; } result=new_real(accuget(&A1),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&h,*m++); accuload(&h1,*m++); accuload(&g,*m1++); accuload(&g1,*m1++); accucopy(&hh,&h); accumult(&hh,&g); accucopy(&A1,&hh); accucopy(&hh,&h1); accumult(&hh,&g1); accusub(&A1,&hh); accucopy(&hh,&h); accumult(&hh,&g1); accucopy(&A2,&hh); accucopy(&hh,&h1); accumult(&hh,&g); accuadd(&A2,&hh); if (error) return; accumode=s_complex; while (c>1) { accuload(&h,*m++); accuload(&h1,*m++); accuload(&g,*m1++); accuload(&g1,*m1++); accucopy(&hh,&h); accumult(&hh,&g); accuadd(&A1,&hh); accucopy(&hh,&h1); accumult(&hh,&g1); accusub(&A1,&hh); accucopy(&hh,&h); accumult(&hh,&g1); accuadd(&A2,&hh); accucopy(&hh,&h1); accumult(&hh,&g); accuadd(&A2,&hh); if (error) return; c--; } result=new_complex(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&A1,0); accuload(&A2,0); accuimult(*m,*(m+1),*m1,*(m1+1)); m+=2; m1+=2; if (error) return; while (c>1) { accuimult(*m,*(m+1),*m1,*(m1+1)); m+=2; m1+=2; if (error) return; c--; } result=new_interval(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else error("Wrong argument for accuload.\n"); } void maccuadd2 (header *hd) { header *st=hd,*hd1,*result; int r,c,r1,c1; double *m,*m1; hd1=nextof(hd); equal_params_2(&hd,&hd1); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1 || r1!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } if (c==0 || c!=c1) { output("Wrong vectors in accuload.\n"); error=1; return; } accuload(&h,*m++); accuload(&h1,*m1++); accumult(&h,&h1); accuadd(&A1,&h); accumode=s_real; if (error) return; while (c>1) { accuload(&h,*m++); accuload(&h1,*m1++); accumult(&h,&h1); accuadd(&A1,&h); c--; if (error) return; } result=new_real(accuget(&A1),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuload(&h,*m++); accuload(&h1,*m++); accuload(&g,*m1++); accuload(&g1,*m1++); accucopy(&hh,&h); accumult(&hh,&g); accuadd(&A1,&hh); accucopy(&hh,&h1); accumult(&hh,&g1); accusub(&A1,&hh); accucopy(&hh,&h); accumult(&hh,&g1); accuadd(&A2,&hh); accucopy(&hh,&h1); accumult(&hh,&g); accuadd(&A2,&hh); accumode=s_complex; if (error) return; while (c>1) { accuload(&h,*m++); accuload(&h1,*m++); accuload(&g,*m1++); accuload(&g1,*m1++); accucopy(&hh,&h); accumult(&hh,&g); accuadd(&A1,&hh); accucopy(&hh,&h1); accumult(&hh,&g1); accusub(&A1,&hh); accucopy(&hh,&h); accumult(&hh,&g1); accuadd(&A2,&hh); accucopy(&hh,&h1); accumult(&hh,&g); accuadd(&A2,&hh); if (error) return; c--; } result=new_complex(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else if (hd->type==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=1) { output("Accuload needs one or two vectors.\n"); error=1; return; } accuimult(*m,*(m+1),*m1,*(m1+1)); m+=2; m1+=2; if (error) return; while (c>1) { accuimult(*m,*(m+1),*m1,*(m1+1)); m+=2; m1+=2; if (error) return; c--; } result=new_interval(accuget(&A1),accuget(&A2),""); if (error) return; moveresult(st,result); return; } else error("Wrong argument for accuload.\n"); } void mresiduum (header *hd) { header *st=hd,*hd1,*hd2,*result; int i,j,k,c,r,c1,r1,c2,r2,scalar=0; double *m,*m1,*m2,*mr; hd1=nextof(st); hd2=nextof(hd1); equal_params_3(&hd,&hd1,&hd2); if (error) return; getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); getmatrix(hd2,&r2,&c2,&m2); if (r2==1 && c2==1) { scalar=1; if (c!=r1) { error("Wrong matris size for residuum.\n"); return; } } else if (c1!=c2 || r!=r2 || c!=r1) { error("Wrong matris size for residuum.\n"); return; } if (isreal(hd)) { result=new_matrix(r,c1,""); if (error) return; mr=matrixof(result); for (i=0; i=A1.U; i--) *mr++=A1.S*accu(&A1,i)*exp16(i); } void maccu2 (header *hd) { header *result; double *mr; int i; result=new_matrix(1,A2.E-A2.U+1,""); if (accumode==s_real) { output("Accu is real.\n"); error=1; return; } mr=matrixof(result); for (i=A2.E; i>=A2.U; i--) *mr++=A2.S*accu(&A2,i)*exp16(i); } euler-1.61.0/src/scalp.h0000644000175000001440000000057707453013672013636 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : scalp.h -- long accumulator */ #ifndef _SCALP_H_ #define _SCALP_H_ #include "stack.h" void accuinit (); void maccuload (header *hd); void maccuadd (header *hd); void maccuload2 (header *hd); void maccuadd2 (header *hd); void mresiduum (header *hd); void maccu1 (header *hd); void maccu2 (header *hd); #endif euler-1.61.0/src/express.c0000644000175000001440000005600710330753074014212 0ustar ericusers#include #include #include #include #include #include "stack.h" #include "output.h" #include "funcs.h" #include "interval.h" #include "builtin.h" #include "express.h" #include "spread.h" #include "udf.h" #include "matrix.h" #include "linear.h" #include "command.h" #include "input.h" void scan_summe (void); extern int nosubmref,trace; int udfon=0,actargn=0,actsp=0; char *next; /**************** builtin operators ****************/ void cscalp (double *s, double *si, double *x, double *xi, double *y, double *yi) { *s += *x * *y - *xi * *yi; *si += *x * *yi + *xi * *y; } void iscalp (double *s, double *si, double *x, double *xi, double *y, double *yi) { double a,b; interval_mult(x,xi,y,yi,&a,&b); interval_add(s,si,&a,&b,s,si); } void ccopy (double *y, double *x, double *xi) { *y++=*x; *y=*xi; } void icopy (double *y, double *x, double *xi) { *y++=*x; *y=*xi; } void multiply (header *hd, header *hd1) /***** multiply matrix multiplication. *****/ { header *result,*st=hd; dims *d,*d1; double *m,*m1,*m2,*mm1,*mm2,x,y,null=0.0; int i,j,c,r,k; hd=getvalue(hd); hd1=getvalue(hd1); if (error) return; if (hd->type==s_matrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_matrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; for (k=0; kc; k++) { x+=(*mm1)*(*mm2); mm1++; mm2+=d1->c; } *mat(m,c,i,j)=x; } moveresult(st,result); return; } if (hd->type==s_matrix) { if (hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { cscalp(&x,&y,mm1,&null,mm2,mm2+1); mm1++; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd1->type==s_imatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_imatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { iscalp(&x,&y,mm1,mm1,mm2,mm2+1); mm1++; mm2+=2*d1->c; } icopy(imat(m,c,i,j),&x,&y); } moveresult(st,result); return; } } if (hd->type==s_cmatrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; y=0.0; for (k=0; kc; k++) { cscalp(&x,&y,mm1,mm1+1,mm2,&null); mm1+=2; mm2+=d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd->type==s_cmatrix && hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { cscalp(&x,&y,mm1,mm1+1,mm2,mm2+1); mm1+=2; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd->type==s_imatrix) { if (hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_imatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; y=0.0; for (k=0; kc; k++) { iscalp(&x,&y,mm1,mm1+1,mm2,mm2); mm1+=2; mm2+=d1->c; } icopy(imat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd1->type==s_imatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_imatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { iscalp(&x,&y,mm1,mm1+1,mm2,mm2+1); mm1+=2; mm2+=2*d1->c; } icopy(imat(m,c,i,j),&x,&y); } moveresult(st,result); return; } } else dotmultiply(st,nextof(st)); } void divide (header *hd, header *hd1) { dotdivide(hd,hd1); } void real_invert (double *x, double *y) { *y= -*x; } void complex_invert (double *x, double *xi, double *y, double *yi) { *y= -*x; *yi= -*xi; } void invert (header *hd) /***** invert compute -matrix. *****/ { header *result,*st=hd; hd=getvalue(hd); if (error) return; if (isinterval(hd)) result=map1i(interval_invert,hd); else result=map1(real_invert,complex_invert,hd); if (!error) moveresult(st,result); } /***************** scanning ***************************/ void scan_space (void) { start: while (*next==' ' || *next==TAB) next++; if (!udfon && *next=='.' && *(next+1)=='.') { next_line(); if (error) return; goto start; } } void scan_namemax (char *name, int lmax) { int count=0; if (*next=='\"') { next++; while (*next!='\"' && *next) { *name++=*next++; count++; if (count>=lmax-1) { output("Name too long!\n"); error=11; break; } } if (*next=='\"') next++; } else if (!isalpha(*next) && *next!='_') { output1("Name expected at:\n%s\n",next); error=11; *name=0; return; } else { if (*next=='_') { *name++=*next++; count++; } while (isalpha(*next) || isdigit(*next)) { *name++=*next++; count++; if (count>=lmax-1) { output("Name too long!\n"); error=11; break; } } } *name=0; } void scan_name (char *name) { scan_namemax (name,16); } int scan_arguments (int *scount) /* look ahead for arguments */ { int count=0,olds=nosubmref,nocount=0; header *hd,*hdold; *scount=0; nosubmref=1; while (1) { scan_space(); if (*next==')' || *next==']') break; if (*next==',') hd=new_reference(0,""); else { hd=scan(); scan_space(); } if (*next=='=') { next++; hdold=(header *)newram; scan_value(); if (!error) { strcpy(hdold->name,hd->name); hdold->xor=hd->xor; moveresult(hd,hdold); nocount=1; } } else if (nocount) { output("Illegal parameter after named parameter!\n"); error=2700; } if (error) { nosubmref=olds; return 0; } while (hd<(header *)newram) { if (!nocount) count++; hd=nextof(hd); } if (count>=20) { output("To many arguments!\n"); error=56; return 0; } if (*next==';') { *scount=count; } else if (*next!=',') break; next++; } if (*next!=')' && *next!=']') { output("Error in arguments!\n"); error=19; return 0; } next++; nosubmref=olds; return count; } void scan_matrix (void) /***** scan_matrix scan a matrix from input. form: [x y z ... ; v w u ...], where x,y,z,u,v,w are sums. *****/ { header *hd,*result; dims *d; int c,r,count,i,j,complex=0,interval=0,n; unsigned long ic; unsigned long allcount; double *m,*ms,cnull[2]={0,0},*mr; hd=new_matrix(0,0,""); /* don't know how big it will be! */ if (error) return; count=0; getmatrix(hd,&r,&c,&m); ms=m; r=0; c=0; scan_space(); while (1) { scan_space(); if (*next==0) { next_line(); scan_space(); } /* matrix is allowed to pass line ends */ if (*next==';' || *next==']') /* new column starts */ { if (*next==';') next++; if (!freeramfrom(ms,count*(long)(r+1)*sizeof(double))) { output("Memory overflow!\n"); error=18; return; } if (count>c) /* this column is to long */ { if (r>0) /* expand matrix */ { for (j=count-1; j>=0; j--) { if (complex) copy_complex(cmat(ms,count,r,j), cmat(ms,c,r,j)); else if (interval) copy_interval(imat(ms,count,r,j), imat(ms,c,r,j)); else *mat(ms,count,r,j)=*mat(ms,c,r,j); } for (i=r-1; i>=0; i--) { if (i>0) for (j=c-1; j>=0; j--) { if (complex) copy_complex(cmat(ms,count,i,j), cmat(ms,c,i,j)); else if (interval) copy_interval(imat(ms,count,i,j), imat(ms,c,i,j)); else *mat(ms,count,i,j)=*mat(ms,c,i,j); } for (j=c; jtype==s_complex || result->type==s_cmatrix)) { if (interval) { output("Cannot make an interval matrix complex.\n"); error=16; return; } complex=1; /* make matrix complex up to now (oh boy!) */ allcount=((char *)m-(char *)ms)/sizeof(double); if (!freeram(allcount*sizeof(double)+result->size)) { output("Memory overflow!\n"); error=16; return; } if (allcount) { memmove(newram+allcount*sizeof(double),newram,result->size); result=(header *)((char *)result+allcount*sizeof(double)); for (ic=allcount-1; ic>0; ic--) { *(ms+(long)2*ic)=*(ms+ic); *(ms+(long)2*ic+1)=0.0; } *(ms+1)=0.0; newram=(char *)(ms+(long)2*allcount); m=(double *)newram; } hd->type=s_cmatrix; } else if (!interval && (result->type==s_interval || result->type==s_imatrix)) { if (complex) { output("Cannot make a complex matrix interval.\n"); error=16; return; } interval=1; /* make matrix complex up to now (oh boy!) */ allcount=((char *)m-(char *)ms)/sizeof(double); if (!freeram(allcount*sizeof(double)+result->size)) { output("Memory overflow!\n"); error=16; return; } if (allcount) { memmove(newram+allcount*sizeof(double),newram,result->size); result=(header *)((char *)result+allcount*sizeof(double)); for (ic=allcount-1; ic>0; ic--) { *(ms+(long)2*ic)=*(ms+ic); *(ms+(long)2*ic+1)=*(ms+ic); } *(ms+1)=*ms; newram=(char *)(ms+(long)2*allcount); m=(double *)newram; } hd->type=s_imatrix; } if (result->type==s_real) { if (interval) *m++=*aof(result); else *m++=*realof(result); count++; if (complex) *m++=0.0; else if (interval) *m++=*aof(result); } else if (result->type==s_matrix) { if (dimsof(result)->r!=1 || dimsof(result)->c<1) { output("Illegal matrix element\n"); error=16; return; } n=dimsof(result)->c; mr=matrixof(result); if (complex) { for (j=0; jc; mr=matrixof(result); for (j=0; jtype==s_cmatrix) { if (dimsof(result)->r!=1 || dimsof(result)->c<1) { output("Illegal matrix element\n"); error=16; return; } n=dimsof(result)->c; mr=matrixof(result); if (complex) { for (j=0; jtype==s_imatrix) { if (dimsof(result)->r!=1 || dimsof(result)->c<1) { output("Illegal matrix element\n"); error=16; return; } n=dimsof(result)->c; mr=matrixof(result); if (interval) { for (j=0; jtype==s_complex && complex) { *m++=*realof(result); *m++=*imagof(result); count++; } else if (result->type==s_interval && interval) { *m++=*aof(result); *m++=*bof(result); count++; } else { error=-1; output("Illegal vector!\n"); return; } if (count>=INT_MAX) { output1("Matrix has more than %d columns!\n",INT_MAX); error=17; return; } newram=(char *)m; if (!freeram(16)) { output("Memory overflow!\n"); error=16; return; } } next++; d=(dims *)(hd+1); if (c==0) r=0; d->c=c; d->r=r; if (r>=INT_MAX) { output1("Matrix has more than %d rows!\n",INT_MAX); error=18; return; } if (complex) hd->size=cmatrixsize(c,r); else if (interval) hd->size=imatrixsize(c,r); else hd->size=matrixsize(c,r); newram=(char *)hd+hd->size; } #define myisdigit(c) ((c)>='0' && (c)<='9') void scan_elementary (void) /***** scan_elemtary scan an elementary expression, like a value or variable. scans also (...). *****/ { double x; int n,nargs,hadargs=0,sp; header *hd=(header *)newram,*var,*hd1; char name[16],*s; scan_space(); if ((*next=='.' && myisdigit(*(next+1))) || myisdigit(*next)) { sscanf(next,"%lf%n",&x,&n); next+=n; if (*next=='i') /* complex number! */ { next++; new_complex(0,x,""); } else new_real(x,""); } else if (*next==2) /* a double stored in binary form */ { next++; #ifdef SPECIAL_ALIGNMENT memmove((char *)(&x),next,sizeof(double)); #else x=*((double *)next); #endif next+=sizeof(double); if (*next=='i') /* complex number! */ { next++; new_complex(0,x,""); } else new_real(x,""); } else if (*next==3) { output("Command name used as variable!\n"); error=4000; return; } else if (isalpha(*next) || *next=='_') { scan_name(name); if (error) return; scan_space(); nargs=0; if (*next=='{') { next++; scan(); if (error) return; scan_space(); if (*next!='}') { output("} missing!\n"); error=1010; return; } next++; get_element1(name,hd); goto after; } if (*next=='(' || *next=='[') /* arguments or indices */ { hadargs=(*next=='[')?2:1; next++; nargs=scan_arguments(&sp); if (error) return; } if (name[0]=='_') { if (hadargs==1 && exec_builtin(name+1,nargs,hd)); #ifdef DLL else if (hadargs==1 && exec_dll(name+1,nargs,hd)); #endif else { output1( "%s no function or variable, or wrong argument number!\n", name); error=1; return; } return; } if (hadargs==2) var=searchvar(name); else if (hadargs==1) { var=searchudf(name); if (!var) var=searchvar(name); } else var=searchvar(name); if (var && var->type==s_udf && hadargs==1) { interpret_udf(var,hd,nargs,sp); if (error) return; } else if (!var && hadargs) { if (hadargs==1 && exec_builtin(name,nargs,hd)); #ifdef DLL else if (hadargs==1 && exec_dll(name,nargs,hd)); #endif else { error=24; if (hadargs==2) output1("%s no variable!\n",name); else output1( "%s no function or variable, or wrong argument number!\n", name); return; } } else if (var && hadargs) { get_element(nargs,var,hd); } else hd=new_reference(var,name); } else if (*next=='#' && *(next+1)!='#') { next++; mindex(hd); } else if (*next=='+') { next++; scan_elementary(); } else if (*next=='-') { next++; scan_elementary(); if (!error) invert(hd); } else if (*next=='(') { next++; scan(); if (error) return; scan_space(); if (*next!=')') { output("Closing bracket ) missing!\n"); error=5; return; } newram=(char *)nextof(hd); next++; } else if (*next=='[') { next++; scan_matrix(); } else if (*next=='~' && *(next+1)!='=') { next++; scan_value(); if (error) return; newram=(char *)nextof(hd); hd1=(header *)newram; scan_space(); if (*next=='~') { next++; minterval1(hd); } else { if (*next!=',') { error=1; return; } next++; scan_value(); if (error) return; newram=(char *)nextof(hd1); scan_space(); if (*next!='~') { error=1; return; } next++; minterval(hd); } } else if (*next=='\"') { next++; s=next; while (*next!='\"' && *next!=0) next++; hd=new_string(s,next-s,""); if (*next!='\"') { output("\" missing\n"); error=1; return; } next++; } else if (*next=='\'' && *(next+1)=='\'') { next+=2; s=next; while ((*next!='\'' || *(next+1)!='\'') && *next!=0) next++; hd=new_string(s,next-s,""); if (*next!='\'' || *(next+1)!='\'') { output("\'\' missing\n"); error=1; return; } next+=2; } else error=1; after: if (error) return; /* for things, that come after an elementary expression */ if (*next=='\'') { next++; transpose(hd); return; } if (*next=='°') { next++; mdegree(hd); return; } scan_space(); if (*next=='^' || (*next=='*' && *(next+1)=='*')) { if (*next=='^') next++; else next+=2; newram=(char *)nextof(hd); scan_elementary(); if (error) return; mpower(hd); } } void scan_factor (void) { scan_elementary(); } void scan_summand (void) { header *hd=(header *)newram,*hd1; scan_space(); scan_factor(); if (error) return; while (1) { hd1=(header *)newram; scan_space(); if ((*next=='*' && *(next+1)!='*') || (*next=='.' && *(next+1)=='*')) { if (*next=='*') next++; else next+=2; scan_factor(); if (!error) dotmultiply(hd,hd1); } else if (*next=='/' || (*next=='.' && *(next+1)=='/')) { if (*next=='/') next++; else next+=2; scan_factor(); if (!error) dotdivide(hd,hd1); } else if (*next=='.') { next++; scan_factor(); if (!error) multiply(hd,hd1); } else if (*next=='\\') { next++; newram=(char *)nextof(hd); scan_factor(); if (!error) msolve(hd); } else break; if (error) break; } } void scan_summe (void) { header *hd=(header *)newram,*hd1; scan_space(); scan_summand(); if (error) return; while (1) { hd1=(header *)newram; scan_space(); if (*next=='+') { next++; scan_summand(); if (!error) add(hd,hd1); } else if (*next=='-') { next++; scan_summand(); if (!error) subtract(hd,hd1); } else break; if (error) break; } } void scan_dp (void) { header *hd=(header *)newram,*hd1,*hd2; scan_space(); if (*next==':') { next++; new_command(c_allv); return; } scan_summe(); if (*next==':') /* a vector a:b:c or a:c */ { next++; hd1=(header *)newram; scan_summe(); if (error) return; scan_space(); if (*next==':') { next++; hd2=(header *)newram; scan_summe(); if (error) return; } else { hd2=hd1; hd1=new_real(1.0,""); } if (error) return; vectorize(hd,hd1,hd2); } } void scan_compare (void) { header *hd=(header *)newram; scan_space(); if (*next=='!') { next++; scan_compare(); mnot(hd); return; } scan_dp(); if (error) return; scan_space(); if (*next=='<') { if (*(next+1)!='<') { next++; newram=(char *)nextof(hd); if (*next=='=') { next++; scan_dp(); if (error) return; mlesseq(hd); return; } else if (*next=='>') { next++; scan_dp(); if (error) return; munequal(hd); return; } scan_dp(); if (error) return; mless(hd); } else { next+=2; newram=(char *)nextof(hd); if (*next=='=') { next++; scan_dp(); if (error) return; milesseq(hd); return; } scan_dp(); if (error) return; miless(hd); } } else if (*next=='>') { next++; newram=(char *)nextof(hd); if (*next=='=') { next++; scan_dp(); if (error) return; mgreatereq(hd); return; } scan_dp(); if (error) return; mgreater(hd); } else if (*next=='=' && *(next+1)=='=') { next+=2; newram=(char *)nextof(hd); scan_dp(); if (error) return; mequal(hd); } else if (*next=='~' && *(next+1)=='=' && *(next+2)!='=') { next+=2; newram=(char *)nextof(hd); scan_dp(); if (error) return; maboutequal(hd); } else if (*next=='!' && *(next+1)=='=') { next+=2; newram=(char *)nextof(hd); scan_dp(); if (error) return; munequal(hd); } else if (*next=='_') { next++; newram=(char *)nextof(hd); scan_compare(); if (error) return; mvconcat(hd); } else if (*next=='|' && *(next+1)!='|') { next++; newram=(char *)nextof(hd); scan_compare(); if (error) return; mhconcat(hd); } } void scan_andlogical (void) { header *hd=(header *)newram; scan_compare(); if (error) return; scan_space(); if (*next=='&' && *(next+1)=='&') { next+=2; newram=(char *)nextof(hd); scan_andlogical(); if (error) return; mand(hd); } } void scan_logical (void) { header *hd=(header *)newram; scan_andlogical(); if (error) return; scan_space(); if (*next=='|' && *(next+1)=='|') { next+=2; newram=(char *)nextof(hd); scan_logical(); if (error) return; mor(hd); } } header *scan (void) { header *result=(header *)newram; scan_space(); if (*next=='{') { next++; scan_logical(); if (error) return result; while (1) { scan_space(); if (*next=='}') { next++; return result; } if (*next!=',') { output("Error in {}!\n"); error=104; return result; } next++; scan_logical(); if (error) return result; } } else { scan_logical(); } return result; } header *scan_value (void) { header *result=(header *)newram,*hd,*hd1,*marker,*nextresult, *endresults; int oldnosubmref; unsigned long size,hd1size; scan_space(); if (*next=='{') { next++; oldnosubmref=nosubmref; nosubmref=1; scan_logical(); nosubmref=oldnosubmref; hd1=getvalue(result); if (error) return result; moveresult(result,hd1); while (1) { scan_space(); if (*next=='}') { next++; return result; } if (*next!=',') { output("Error in {}!\n"); error=104; return result; } next++; hd=(header *)newram; scan_value(); if (error) return result; hd1=getvalue(hd); if (error) return result; moveresult(hd,hd1); } } else { scan_logical(); marker=result; endresults=(header *)newram; while (marker=nextresult && (char *)hd1size); newram=(char *)nextof(marker); break; } } if (hd1>nextresult && (char *)hd1size; size=hd1size-marker->size; memmove((char *)nextresult+size,(char *)nextresult, newram-(char *)nextresult); if (hd1>nextresult && (char *)hd1 #include #include #include #include #include #include #include "spread.h" #include "output.h" #include "builtin.h" #include "udf.h" static double (*func) (double); static void funceval (double *x, double *y) /* evaluates the function stored in func with pointers. */ { *y=func(*x); } header *map1 (void f(double *, double *), void fc(double *, double *, double *, double *), header *hd) /***** map do the function elementwise to the value. te value may be real or complex! ******/ { double x,y; dims *d; header *hd1; double *m,*m1; long i,n; if (hd->type==s_real) { f(realof(hd),&x); return new_real(x,""); } else if (hd->type==s_matrix) { d=dimsof(hd); hd1=new_matrix(d->r,d->c,""); if (error) return new_string("Fehler",6,""); m=matrixof(hd); m1=matrixof(hd1); n=d->c*d->r; for (i=0; itype==s_complex) { fc(realof(hd),imagof(hd),&x,&y); return new_complex(x,y,""); } else if (fc && hd->type==s_cmatrix) { d=dimsof(hd); hd1=new_cmatrix(d->r,d->c,""); if (error) return new_string("Fehler",6,""); m=matrixof(hd); m1=matrixof(hd1); n=d->c*d->r; for (i=0; itype==s_interval) { f(aof(hd),bof(hd),&x,&y); return new_interval(x,y,""); } else if (hd->type==s_imatrix) { getmatrix(hd,&i,&j,&m); result=new_imatrix(i,j,""); if (error) goto stop; n=(long)i*j; mr=matrixof(result); for (k=0; ktype==s_interval) { f(aof(hd),bof(hd),&x); return new_real(x,""); } else if (hd->type==s_imatrix) { getmatrix(hd,&i,&j,&m); result=new_matrix(i,j,""); if (error) goto stop; n=(long)i*j; mr=matrixof(result); for (k=0; ktype==s_real) { f(realof(hd),&x); return new_real(x,""); } else if (hd->type==s_matrix) { d=dimsof(hd); hd1=new_matrix(d->r,d->c,""); if (error) return new_string("Fehler",6,""); m=matrixof(hd); m1=matrixof(hd1); n=d->c*d->r; for (i=0; itype==s_complex) { fc(realof(hd),imagof(hd),&x); return new_real(x,""); } else if (fc && hd->type==s_cmatrix) { d=dimsof(hd); hd1=new_matrix(d->r,d->c,""); if (error) return new_string("Fehler",6,""); m=matrixof(hd); m1=matrixof(hd1); n=d->c*d->r; for (i=0; i1 && r2>1 && (r1!=r2)) || (c1>1 && c2>1 && (c1!=c2))) { output("Cannot combine these matrices!\n"); error=1; return 0; } rr=r1; if (rr1) m1++; if (c2>1) m2++; m++; } if (r1==1) m1=l1; else if (c1==1) m1++; if (r2==1) m2=l2; else if (c2==1) m2++; } return result; case 1 : if (rr==1 && cr==1) { if (t1==0) fc(m1,&null,m2,m2+1,&x,&y); else if (t2==0) fc(m1,m1+1,m2,&null,&x,&y); else fc(m1,m1+1,m2,m2+1,&x,&y); return new_complex(x,y,""); } result=new_cmatrix(rr,cr,""); if (error) return 0; m=matrixof(result); for (r=0; r1) m1++; if (c2>1) m2+=2; } else if (t2==0) { fc(m1,m1+1,m2,&null,m,m+1); if (c1>1) m1+=2; if (c2>1) m2++; } else { fc(m1,m1+1,m2,m2+1,m,m+1); if (c1>1) m1+=2; if (c2>1) m2+=2; } if (error) break; m+=2; } if (r1==1) m1=l1; else if (c1==1) { if (t1==0) m1++; else m1+=2; } if (r2==1) m2=l2; else if (c2==1) { if (t2==0) m2++; else m2+=2; } } return result; case 2 : if (rr==1 && cr==1) { if (t1==0) fi(m1,m1,m2,m2+1,&x,&y); else if (t2==0) fi(m1,m1+1,m2,m2,&x,&y); else fi(m1,m1+1,m2,m2+1,&x,&y); return new_interval(x,y,""); } result=new_imatrix(rr,cr,""); if (error) return 0; m=matrixof(result); for (r=0; r1) m1++; if (c2>1) m2+=2; } else if (t2==0) { fi(m1,m1+1,m2,m2,m,m+1); if (c1>1) m1+=2; if (c2>1) m2++; } else { fi(m1,m1+1,m2,m2+1,m,m+1); if (c1>1) m1+=2; if (c2>1) m2+=2; } if (error) break; m+=2; } if (r1==1) m1=l1; else if (c1==1) { if (t1==0) m1++; else m1+=2; } if (r2==1) m2=l2; else if (c2==1) { if (t2==0) m2++; else m2+=2; } } return result; } return 0; } void spreadf2 (void f (double *, double *, double *), void fc (double *, double *, double *, double *, double *, double *), void fi (double *, double *, double *, double *, double *, double *), header *hd) { header *result,*st=hd,*hd1; hd1=next_param(st); if (!hd1 || error) return; if (next_param(hd1)) { output("Too many parameters for operator! (Multiple returns?)\n"); error=1; return; } hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; result=mapf2(f,fc,fi,hd,hd1); if (!error) moveresult(st,result); } header * mapf2r (void f (double *, double *, double *), void fc (double *, double *, double *, double *, double *), void fi (double *, double *, double *, double *, double *), header *hd1, header *hd2) { int t1,t2,t,r1,c1,r2,c2,r,c,rr,cr; /* means real */ double *m1,*m2,*m,x,null=0.0,*l1,*l2; header *result; if (isreal(hd1)) t1=0; else if (iscomplex(hd1)) t1=1; else if (isinterval(hd1)) t1=2; else { output("Illegal Argument.\n"); error=1; return 0; } if (isreal(hd2)) t2=0; else if (iscomplex(hd2)) t2=1; else if (isinterval(hd2)) t2=2; else { output("Illegal Argument.\n"); error=1; return 0; } if ((t1==1 && t2==2) || (t1==2 && t2==1) || (t1==0 && t2==0 && !f) || (!fc && (t1==1 || t2==1)) || (!fi && (t1==2 || t2==2))) { output("Cannot evaluate this operation.\n"); error=1; return 0; } getmatrix(hd1,&r1,&c1,&m1); l1=m1; getmatrix(hd2,&r2,&c2,&m2); l2=m2; if ((r1>1 && r2>1 && (r1!=r2)) || (c1>1 && c2>1 && (c1!=c2))) { output("Cannot combine these matrices!\n"); error=1; return 0; } rr=r1; if (rr1) m1++; if (c2>1) m2++; m++; } if (r1==1) m1=l1; else if (c1==1) m1++; if (r2==1) m2=l2; else if (c2==1) m2++; } return result; case 1 : if (rr==1 && cr==1) { if (t1==0) fc(m1,&null,m2,m2+1,&x); else if (t2==0) fc(m1,m1+1,m2,&null,&x); else fc(m1,m1+1,m2,m2+1,&x); return new_real(x,""); } result=new_matrix(rr,cr,""); if (error) return 0; m=matrixof(result); for (r=0; r1) m1++; if (c2>1) m2+=2; } else if (t2==0) { fc(m1,m1+1,m2,&null,m); if (c1>1) m1+=2; if (c2>1) m2++; } else { fc(m1,m1+1,m2,m2+1,m); if (c1>1) m1+=2; if (c2>1) m2+=2; } if (error) break; m++; } if (r1==1) m1=l1; else if (c1==1) { if (t1==0) m1++; else m1+=2; } if (r2==1) m2=l2; else if (c2==1) { if (t2==0) m2++; else m2+=2; } } return result; case 2 : if (rr==1 && cr==1) { if (t1==0) fi(m1,m1,m2,m2+1,&x); else if (t2==0) fi(m1,m1+1,m2,m2,&x); else fi(m1,m1+1,m2,m2+1,&x); return new_real(x,""); } result=new_matrix(rr,cr,""); if (error) return 0; m=matrixof(result); for (r=0; r1) m1++; if (c2>1) m2+=2; } else if (t2==0) { fi(m1,m1+1,m2,m2,m); if (c1>1) m1+=2; if (c2>1) m2++; } else { fi(m1,m1+1,m2,m2+1,m); if (c1>1) m1+=2; if (c2>1) m2+=2; } if (error) break; m++; } if (r1==1) m1=l1; else if (c1==1) { if (t1==0) m1++; else m1+=2; } if (r2==1) m2=l2; else if (c2==1) { if (t2==0) m2++; else m2+=2; } } return result; } return 0; } void spreadf2r (void f (double *, double *, double *), void fc (double *, double *, double *, double *, double *), void fi (double *, double *, double *, double *, double *), header *hd) { header *result,*st=hd,*hd1; hd1=next_param(st); if (!hd1 || error) return; if (next_param(hd1)) { output("Too many parameters for operator! (Multiple returns?)\n"); error=1; return; } hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; result=mapf2r(f,fc,fi,hd,hd1); if (!error) moveresult(st,result); } void spread1 (double f (double), void fc (double *, double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; func=f; result=map1(funceval,fc,hd); if (!error) moveresult(st,result); } void spread1i (double f (double), void fc (double *, double *, double *, double *), void fi (double *, double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; func=f; if (isinterval(hd)) result=map1i(fi,hd); else result=map1(funceval,fc,hd); if (!error) moveresult(st,result); } void spread1r (double f (double), void fc (double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; func=f; result=map1r(funceval,fc,hd); if (!error) moveresult(st,result); } void spread1ir (double f (double), void fc (double *, double *, double *), void fi (double *, double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; func=f; if (isinterval(hd)) result=map1i(fi,hd); else result=map1r(funceval,fc,hd); if (!error) moveresult(st,result); } void spreadir ( void fi (double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; result=map1ir(fi,hd); if (!error) moveresult(st,result); } void spreadir1 ( void f (double *, double *), void fi (double *, double *, double *), header *hd) { header *result,*st=hd; hd=getvalue(hd); if (error) return; if (isinterval(hd)) result=map1ir(fi,hd); else result=map1(f,0,hd); if (!error) moveresult(st,result); } void mmap1 (header *hd) /* map a function to all matrix arguments (of mixed type) */ { header *st=hd,*result,*hds[16],*hq,*hdudf=0; int i,n=0,t[16],row[16],col[16],rescol=1,resrow=1,r,c,mt=0; int foundudf=0; double *m[16],*mr=0; if (!hd || hd==(header *)newram) { output("Map needs arguments.\n"); error=1; return; } hq=nextof(hd); while (n<16) { if (hq>=(header *)newram) break; hds[n++]=hq; hq=nextof(hq); } if (n<1 || n>=16) wrong_arg_in("map"); hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Map needs a string as first argument.\n"); error=1; return; } for (i=0; itype) { case s_real : row[i]=1; col[i]=1; t[i]=1; m[i]=realof(hds[i]); break; case s_complex : row[i]=1; col[i]=1; t[i]=2; m[i]=realof(hds[i]); break; case s_interval : row[i]=1; col[i]=1; t[i]=3; m[i]=realof(hds[i]); break; case s_matrix : t[i]=1; mat : row[i]=dimsof(hds[i])->r; if (row[i]!=1 && resrow!=1 && resrow!=row[i]) { output("Rows do not match in map!\n"); error=1; return; } if (row[i]!=1) resrow=row[i]; col[i]=dimsof(hds[i])->c; if (col[i]!=1 && rescol!=1 && rescol!=col[i]) { output("Colums do not match in map!\n"); error=1; return; } if (col[i]!=1) rescol=col[i]; m[i]=matrixof(hds[i]); break; case s_cmatrix : t[i]=2; goto mat; case s_imatrix : t[i]=3; goto mat; default : wrong_arg_in("map"); } } result=0; for (r=0; rtype) { case s_real : result=new_matrix(resrow,rescol,""); if (error) return; mr=matrixof(result); mt=1; *mr++=*realof(hq); break; case s_complex : result=new_cmatrix(resrow,rescol,""); if (error) return; mr=matrixof(result); mt=2; *mr++=*realof(hq); *mr++=*(realof(hq)+1); break; case s_interval : result=new_imatrix(resrow,rescol,""); if (error) return; mr=matrixof(result); mt=3; *mr++=*realof(hq); *mr++=*(realof(hq)+1); break; default : output("Illegal function result in map.\n"); error=1; return; } } else { switch (hq->type) { case s_real : if (mt!=1) goto err1; *mr++=*realof(hq); break; case s_complex : if (mt!=2) goto err1; *mr++=*realof(hq); *mr++=*(realof(hq)+1); break; case s_interval : if (mt!=3) goto err1; *mr++=*realof(hq); *mr++=*(realof(hq)+1); break; default : err1 : output("Illegal function result in map.\n"); error=1; return; } newram=(char *)hq; } for (i=0; i1) { if (t[i]==1) m[i]++; else m[i]+=2; } } for (i=0; i #include #include #include #include "stack.h" #include "output.h" #include "builtin.h" #include "udf.h" #include "mainloop.h" static double fevalreal (char *fname, double x, int argn, header *args, long size) { char *ram=newram; header *arg,*hdudf; arg=new_real(x,""); if (error) return 0; if (size>0) { memmove(nextof(arg),args,size); newram+=size; } if (!exec_builtin(fname,1,arg)) { hdudf=searchudf(fname); if (error || !hdudf) { error=1; newram=ram; return 0; } interpret_udf(hdudf,arg,1+argn,0); } newram=ram; if (arg->type!=s_real) { error=1; return 0; } return *realof(arg); } #define CGOLD 0.3819660112501051 #undef SHFT #define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d); #undef SIGN #define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) static double brent (double ax, double bx, double cx, char *fname, int argn, header *args, long size, double tol) { int iter; double a,b,d=1,etemp,fu,fv,fw,fx,p,q,r,tol1,tol2,u,v,w,x,xm; double e=0.0; a=(ax < cx ? ax : cx); b=(ax > cx ? ax : cx); x=w=v=bx; fw=fv=fx=fevalreal(fname,x,argn,args,size); for (iter=1;iter<=1000;iter++) { if (test_key()==escape) { error=1; return 0; } xm=0.5*(a+b); tol2=2.0*(tol1=tol*fabs(x)+epsilon); if (fabs(x-xm) <= (tol2-0.5*(b-a))) { return x; } if (fabs(e) > tol1) { r=(x-w)*(fx-fv); q=(x-v)*(fx-fw); p=(x-v)*q-(x-w)*r; q=2.0*(q-r); if (q > 0.0) p = -p; q=fabs(q); etemp=e; e=d; if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x)) d=CGOLD*(e=(x >= xm ? a-x : b-x)); else { d=p/q; u=x+d; if (u-a < tol2 || b-u < tol2) d=SIGN(tol1,xm-x); } } else { d=CGOLD*(e=(x >= xm ? a-x : b-x)); } u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d)); fu=fevalreal(fname,u,argn,args,size); if (fu <= fx) { if (u >= x) a=x; else b=x; SHFT(v,w,x,u) SHFT(fv,fw,fx,fu) } else { if (u < x) a=u; else b=u; if (fu <= fw || w == x) { v=w; w=u; fv=fw; fw=fu; } else if (fu <= fv || v == x || v == w) { v=u; fv=fu; } } } output("Too many iterations in brent\n"); error=1; return x; } void mbrent (header *hd) { header *st=hd,*hd1,*hd2,*hd3,*args,*h,*result; double x,d,x1,x2,y,y1,y2; long size; int argn; char *fname; if ((header *)newram<=hd) wrong_arg_in("brent"); hd1=nextof(hd); if ((header *)newram<=hd1) wrong_arg_in("brent"); hd2=nextof(hd1); if ((header *)newram<=hd2) wrong_arg_in("brent"); hd3=nextof(hd2); if ((header *)newram<=hd3) wrong_arg_in("brent"); args=nextof(hd3); size=newram-(char *)args; argn=0; if (size>0) { h=args; while (h<(header *)newram) { argn++; h=nextof(h); } } hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; hd2=getvalue(hd2); if (error) return; hd3=getvalue(hd3); if (error) return; if (hd->type!=s_string || hd1->type!=s_real || hd2->type!=s_real || hd3->type!=s_real) wrong_arg_in("brent"); x=*realof(hd1); d=*realof(hd2); if (d<=epsilon) d=epsilon; fname=stringof(hd); y=fevalreal(fname,x,argn,args,size); if (error) return; x1=x+d; y1=fevalreal(fname,x1,argn,args,size); if (error) return; if (y1type!=s_real) { error=1; return 0; } return *realof(arg); } #define NMAX 5000 #define SWAP(a,b) {swap=(a);(a)=(b);(b)=swap;} static double *ptry=0; static double amotry(double **p, double y[], double psum[], int ndim, char *fname, int argn, header *args, long size, int ihi, double fac) { int j; double fac1,fac2,ytry; fac1=(1.0-fac)/ndim; fac2=fac1-fac; for (j=0;jy[1] ? (inhi=1,0) : (inhi=0,1); for (i=0;i y[ihi]) { inhi=ihi; ihi=i; } else if (y[i] > y[inhi] && i != ihi) inhi=i; } rtol=2.0*fabs(y[ihi]-y[ilo]); if (rtol < ftol) { SWAP(y[0],y[ilo]) for (i=0;i= NMAX) { output("Two many iterations in nelder\n"); error=1; goto stop; } nfunk +=2; ytry=amotry(p,y,psum,ndim,fname,argn,args,size,ihi,-1.0); if (error) return; if (ytry <= y[ilo]) { amotry(p,y,psum,ndim,fname,argn,args,size,ihi,2.0); if (error) goto stop; } else if (ytry >= y[inhi]) { ysave=y[ihi]; ytry=amotry(p,y,psum,ndim,fname,argn,args,size,ihi,0.5); if (error) goto stop; if (ytry >= ysave) { for (i=0;i0) { h=args; while (h<(header *)newram) { argn++; h=nextof(h); } } hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; hd2=getvalue(hd2); if (error) return; hd3=getvalue(hd3); if (error) return; if (hd->type!=s_string || hd1->type!=s_matrix || hd2->type!=s_real || hd3->type!=s_real || dimsof(hd1)->r!=1 || dimsof(hd1)->c<2) wrong_arg_in("nelder"); n=dimsof(hd1)->c; m=matrixof(hd1); p=(double **)malloc((n+1)*sizeof(double *)); for (i=0; i<=n; i++) p[i]=(double *)malloc(n*sizeof(double)); y=(double *)malloc((n+1)*sizeof(double)); ptry=(double *)malloc(n*sizeof(double)); fname=stringof(hd); for (j=0; j1) { if (argx->type!=s_matrix || dimsof(argx)->r!=1 || dimsof(argx)->c!=n) { error=1; return; } m=matrixof(argx); } else { if (argx->type!=s_real) { error=1; return; } m=realof(argx); } for (i=0; i0) { h=args; while (h<(header *)newram) { argn++; h=nextof(h); } } hd=getvalue(hd); if (error) return; hdx1=getvalue(hdx1); if (error) return; hdx2=getvalue(hdx2); if (error) return; hdn=getvalue(hdn); if (error) return; hdy=getvalue(hdy); if (error) return; if (hd->type!=s_string || hdx1->type!=s_real || hdx2->type!=s_real || ((hdy->type!=s_matrix || dimsof(hdy)->r!=1) && hdy->type!=s_real) || hdn->type!=s_real) wrong_arg_in("runge1"); if (hdy->type!=s_real) { my=matrixof(hdy); n=dimsof(hdy)->c; } else { my=realof(hdy); n=1; } if (n<1) wrong_arg_in("runge1"); steps=(int)*realof(hdn); if (steps<1) steps=1; fname=stringof(hd); y=(double *)malloc(n*sizeof(double)); for (i=0; itype==s_matrix) { result=new_matrix(1,n,""); if (error) goto stop; m=matrixof(result); for (i=0; ib) return a; else return b; } static void rkck(double y[], double dydx[], int n, double x, double h, double yout[], double yerr[], char *fname, int argn, header *args, long size) { double *ytemp=ytemp1; int i; static double a2=0.2,a3=0.3,a4=0.6,a5=1.0,a6=0.875,b21=0.2, b31=3.0/40.0,b32=9.0/40.0,b41=0.3,b42 = -0.9,b43=1.2, b51 = -11.0/54.0, b52=2.5,b53 = -70.0/27.0,b54=35.0/27.0, b61=1631.0/55296.0,b62=175.0/512.0,b63=575.0/13824.0, b64=44275.0/110592.0,b65=253.0/4096.0,c1=37.0/378.0, c3=250.0/621.0,c4=125.0/594.0,c6=512.0/1771.0, dc5 = -277.0/14336.0; double dc1=c1-2825.0/27648.0,dc3=c3-18575.0/48384.0, dc4=c4-13525.0/55296.0,dc6=c6-0.25; for (i=0; i 1.0) { h=SAFETY*h*pow(errmax,PSHRNK); if (h < 0.1*h) h *= 0.1; xnew=(*x)+h; if (xnew == *x) { output("Stepsize underflow in runge2\n"); error=1; return; } } else { if (errmax > ERRCON) *hnext=SAFETY*h*pow(errmax,PGROW); else *hnext=5.0*h; *x += (*hdid=h); for (i=0; i 0.0) h=b-x; rkqs(y,dydx,n,&x,h,eps,yscal,&hdid,&hnext, fname,argn,args,size); if ((x-b)*(b-a) >= -fabs(hnext*0.0001)) { for (i=0; i0) { h=args; while (h<(header *)newram) { argn++; h=nextof(h); } } hd=getvalue(hd); if (error) return; hdx1=getvalue(hdx1); if (error) return; hdx2=getvalue(hdx2); if (error) return; hdeps=getvalue(hdeps); if (error) return; hdstep=getvalue(hdstep); if (error) return; hdy=getvalue(hdy); if (error) return; if (hd->type!=s_string || hdx1->type!=s_real || hdx2->type!=s_real || ((hdy->type!=s_matrix || dimsof(hdy)->r!=1) && hdy->type!=s_real) || hdeps->type!=s_real || hdstep->type!=s_real) wrong_arg_in("runge2"); if (hdy->type!=s_real) { my=matrixof(hdy); n=dimsof(hdy)->c; } else { my=realof(hdy); n=1; } if (n<1) wrong_arg_in("runge2"); fname=stringof(hd); y=(double *)malloc(n*sizeof(double)); for (i=0; itype==s_matrix) { result=new_matrix(1,n,""); if (error) goto stop; m=matrixof(result); for (i=0; i #include #include #include #include "stack.h" #include "output.h" #include "command.h" #include "builtin.h" #include "interval.h" #include "funcs.h" #include "udf.h" #include "express.h" #include "mainloop.h" extern int nosubmref; /* * stack variables */ char *ramstart,*ramend,*udfend,*startlocal,*endlocal,*newram, *varstart,*udframend,*startglobal,*endglobal; /* functions that manipulate the stack */ #define superalign(n) ((((n)-1)/ALIGNMENT+1)*ALIGNMENT) int xor (char *n) /***** xor compute a hashcode for the name n. *****/ { int r=0; while (*n) r^=*n++; return r; } static void *make_header (stacktyp type, unsigned long size, char *name) /***** make_header pushes a new element on the stack. return the position after the header. ******/ { header *hd; char *erg; size=(((size-1)/ALIGNMENT)+1)*ALIGNMENT; hd=(header *)(newram); if (!freeram(size)) { output("Stack overflow!\n"); error=2; hd->size=sizeof(hd); hd->type=(stacktyp)1000; hd->flags=0; strcpy(hd->name,""); hd->xor=0; return 0; } hd->size=size; hd->type=type; hd->flags=0; if (*name) { strcpy(hd->name,name); hd->xor=xor(name); } else { *(hd->name)=0; hd->xor=0; } erg=newram+sizeof(header); newram+=size; return erg; } header *new_matrix (int rows, int columns, char *name) /***** new_matrix pops a new matrix on the stack. *****/ { unsigned long size; dims *d; header *hd=(header *)newram; size=matrixsize(rows,columns); d=(dims *)make_header(s_matrix,size,name); if (d) { d->c=columns; d->r=rows; } return hd; } header *new_cmatrix (int rows, int columns, char *name) /***** new_matrix pops a new matrix on the stack. *****/ { unsigned long size; dims *d; header *hd=(header *)newram; size=matrixsize(rows,2*columns); d=(dims *)make_header(s_cmatrix,size,name); if (d) { d->c=columns; d->r=rows; } return hd; } header *new_imatrix (int rows, int columns, char *name) /***** new_matrix pops a new interval matrix on the stack. *****/ { unsigned long size; dims *d; header *hd=(header *)newram; size=matrixsize(rows,2*columns); d=(dims *)make_header(s_imatrix,size,name); if (d) { d->c=columns; d->r=rows; } return hd; } header *new_command (int no) /***** new_command pops a command on stack. *****/ { unsigned long size; int *d; header *hd=(header *)newram; size=sizeof(header)+sizeof(int); d=(int *)make_header(s_command,size,""); if (d) *d=no; return hd; } header *new_real (double x, char *name) /***** new real pops a double on stack. *****/ { unsigned long size; double *d; header *hd=(header *)newram; size=sizeof(header)+sizeof(double); d=(double *)make_header(s_real,size,name); if (d) *d=x; return hd; } header *new_string (char *s, unsigned long length, char *name) /***** new real pops a string on stack. *****/ { unsigned long size; char *d; header *hd=(header *)newram; size=sizeof(header)+((int)(length+1)/ALIGNMENT+1)*ALIGNMENT; d=(char *)make_header(s_string,size,name); if (d) strncpy(d,s,length); d[length]=0; return hd; } header *new_udf (char *name) /***** new real pops a udf on stack. *****/ { unsigned long size; unsigned long *d; header *hd=(header *)newram; size=sizeof(header)+sizeof(inttyp)+ALIGNMENT; d=(unsigned long *)make_header(s_udf,size,name); if (d) { *d=sizeof(header)+sizeof(unsigned long); *((char *)(d+1))=0; } return hd; } header *new_complex (double x, double y, char *name) /***** new real pushes a complex on stack. *****/ { unsigned long size; double *d; header *hd=(header *)newram; size=sizeof(header)+2*sizeof(double); d=(double *)make_header(s_complex,size,name); if (d) { *d=x; *(d+1)=y; } return hd; } header *new_interval (double x, double y, char *name) { unsigned long size; double *d; header *hd=(header *)newram; size=sizeof(header)+2*sizeof(double); d=(double *)make_header(s_interval,size,name); if (d) { *d=x; *(d+1)=y; } return hd; } header *new_reference (header *ref, char *name) { unsigned long size; header **d; header *hd=(header *)newram; size=sizeof(header)+sizeof(header *); d=(header **)make_header(s_reference,size,name); if (d) *d=ref; return hd; } header *new_subm (header *var, long l, char *name) /* makes a new submatrix, which is a single element */ { unsigned long size; header **d,*hd=(header *)newram; dims *dim; int *n,r,c; size=sizeof(header)+sizeof(header *)+sizeof(dims)+2*sizeof(int); d=(header **)make_header(s_submatrix,size,name); if (d) *d=var; else return hd; dim=(dims *)(d+1); dim->r=1; dim->c=1; n=(int *)(dim+1); c=dimsof(var)->c; if (c==0 || dimsof(var)->r==0) { output("Matrix is empty!\n"); error=1031; return hd; } else r=(int)(l/c); *n++=r; *n=(int)(l-(long)r*c-1); return hd; } header *new_csubm (header *var, long l, char *name) /* makes a new submatrix, which is a single element */ { unsigned long size; header **d,*hd=(header *)newram; dims *dim; int *n,r,c; size=sizeof(header)+sizeof(header *)+ sizeof(dims)+2*sizeof(int); d=(header **)make_header(s_csubmatrix,size,name); if (d) *d=var; else return hd; dim=(dims *)(d+1); dim->r=1; dim->c=1; n=(int *)(dim+1); c=dimsof(var)->c; if (c==0 || dimsof(var)->r==0) { output("Matrix is empty!\n"); error=1031; return hd; } else r=(int)(l/c); *n++=r; *n=(int)(l-r*c-1); return hd; } header *new_isubm (header *var, long l, char *name) /* makes a new submatrix, which is a single element */ { unsigned long size; header **d,*hd=(header *)newram; dims *dim; int *n,r,c; size=sizeof(header)+sizeof(header *)+ sizeof(dims)+2*sizeof(int); d=(header **)make_header(s_isubmatrix,size,name); if (d) *d=var; else return hd; dim=(dims *)(d+1); dim->r=1; dim->c=1; n=(int *)(dim+1); c=dimsof(var)->c; if (c==0 || dimsof(var)->r==0) { output("Matrix is empty!\n"); error=1031; return hd; } else r=(int)(l/c); *n++=r; *n=(int)(l-r*c-1); return hd; } static header *hnew_submatrix (header *var, header *rows, header *cols, char *name, int type) { unsigned long size; header **d; double *mr=0,*mc=0,x,*mvar; dims *dim; int c,r,*n,i,c0,r0,cvar,rvar,allc=0,allr=0; header *hd=(header *)newram; getmatrix(var,&rvar,&cvar,&mvar); if (rows->type==s_matrix) { if (dimsof(rows)->r==1) r=dimsof(rows)->c; else if (dimsof(rows)->c==1) r=dimsof(rows)->r; else { output("Illegal index!\n"); error=41; return 0; } mr=matrixof(rows); } else if (rows->type==s_real) { r=1; mr=realof(rows); } else if (rows->type==s_command && *commandof(rows)==c_allv) { allr=1; r=rvar; } else { output("Illegal index!\n"); error=41; return 0; } if (cols->type==s_matrix) { if (dimsof(cols)->r==1) c=dimsof(cols)->c; else if (dimsof(cols)->c==1) c=dimsof(cols)->r; else { output("Illegal index!\n"); error=41; return 0; } mc=matrixof(cols); } else if (cols->type==s_real) { c=1; mc=realof(cols); } else if (cols->type==s_command && *commandof(cols)==c_allv) { allc=1; c=cvar; } else { output("Illegal index!\n"); error=41; return 0; } size=sizeof(header)+sizeof(header *)+ sizeof(dims)+((long)r+c)*sizeof(int); d=(header **)make_header((stacktyp)type,size,name); if (d) *d=var; else return hd; dim = (dims *)(d+1); n=(int *)(dim+1); r0=0; if (allr) { for (i=0; i=rvar)) ) { *n++=(int)x; r0++; } } c0=0; if (allc) { for (i=0; i=cvar))) { *n++=(int)x; c0++; } } dim->r=r0; dim->c=c0; size=(char *)n-(char *)hd; size=((size-1)/ALIGNMENT+1)*ALIGNMENT; newram=(char *)hd+size; hd->size=size; return hd; } static header *built_smatrix (header *var, header *rows, header *cols) /***** built_smatrix built a submatrix from the matrix hd on the stack. *****/ { double *mr=0,*mc=0,*mvar,*m; int n,c,r,c0,r0,i,j,cvar,rvar,allc=0,allr=0,*pr,*pc,*nc,*nr; header *hd; char *ram; long size; getmatrix(var,&rvar,&cvar,&mvar); if (rows->type==s_matrix) { if (dimsof(rows)->r==1) r=dimsof(rows)->c; else if (dimsof(rows)->c==1) r=dimsof(rows)->r; else { output("Illegal index!\n"); error=41; return 0; } mr=matrixof(rows); } else if (rows->type==s_real) { r=1; mr=realof(rows); } else if (rows->type==s_command && *commandof(rows)==c_allv) { allr=1; r=rvar; } else { output("Illegal index!\n"); error=41; return 0; } if (cols->type==s_matrix) { if (dimsof(cols)->r==1) c=dimsof(cols)->c; else if (dimsof(cols)->c==1) c=dimsof(cols)->r; else { output("Illegal index!\n"); error=41; return 0; } mc=matrixof(cols); } else if (cols->type==s_real) { c=1; mc=realof(cols); } else if (cols->type==s_command && *commandof(cols)==c_allv) { allc=1; c=cvar; } else { output("Illegal index!\n"); error=41; return 0; } ram=newram; size=superalign(((long)c+(long)r)*sizeof(int)); if (!freeram(size)) { output("Out of memory!\n"); error=710; return 0; } nr=pr=(int *)ram; nc=pc=pr+r; newram=ram+size; c0=0; r0=0; if (allc) { for (i=0; i=0 && n=0 && ntype==s_matrix) { if (dimsof(rows)->r==1) r=dimsof(rows)->c; else if (dimsof(rows)->c==1) r=dimsof(rows)->r; else { output("Illegal index!\n"); error=41; return 0; } mr=matrixof(rows); } else if (rows->type==s_real) { r=1; mr=realof(rows); } else if (rows->type==s_command && *commandof(rows)==c_allv) { allr=1; r=rvar; } else { output("Illegal index!\n"); error=41; return 0; } if (cols->type==s_matrix) { if (dimsof(cols)->r==1) c=dimsof(cols)->c; else if (dimsof(cols)->c==1) c=dimsof(cols)->r; else { output("Illegal index!\n"); error=41; return 0; } mc=matrixof(cols); } else if (cols->type==s_real) { c=1; mc=realof(cols); } else if (cols->type==s_command && *commandof(cols)==c_allv) { allc=1; c=cvar; } else { output("Illegal index!\n"); error=41; return 0; } ram=newram; size=superalign(((long)c+(long)r)*sizeof(int)); if (!freeram(size)) { output("Out of memory!\n"); error=710; return 0; } nr=pr=(int *)ram; nc=pc=pr+r; newram=ram+size; c0=0; r0=0; if (allc) { for (i=0; i=0 && n=0 && ntype==s_matrix) { if (dimsof(rows)->r==1) r=dimsof(rows)->c; else if (dimsof(rows)->c==1) r=dimsof(rows)->r; else { output("Illegal index!\n"); error=41; return 0; } mr=matrixof(rows); } else if (rows->type==s_real) { r=1; mr=realof(rows); } else if (rows->type==s_command && *commandof(rows)==c_allv) { allr=1; r=rvar; } else { output("Illegal index!\n"); error=41; return 0; } if (cols->type==s_matrix) { if (dimsof(cols)->r==1) c=dimsof(cols)->c; else if (dimsof(cols)->c==1) c=dimsof(cols)->r; else { output("Illegal index!\n"); error=41; return 0; } mc=matrixof(cols); } else if (cols->type==s_real) { c=1; mc=realof(cols); } else if (cols->type==s_command && *commandof(cols)==c_allv) { allc=1; c=cvar; } else { output("Illegal index!\n"); error=41; return 0; } ram=newram; size=superalign(((long)c+(long)r)*sizeof(int)); if (!freeram(size)) { output("Out of memory!\n"); error=710; return 0; } nr=pr=(int *)ram; nc=pc=pr+r; newram=ram+size; c0=0; r0=0; if (allc) { for (i=0; i=0 && n=0 && ntype==s_real) { size=sizeof(header)+2*sizeof(double); nextarg=nextof(old); if (!freeram((size-old->size))) { output("Memory overflow!\n"); error=180; return; } if (newram>(char *)nextarg) memmove((char *)old+size,(char *)nextarg, newram-(char *)nextarg); newram+=size-old->size; *(old->name)=0; old->size=size; old->type=s_complex; *realof(old)=*realof(hd); *imagof(old)=0.0; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); size=cmatrixsize(r,c); nextarg=nextof(old); if (!freeram(size-old->size)) { output("Memory overflow!\n"); error=180; return; } if (newram>(char *)nextarg) memmove((char *)old+size,(char *)nextarg, newram-(char *)nextarg); newram+=size-old->size; *(old->name)=0; old->size=size; old->type=s_cmatrix; dimsof(old)->r=r; dimsof(old)->c=c; m1=matrixof(old); for (i=r-1; i>=0; i--) for (j=c-1; j>=0; j--) { *cmat(m1,c,i,j)=*mat(m,c,i,j); *(cmat(m1,c,i,j)+1)=0.0; } } else wrong_arg(); } void getmatrix (header *hd, int *r, int *c, double **m) /***** getmatrix get rows and columns from a matrix. *****/ { dims *d; if (hd->type==s_real || hd->type==s_complex || hd->type==s_interval) { *r=*c=1; *m=realof(hd); } else if (hd->type==s_matrix || hd->type==s_cmatrix || hd->type==s_imatrix) { d=dimsof(hd); *m=matrixof(hd); *r=d->r; *c=d->c; } else error=1; } #ifdef DLL int exec_dll (char *name, int n, header *hd); #endif void get_element (int nargs, header *var, header *hd) /***** get_elements get the element of the matrix. *****/ { header *st=hd,*result,*hd1; var=getvalue(var); if (error) return; if (var->type==s_string) /* interpret the string as a function */ { hd1=searchudf(stringof(var)); if (hd1) interpret_udf(hd1,hd,nargs,0); else if (exec_builtin(stringof(var),nargs,hd)); #ifdef DLL else if (exec_dll(stringof(var),nargs,hd)); #endif else { output1("%s is no function name!\n",stringof(var)); error=2020; return; } return; } hd=getvalue(hd); if (error) return; if (nargs<1 || nargs>2) { error=30; output("Illegal matrix reference!\n"); return; } if (nargs==2) { hd1=getvalue(next_param(st)); if (error) return; } else { if (dimsof(var)->r==1) { hd1=hd; hd=new_real(1.0,""); } else hd1=new_command(c_allv); if (error) return; } if (var->type==s_matrix || var->type==s_real) { result=new_submatrix(var,hd,hd1,""); } else if (var->type==s_cmatrix || var->type==s_complex) { result=new_csubmatrix(var,hd,hd1,""); } else if (var->type==s_imatrix || var->type==s_interval) { result=new_isubmatrix(var,hd,hd1,""); } else { error=31; output1("Not a matrix %s!\n",var->name); return; } if (error) return; moveresult(st,result); } void get_element1 (char *name, header *hd) /* get an element of a matrix, referenced by *realof(hd), where the matrix is dentified with a vector of same length */ { header *st=hd,*result,*var; long n,l; int r,c; double *m; hd=getvalue(hd); var=searchvar(name); if (!var) { output1("%s not a variable!\n",name); error=1012; return; } var=getvalue(var); if (error) return; if (hd->type!=s_real) { output("Index must be a number!\n"); error=1013; return; } if (error) return; if (var->type==s_real) { result=new_reference(var,""); } else if (var->type==s_complex) { result=new_reference(var,""); } else if (var->type==s_matrix) { getmatrix(var,&r,&c,&m); l=(long)(*realof(hd)); n=(long)r*c; if (l>n) l=n; if (l<1) l=1; if (nosubmref) result=new_real(*(m+l-1),""); else result=new_subm(var,l,""); } else if (var->type==s_cmatrix) { getmatrix(var,&r,&c,&m); l=(long)(*realof(hd)); n=(long)r*c; if (n==0) { output("Matrix is empty!\n"); error=1030; return; } if (l>n) l=n; if (l<1) l=1; if (nosubmref) { m+=(long)2*(l-1); result=new_complex(*m,*(m+1),""); } else result=new_csubm(var,l,""); } else if (var->type==s_imatrix) { getmatrix(var,&r,&c,&m); l=(long)(*realof(hd)); n=(long)r*c; if (n==0) { output("Matrix is empty!\n"); error=1030; return; } if (l>n) l=n; if (l<1) l=1; if (nosubmref) { m+=(long)2*(l-1); result=new_interval(*m,*(m+1),""); } else result=new_isubm(var,l,""); } else { output1("%s not a variable of proper type for {}!\n", name); error=1011; return; } moveresult(st,result); } header *searchvar (char *name) /***** searchvar search a local variable, named "name". return 0, if not found. *****/ { int r; header *hd=(header *)startlocal; r=xor(name); while ((char *)hdxor && !strcmp(hd->name,name)) return hd; hd=nextof(hd); } if (startglobal!=startlocal && searchglobal) { hd=(header *)startglobal; while ((char *)hdxor && !strcmp(hd->name,name)) return hd; hd=nextof(hd); } } return 0; } header *getvalue (header *hd) /***** getvalue get an actual value of a reference. *****/ { header *old=hd,*mhd,*result; dims *d; double *m,*mr,*m1,*m2,*m3; int r,c,*rind,*cind,*cind1,i,j; while (hd && hd->type==s_reference) hd=referenceof(hd); if (!hd) { mhd=(header *)newram; if (exec_builtin(old->name,0,mhd)) { return mhd; } hd=searchudf(old->name); if (hd) { interpret_udf(hd,mhd,0,0); return mhd; } output1("Variable %s not defined!\n",old->name); error=10; return new_string("Fehler",6,""); } if (hd->type==s_submatrix) { mhd=submrefof(hd); d=submdimsof(hd); rind=rowsof(hd); cind=colsof(hd); getmatrix(mhd,&r,&c,&m); if (d->r==1 && d->c==1) return new_real(*mat(m,c,*rind,*cind),""); result=new_matrix(d->r,d->c,""); mr=matrixof(result); for (i=0; ir; i++) { cind1=cind; m1=mat(mr,d->c,i,0); m2=mat(m,c,*rind,0); for (j=0; jc; j++) { m1[j]=m2[*cind1]; cind1++; } rind++; } return result; } if (hd->type==s_csubmatrix) { mhd=submrefof(hd); d=submdimsof(hd); rind=rowsof(hd); cind=colsof(hd); getmatrix(mhd,&r,&c,&m); if (d->r==1 && d->c==1) { m=cmat(m,c,*rind,*cind); return new_complex(*m,*(m+1),""); } result=new_cmatrix(d->r,d->c,""); mr=matrixof(result); for (i=0; ir; i++) { cind1=cind; m1=cmat(mr,d->c,i,0); m2=cmat(m,c,*rind,0); for (j=0; jc; j++) { m3=m2+(long)2*(*cind1); *m1++=*m3++; *m1++=*m3; cind1++; } rind++; } return result; } if (hd->type==s_isubmatrix) { mhd=submrefof(hd); d=submdimsof(hd); rind=rowsof(hd); cind=colsof(hd); getmatrix(mhd,&r,&c,&m); if (d->r==1 && d->c==1) { m=cmat(m,c,*rind,*cind); return new_interval(*m,*(m+1),""); } result=new_imatrix(d->r,d->c,""); mr=matrixof(result); for (i=0; ir; i++) { cind1=cind; m1=imat(mr,d->c,i,0); m2=imat(m,c,*rind,0); for (j=0; jc; j++) { m3=m2+(long)2*(*cind1); *m1++=*m3++; *m1++=*m3; cind1++; } rind++; } return result; } if (hd->type==s_matrix && dimsof(hd)->c==1 && dimsof(hd)->r==1) { return new_real(*matrixof(hd),""); } if (hd->type==s_cmatrix && dimsof(hd)->c==1 && dimsof(hd)->r==1) { return new_complex(*matrixof(hd),*(matrixof(hd)+1),""); } return hd; } header *getvariable (header *hd) /***** getvariable get an actual variable of a reference. *****/ { header *hd1; while (hd->type==s_reference) { if ((hd1=referenceof(hd))!=0) hd=hd1; else break; } return hd; } header *getvariablesub (header *hd) /***** getvariable get an actual variable of a reference. *****/ { header *old=hd; while (hd && hd->type==s_reference) hd=referenceof(hd); if (!hd) { output1("Variable %s not defined!\n",old->name); error=10; return new_string("Fehler",6,""); } if (hd->type==s_submatrix || hd->type==s_csubmatrix || hd->type==s_isubmatrix) { hd=submrefof(hd); } return hd; } void kill_local (char *name) /***** kill_local kill a loal variable name, if there is one. *****/ { unsigned long size,rest; header *hd=(header *)startlocal; while ((char *)hdname,name)) /* found! */ { size=hd->size; rest=newram-(char *)hd-size; if (size) memmove((char *)hd,(char *)hd+size,rest); endlocal-=size; newram-=size; return; } hd=(header *)((char *)hd+hd->size); } } header *next_param (header *hd) /***** next_param get the next value on stack, if there is one *****/ { hd=(header *)((char *)hd+hd->size); if ((char *)hd>=newram) return 0; else return hd; } void equal_params_3 (header **hd1, header **hd2, header **hd3) /* Make parameter values of equal type (real, complex, interval) */ { header *h1,*h2,*h3; h1=getvariablesub(*hd1); if (error) return; h2=getvariablesub(*hd2); if (error) return; h3=getvariablesub(*hd3); if (error) return; if (iscomplex(h1) || iscomplex(h2) || iscomplex (h3)) { make_complex(*hd1); *hd2=nextof(*hd1); make_complex(*hd2); *hd3=nextof(*hd2); make_complex(*hd3); } else if (isinterval(h1) || isinterval(h2) || isinterval(h3)) { make_interval(*hd1); *hd2=nextof(*hd1); make_interval(*hd2); *hd3=nextof(*hd2); make_interval(*hd3); } if (error) return; *hd1=getvalue(*hd1); if (error) return; *hd2=getvalue(*hd2); if (error) return; *hd3=getvalue(*hd3); if (error) return; } void equal_params_2 (header **hd1, header **hd2) /* Make parameter values of equal type (real, complex, interval) */ { header *h1,*h2; h1=getvariablesub(*hd1); if (error) return; h2=getvariablesub(*hd2); if (error) return; if (iscomplex(h1) || iscomplex(h2)) { make_complex(*hd1); *hd2=nextof(*hd1); make_complex(*hd2); } else if (isinterval(h1) || isinterval(h2)) { make_interval(*hd1); *hd2=nextof(*hd1); make_interval(*hd2); } if (error) return; *hd1=getvalue(*hd1); if (error) return; *hd2=getvalue(*hd2); if (error) return; } void kill_udf (char *name) /***** kill_udf kill a local variable name, if there is one. *****/ { unsigned long size,rest; header *hd=(header *)ramstart; while ((char *)hdname,name)) /* found! */ { size=hd->size; #ifndef SPLIT_MEM rest=newram-(char *)hd-size; if (size && rest) memmove((char *)hd,(char *)hd+size,rest); endlocal-=size; startlocal-=size; newram-=size; #else rest=udfend-(char *)hd-size; if (size && rest) memmove((char *)hd,(char *)hd+size,rest); #endif udfend-=size; return; } hd=(header *)((char *)hd+hd->size); } } void moveresult (header *stack, header *result) /***** moveresult move the result to the start of stack. *****/ { if (stack==result) return; memmove((char *)stack,(char *)result,result->size); newram=(char *)stack+stack->size; } void moveresult1 (header *stack, header *result) /***** moveresult move several results to the start of stack. *****/ { unsigned long size; if (stack==result) return; size=newram-(char *)result; memmove((char *)stack,(char *)result,size); newram=(char *)stack+size; } static int sametype (header *hd1, header *hd2) /***** sametype returns true, if hd1 and hd2 have the same type and dimensions. *****/ { dims *d1,*d2; if (hd1->type==s_string && hd2->type==s_string) return hd1->size>=hd2->size; if (hd1->type!=hd2->type || hd1->size!=hd2->size) return 0; if (hd1->type==s_matrix || hd1->type==s_cmatrix || hd1->type==s_imatrix) { d1=dimsof(hd1); d2=dimsof(hd2); if (d1->r!=d2->r) return 0; } return 1; } header *assign (header *var, header *value) /***** assign assign the value to the variable. *****/ { char name[16],*nextvar; unsigned long size; long dif; double *m,*mv,*m1,*m2; int i,j,c,r,cv,rv,*rind,*cind; dims *d; header *help,*orig; if (error) return 0; size=value->size; if (var->type==s_reference && !referenceof(var)) /* seems to be a new variable */ { strcpy(name,var->name); if (value->type==s_udf) { strcpy(value->name,name); value->xor=xor(name); #ifndef SPLIT_MEM if (!freeram(size)) { output("Memory overflow.\n"); error=500; return value; } memmove(ramstart+size,ramstart,newram-ramstart); newram+=size; endlocal+=size; startlocal+=size; value=(header *)((char *)value+size); #else if ((long)udfend+size>(long)udframend) { output1("Not enough memory for function %s!\n",name); error=500; return value; } memmove(ramstart+size,ramstart,udfend-ramstart); #endif udfend+=size; memmove(ramstart,(char *)value,size); return (header *)ramstart; } if (!freeram(size)) { output("Memory overflow.\n"); error=500; return value; } memmove(endlocal+size,endlocal,newram-endlocal); value=(header *)((char *)value+size); newram+=size; memmove(endlocal,(char *)value,size); strcpy(((header *)endlocal)->name,name); ((header *)endlocal)->xor=xor(name); value=(header *)endlocal; endlocal+=size; return value; } else { while (var && var->type==s_reference) var=referenceof(var); if (!var) { error=43; output("Internal variable error!\n"); return 0; } if (var->type!=s_udf && value->type==s_udf) { output("Cannot assign a UDF to a variable!\n"); error=320; return var; } if (var->type==s_submatrix) { d=submdimsof(var); if (value->type==s_complex || value->type==s_cmatrix) { orig=submrefof(var); help=new_reference(orig,""); if (error) return 0; mcomplex(help); if (error) return 0; var->type=s_csubmatrix; submrefof(var)=help; assign(var,value); if (error) return 0; submrefof(var)=orig; assign(orig,help); return orig; } else if (value->type==s_interval || value->type==s_imatrix) { orig=submrefof(var); help=new_reference(orig,""); if (error) return 0; minterval1(help); if (error) return 0; var->type=s_isubmatrix; submrefof(var)=help; assign(var,value); if (error) return 0; submrefof(var)=orig; assign(orig,help); return orig; } else if (value->type!=s_real && value->type!=s_matrix) { output("Cannot assign this type!\n"); error=45; return 0; } getmatrix(value,&rv,&cv,&mv); getmatrix(submrefof(var),&r,&c,&m); if (d->r!=rv || d->c!=cv) { if (rv==1 && cv==1) { rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=mat(m,c,rind[i],0); for (j=0; jc; j++) { m1[cind[j]]=*mv; } } return submrefof(var); } output("Illegal assignment!\n" "Row or column numbers do not agree!\n"); error=45; return 0; } rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=mat(m,c,rind[i],0); m2=mat(mv,cv,i,0); for (j=0; jc; j++) { m1[cind[j]]=*m2++; } } return submrefof(var); } else if (var->type==s_csubmatrix) { d=submdimsof(var); if (value->type==s_real || value->type==s_matrix) { help=new_reference(value,""); if (error) return 0; mcomplex(help); if (error) return 0; assign(var,help); return submrefof(var); } if (value->type!=s_complex && value->type!=s_cmatrix) { output("Illegal assignment!\n"); error=45; return 0; } getmatrix(value,&rv,&cv,&mv); getmatrix(submrefof(var),&r,&c,&m); if (d->r!=rv || d->c!=cv) { if (rv==1 && cv==1) { rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=cmat(m,c,rind[i],0); for (j=0; jc; j++) { copy_complex(m1+(long)2*cind[j],mv); } } return submrefof(var); } output("Illegal assignment!\n" "Row or column numbers do not agree!\n"); error=45; return 0; } rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=cmat(m,c,rind[i],0); m2=cmat(mv,cv,i,0); for (j=0; jc; j++) { copy_complex(m1+(long)2*cind[j],m2); m2+=2; } } return submrefof(var); } else if (var->type==s_isubmatrix) { d=submdimsof(var); if (value->type==s_real || value->type==s_matrix) { help=new_reference(value,""); if (error) return 0; minterval1(help); if (error) return 0; assign(var,help); return submrefof(var); } if (value->type!=s_interval && value->type!=s_imatrix) { output("Cannot assign this type to intervals!\n"); error=45; return 0; } getmatrix(value,&rv,&cv,&mv); getmatrix(submrefof(var),&r,&c,&m); if (d->r!=rv || d->c!=cv) { if (rv==1 && cv==1) { rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=imat(m,c,rind[i],0); for (j=0; jc; j++) { copy_interval(m1+(long)2*cind[j],mv); } } return submrefof(var); } output("Illegal assignment!\n" "Row or column numbers do not agree!\n"); error=45; return 0; } rind=rowsof(var); cind=colsof(var); for (i=0; ir; i++) { m1=imat(m,c,rind[i],0); m2=imat(mv,cv,i,0); for (j=0; jc; j++) { copy_interval(m1+(long)2*cind[j],m2); m2+=2; } } return submrefof(var); } else { if ((char *)varendlocal) /* its not a local variable! */ { if (!sametype(var,value)) { output1("Cannot change type of non-local variable %s!\n", var->name); error=12; return 0; } memcpy((char *)(var+1),(char *)(value+1), value->size-sizeof(header)); return var; } dif=(long)value->size-var->size; if (dif>0 && !freeram(dif)) { output("Memory overflow in assignment.\n"); error=501; return value; } nextvar=(char *)var+var->size; if (dif!=0) memmove(nextvar+dif,nextvar,newram-nextvar); newram+=dif; endlocal+=dif; value=(header *)((char *)value+dif); strcpy(value->name,var->name); value->xor=var->xor; memmove((char *)var,(char *)value,value->size); } } return var; } #ifndef SPLIT_MEM typedef struct { size_t udfend,startlocal,endlocal,newram; } ptyp; void mstore (header *hd) { FILE *file; ptyp p; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Expect file name.\n"); error=1100; return; } p.udfend=udfend-ramstart; p.startlocal=startlocal-ramstart; p.endlocal=endlocal-ramstart; p.newram=newram-ramstart; file=fopen(stringof(hd),"wb"); if (!file) { output1("Could not open %s.\n",stringof(hd)); error=1101; return; } fwrite(&p,sizeof(ptyp),1,file); fwrite(ramstart,1,newram-ramstart,file); if (ferror(file)) { output("Write error.\n"); error=1102; return; } fclose(file); } void mrestore (header *hd) { FILE *file; ptyp p; if (udfon) { output("Cannot restore inside a UDF.\n"); error=1; return; } hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Expect file name.\n"); error=1100; return; } file=fopen(stringof(hd),"rb"); if (!file) { output1("Could not open %s.\n",stringof(hd)); error=1103; return; } fread(&p,sizeof(ptyp),1,file); if (ferror(file)) { output("Read error.\n"); error=1104; return; } fread(ramstart,1,p.newram,file); if (ferror(file)) { output("Read error (fatal for EULER).\n"); error=1104; return; } fclose(file); udfend=ramstart+p.udfend; startlocal=ramstart+p.startlocal; endlocal=ramstart+p.endlocal; newram=ramstart+p.newram; next=input_line; *next=0; } #endif euler-1.61.0/src/stack.h0000644000175000001440000001073407453044071013632 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : stack.h -- numerical stack management */ #ifndef _STACK_H_ #define _STACK_H_ #include "sysdep.h" extern int error; extern char *ramstart,*ramend,*startlocal,*endlocal,*newram,*udfend,*varstart,*udframend,*startglobal,*endglobal; #define freeram(n) (((unsigned long)(newram)+(unsigned long)(n))<=(unsigned long)ramend) #define freeramfrom(r,n) (((unsigned long)(r)+(unsigned long)(n))<=(unsigned long)ramend) typedef enum { s_real, s_complex, s_matrix, s_cmatrix, s_reference, s_command, s_submatrix, s_csubmatrix, s_string, s_udf, s_interval, s_imatrix, s_isubmatrix } stacktyp; typedef struct { long size; char name[16]; int xor; stacktyp type; int flags; } headertest; typedef struct{ long size; char name[16]; int xor; stacktyp type; int flags; #ifdef HEADER_ALIGNMENT char dummy[((sizeof(headertest)-1)/HEADER_ALIGNMENT+1)*HEADER_ALIGNMENT-sizeof(headertest)]; #endif } header; typedef struct { int c,r; } dimstest; typedef struct { int c,r; #ifdef DIMS_ALIGNMENT char dummy[((sizeof(dimstest)-1)/DIMS_ALIGNMENT+1)*DIMS_ALIGNMENT-sizeof(dimstest)]; #endif } dims; typedef struct { unsigned long s; } inttyp; typedef struct { header hd; double val; } realtyp; /* * new stack objects */ header *new_matrix (int c, int r, char *name); header *new_cmatrix (int c, int r, char *name); header *new_imatrix (int c, int r, char *name); header *new_real (double x, char *name); header *new_complex (double x, double y, char *name); header *new_reference (header *hd, char *name); header *new_submatrix (header *hd, header *cols, header *rows, char *name); header *new_csubmatrix (header *hd, header *cols, header *rows, char *name); header *new_isubmatrix (header *hd, header *cols, header *rows, char *name); header *new_command (int no); header *new_string (char *s, unsigned long size, char *name); header *new_udf (char *name); header *new_subm (header *var, long l, char *name); header *new_csubm (header *var, long l, char *name); header *new_isubm (header *var, long l, char *name); header *new_interval (double x, double y, char *name); /* * macros for object handling */ #define realof(hd) ((double *)((hd)+1)) #define matrixof(hd) ((double *)((char *)((hd)+1)+sizeof(dims))) #define dimsof(hd) ((dims *)((hd)+1)) #define commandof(hd) ((int *)((hd)+1)) #define referenceof(hd) (*((header **)((hd)+1))) #define imagof(hd) ((double *)((hd)+1)+1) #define rowsof(hd) ((int *)((dims *)((header **)((hd)+1)+1)+1)) #define colsof(hd) ((int *)((dims *)((header **)((hd)+1)+1)+1)+submdimsof((hd))->r) #define submrefof(hd) (*((header **)((hd)+1))) #define submdimsof(hd) ((dims *)((header **)((hd)+1)+1)) #define stringof(hd) ((char *)((hd)+1)) #define udfof(hd) ((char *)(hd)+(*((unsigned long *)((hd)+1)))) #define udfstartof(hd) ((unsigned long *)((hd)+1)) #define helpof(hd) ((char *)(hd)+sizeof(header)+sizeof(unsigned long)) #define nextof(hd) ((header *)((char *)(hd)+(hd)->size)) #define mat(m,c,i,j) (m+(((long)(c))*(i)+(j))) #define cmat(m,c,i,j) (m+(2*(((long)(c))*(i)+(j)))) #define imat(m,c,i,j) (m+(2*(((long)(c))*(i)+(j)))) #define matrixsize(c,r) (sizeof(header)+sizeof(dims)+(c)*(long)(r)*sizeof(double)) #define cmatrixsize(c,r) (sizeof(header)+sizeof(dims)+2l*(c)*(long)(r)*sizeof(double)) #define imatrixsize(c,r) (sizeof(header)+sizeof(dims)+2l*(c)*(long)(r)*sizeof(double)) #define aof(hd) ((double *)((hd)+1)) #define bof(hd) ((double *)((hd)+1)+1) #define isreal(hd) (((hd)->type==s_real || (hd)->type==s_matrix)) #define isinterval(hd) (((hd)->type==s_interval || (hd)->type==s_imatrix)) #define iscomplex(hd) (((hd)->type==s_complex || (hd)->type==s_cmatrix)) int xor (char *n); void make_complex (header *hd); void getmatrix (header *hd, int *r, int *c, double **x); void get_element (int nargs, header *var, header *hd); void get_element1 (char *name, header *hd); header *searchvar (char *name); header *searchudf (char *name); header *getvalue (header *); header *getvariable (header *); header *getvariablesub (header *); header *next_param (header *hd); void equal_params_3 (header **hd1, header **hd2, header **hd3); void equal_params_2 (header **hd1, header **hd2); void moveresult (header *stack, header *result); void moveresult1 (header *stack, header *result); header *assign (header *var, header *value); void kill_local (char *name); void kill_udf (char *name); /* * strore /restore the whole stack to / from a file */ #ifndef SPLIT_MEM void mstore (header *hd); void mrestore (header *hd); #endif #endif euler-1.61.0/src/edit.c0000644000175000001440000000126410330177050013433 0ustar ericusers#include #include #include #include "sysdep.h" #include "output.h" #include "graphics.h" #include "mainloop.h" char fktext [10][64]; extern int outputing; int nojump; static void prompt (void) { if (!outputing) gprint("\n>"); if (!udf) output(">"); else output("$"); } static char *editline; /* For external use in notebooks */ void set_editline (char *p) { strcpy(editline,p); } void edit (char *s) { int scan; char ch; editline=s; s[0]=0; prompt(); edit_on(); while (1) { ch=wait_key(&scan); if (scan==switch_screen) show_graphics(); if (scan==enter) break; } if (outfile) fprintf(outfile,"%s",s); edit_off(); output("\n"); } euler-1.61.0/src/edit.h0000644000175000001440000000013407453044336013447 0ustar ericusers#ifndef _EDIT_H_ #define _EDIT_H_ extern char fktext[10][64]; void edit (char *s); #endif euler-1.61.0/src/matrix.c0000644000175000001440000012242207452676356014042 0ustar ericusers#include #include #include #include #include "output.h" #include "funcs.h" #include "matrix.h" #include "linear.h" #include "interval.h" #include "mainloop.h" #define wrong_arg() { error=26; output("Wrong argument\n"); return; } void minmax (double *x, long n, double *min, double *max, int *imin, int *imax) /***** minmax compute the total minimum and maximum of n double numbers. *****/ { long i; if (n==0) { *min=0; *max=0; *imin=0; *imax=0; return; } *min=*x; *max=*x; *imin=0; *imax=0; x++; for (i=1; i*max) { *max=*x; *imax=(int)i; } x++; } } /**************************************************************************** * utility functions * ****************************************************************************/ void msize (header *hd) { header *result,*st=hd,*hd1,*end=(header *)newram; int r,c,r0=0,c0=0; if (!hd) wrong_arg_in("size"); result=new_matrix(1,2,""); if (error) return; while (end>hd) { hd1=getvariable(hd); if (!hd1) varnotfound("size"); if (hd1->type==s_matrix || hd1->type==s_cmatrix || hd1->type==s_imatrix) { r=dimsof(hd1)->r; c=dimsof(hd1)->c; } else if (hd1->type==s_real || hd1->type==s_complex || hd1->type==s_interval) { r=c=1; } else if (hd1->type==s_submatrix || hd1->type==s_csubmatrix || hd1->type==s_isubmatrix) { r=submdimsof(hd1)->r; c=submdimsof(hd1)->c; } else wrong_arg_in("size"); if ((r>1 && r0>1 && r!=r0) || (c>1 && c0>1 && c!=c0)) { if (r0!=r && c0!=c) { output("Matrix dimensions must agree for size!\n"); error=1021; return; } } else { if (r>r0) r0=r; if (c>c0) c0=c; } hd=nextof(hd); } *matrixof(result)=r0; *(matrixof(result)+1)=c0; moveresult(st,result); } void mcols (header *hd) { header *st=hd,*res; int n; hd=getvalue(hd); if (error) return; switch (hd->type) { case s_matrix : case s_cmatrix : case s_imatrix : n=dimsof(hd)->c; break; case s_submatrix : case s_csubmatrix : case s_isubmatrix : n=submdimsof(hd)->c; break; case s_real : case s_complex : case s_interval : n=1; break; case s_string : n=(int)strlen(stringof(hd)); break; default : wrong_arg_in("cols"); } res=new_real(n,""); if (error) return; moveresult(st,res); } void mrows (header *hd) { header *st=hd,*res; int n; hd=getvalue(hd); if (error) return; switch (hd->type) { case s_matrix : case s_cmatrix : case s_imatrix : n=dimsof(hd)->r; break; case s_submatrix : case s_csubmatrix : case s_isubmatrix : n=submdimsof(hd)->r; break; case s_real : case s_complex : case s_interval : n=1; break; default : wrong_arg_in("rows"); } res=new_real(n,""); if (error) return; moveresult(st,res); } void mredim (header *hd) { header *st=hd,*hd1,*result; int c1,r1; double *m; unsigned long i,n,size1,size; hd1=nextof(hd); hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_matrix || dimsof(hd1)->r!=1 || dimsof(hd1)->c!=2 || (hd->type!=s_matrix && hd->type!=s_cmatrix)) wrong_arg_in("redim"); m=matrixof(hd1); if (*m<1 || *m>INT_MAX) wrong_arg_in("redim"); r1=(int)(*m++); if (*m<1 || *m>INT_MAX) wrong_arg_in("redim"); c1=(int)(*m); size1=(long)c1*r1; size=(long)dimsof(hd)->c*dimsof(hd)->r; if (sizetype==s_matrix) { result=new_matrix(r1,c1,""); if (error) return; memmove((char *)matrixof(result),(char *)matrixof(hd), n*sizeof(double)); if (ntype==s_cmatrix) { result=new_cmatrix(r1,c1,""); if (error) return; memmove((char *)matrixof(result),(char *)matrixof(hd), 2*n*sizeof(double)); if (ntype!=s_matrix || dimsof(hd1)->r!=1 || dimsof(hd1)->c!=2) wrong_arg_in("redim"); m=matrixof(hd1); if (*m<1 || *m>INT_MAX) wrong_arg_in("redim"); r1=(int)(*m++); if (*m<1 || *m>INT_MAX) wrong_arg_in("redim"); c1=(int)(*m); getmatrix(hd,&r0,&c0,&m0); mm=m0; if ((r0!=1 && r1!=r0) || (c0!=1 && c1!=c0)) { output("Cannot resize these!\n"); error=1; return; } if (hd->type==s_matrix || hd->type==s_real) { result=new_matrix(r1,c1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix || hd->type==s_complex) { result=new_cmatrix(r1,c1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix || hd->type==s_interval) { result=new_imatrix(r1,c1,""); if (error) return; mr=matrixof(result); for (i=0; itype!=s_real || step->type!=s_real || end->type!=s_real) { output("The : allows only real arguments!\n"); error=15; return; } vinit=*realof(init); vstep=*realof(step); vend=*realof(end); if (vstep==0) { output("A step size of 0 is not allowed in : \n"); error=401; return; } if (fabs(vend-vinit)/fabs(vstep)+1+epsilon>INT_MAX) { output1("A vector can only have %d elements\n",INT_MAX); error=402; return; } count=(int)(floor(fabs(vend-vinit)/fabs(vstep)+1+epsilon)); if ((vend>vinit && vstep<0) || (vend0)) count=0; result=new_matrix(1,count,""); if (error) return; m=matrixof(result); while (count>=0) { *m++=vinit; vinit+=vstep; count--; } moveresult(st,result); } void mmatrix (header *hd) { header *st=hd,*hd1,*result; long i,n; double x,xi; double *m,*mr; int c,r,c1,r1; hd1=nextof(hd); hd=getvalue(hd); if (error) return; hd1=getvalue(hd1); if (error) return; if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (*m<0 || *m>INT_MAX || *(m+1)<0 || *(m+1)>INT_MAX) wrong_arg_in("matrix"); r1=(int)*m; c1=(int)*(m+1); if (hd1->type==s_real) { result=new_matrix(r1,c1,""); mr=matrixof(result); x=*realof(hd1); n=(long)c1*r1; for (i=0; itype==s_complex) { result=new_cmatrix(r1,c1,""); mr=matrixof(result); x=*realof(hd1); xi=*(realof(hd1)+1); n=(long)c1*r1; for (i=0; itype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("zeros"); rows=*matrixof(hd); cols=*(matrixof(hd)+1); if (rows<0 || rows>=INT_MAX || cols<0 || cols>=INT_MAX) wrong_arg_in("zeros"); r=(int)rows; c=(int)cols; result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=c*r; for (i=0; itype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("ones"); rows=*matrixof(hd); cols=*(matrixof(hd)+1); if (rows<0 || rows>=INT_MAX || cols<0 || cols>=INT_MAX) wrong_arg_in("ones"); r=(int)rows; c=(int)cols; result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=c*r; for (i=0; itype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("diag"); rows=*matrixof(hd); cols=*(matrixof(hd)+1); if (rows<0 || rows>=INT_MAX || cols<0 || cols>=INT_MAX) wrong_arg_in("diag"); r=(int)rows; c=(int)cols; hd1=next_param(st); if (hd1) hd2=next_param(hd1); if (hd1) hd1=getvalue(hd1); if (hd2) hd2=getvalue(hd2); if (error) return; if (hd1->type!=s_real) wrong_arg_in("diag"); k=(int)*realof(hd1); if (hd2->type==s_matrix || hd2->type==s_real) { result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=(long)c*r; for (l=0; l=0 && i+ktype==s_cmatrix || hd2->type==s_complex) { result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); n=(long)2*(long)c*r; for (l=0; l=0 && i+ktype==s_imatrix || hd2->type==s_interval) { result=new_imatrix(r,c,""); if (error) return; m=matrixof(result); n=(long)2*(long)c*r; for (l=0; l=0 && i+ktype!=s_matrix && hd->type!=s_cmatrix) wrong_arg_in("setdiag"); getmatrix(hd,&c,&r,&mhd); hd1=next_param(st); if (hd1) hd2=next_param(hd1); if (hd1) hd1=getvalue(hd1); if (hd2) hd2=getvalue(hd2); if (error) return; if (hd1->type!=s_real) wrong_arg_in("setdiag"); k=(int)*realof(hd1); if (hd->type==s_matrix && (hd2->type==s_complex || hd2->type==s_cmatrix)) { make_complex(st); msetdiag(st); return; } else if (hd->type==s_cmatrix && (hd2->type==s_real || hd2->type==s_matrix)) { make_complex(nextof(nextof(st))); msetdiag(st); return; } else if (hd->type==s_imatrix && (hd2->type==s_real || hd2->type==s_matrix)) { make_interval(nextof(nextof(st))); msetdiag(st); return; } if (hd->type==s_matrix) { result=new_matrix(r,c,""); if (error) return; m=matrixof(result); memmove((char *)m,(char *)mhd,(long)c*r*sizeof(double)); getmatrix(hd2,&rd,&cd,&md); if (rd!=1 || cd<1) wrong_arg_in("setdiag"); for (i=0; i=0 && i+ktype==s_cmatrix) { result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); memmove((char *)m,(char *)mhd,(long)c*r*(long)2*sizeof(double)); getmatrix(hd2,&rd,&cd,&md); if (rd!=1 || cd<1) wrong_arg_in("setdiag"); m=matrixof(result); for (i=0; i=0 && i+ktype!=s_real) wrong_arg(); n=(int)*realof(hd1); if (hd->type==s_matrix || hd->type==s_real) { getmatrix(hd,&r,&c,&m); result=new_matrix(1,r,""); if (error) return; mr=matrixof(result); l=0; for (i=0; i=c) break; if (i+n>=0) { l++; *mr++=*mat(m,c,i,i+n); } } dimsof(result)->c=l; result->size=matrixsize(1,c); } else if (hd->type==s_cmatrix || hd->type==s_complex) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(1,r,""); if (error) return; mr=matrixof(result); l=0; for (i=0; i=c) break; if (i+n>=0) { l++; mh=cmat(m,c,i,i+n); *mr++=*mh++; *mr++=*mh; } } dimsof(result)->c=l; result->size=cmatrixsize(1,c); } else wrong_arg(); moveresult(st,result); } void mband (header *hd) { header *st=hd,*hd1,*hd2,*result; int i,j,c,r,n1,n2; double *m,*mr; hd1=next_param(hd); hd2=next_param(hd1); hd=getvalue(hd); hd1=getvalue(hd1); hd2=getvalue(hd2); if (error) return; if (hd1->type!=s_real || hd2->type!=s_real) wrong_arg(); n1=(int)*realof(hd1); n2=(int)*realof(hd2); if (hd->type==s_matrix || hd->type==s_real) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=n1 && j-i<=n2) *mr++=*m++; else { *mr++=0.0; m++; } } } else if (hd->type==s_cmatrix || hd->type==s_complex) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=n1 && j-i<=n2) { *mr++=*m++; *mr++=*m++; } else { *mr++=0.0; *mr++=0.0; m+=2; } } } else wrong_arg(); moveresult(st,result); } void mdup (header *hd) { header *result,*st=hd,*hd1; double x,*m,*m1,*m2; int c,i,n,j,r; hd=getvalue(hd); hd1=next_param(st); if (!hd1) wrong_arg(); hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_real) wrong_arg(); x=*realof(hd1); n=(int)x; if (n<1 || x>=INT_MAX) wrong_arg(); if (hd->type==s_matrix && dimsof(hd)->r==1) { c=dimsof(hd)->c; result=new_matrix(n,c,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_matrix && dimsof(hd)->c==1) { r=dimsof(hd)->r; result=new_matrix(r,n,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_real) { result=new_matrix(n,1,""); if (error) return; m1=matrixof(result); for (i=0; itype==s_cmatrix && dimsof(hd)->r==1) { c=dimsof(hd)->c; result=new_cmatrix(n,c,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_cmatrix && dimsof(hd)->c==1) { r=dimsof(hd)->r; result=new_cmatrix(r,n,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_complex) { result=new_cmatrix(n,1,""); if (error) return; m1=matrixof(result); for (i=0; itype==s_imatrix && dimsof(hd)->r==1) { c=dimsof(hd)->c; result=new_imatrix(n,c,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_imatrix && dimsof(hd)->c==1) { r=dimsof(hd)->r; result=new_imatrix(r,n,""); if (error) return; m1=matrixof(hd); m2=matrixof(result); for (i=0; itype==s_interval) { result=new_imatrix(n,1,""); if (error) return; m1=matrixof(result); for (i=0; itype==s_matrix) { getmatrix(hd,&r,&c,&m); hd1=new_matrix(c,r,""); if (error) return; m1=matrixof(hd1); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); hd1=new_cmatrix(c,r,""); if (error) return; m1=matrixof(hd1); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); hd1=new_imatrix(c,r,""); if (error) return; m1=matrixof(hd1); for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { hd1=hd; } else { error=24; output("\' not defined for this value!\n"); return; } moveresult(st,hd1); } void msum (header *hd) { header *st=hd,*result; int c,r,i,j; double *m,*mr,s,si,x,y; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_matrix(r,1,""); else result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) sum=*m++; *mr++=sum; for (j=1; jtype==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_cmatrix(r,1,""); else result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) { sumr=*m++; sumi=*m++; } *mr++=sumr; *mr++=sumi; for (j=1; jtype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_matrix(r,1,""); else result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) sum=*m++; *mr++=sum; for (j=1; jtype==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_cmatrix(r,1,""); else result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) { sumr=*m++; sumi=*m++; } *mr++=sumr; *mr++=sumi; for (j=1; jtype==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_imatrix(r,1,""); else result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) { sumr=*m++; sumi=*m++; } *mr++=sumr; *mr++=sumi; for (j=1; jtype==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); if (c<1) result=new_imatrix(r,1,""); else result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; i=1) { sumr=*m++; sumi=*m++; } *mr++=sumr; *mr++=sumi; for (j=1; jtype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); mr+=(long)(r-1)*c; for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); mr+=2l*(long)(r-1)*c; for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); mr+=2l*(long)(r-1)*c; for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_complex || hd->type==s_interval) { moveresult(st,hd); return; } else if (hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_cmatrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,c,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_matrix) { if (hd1->type==s_real || hd1->type==s_matrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=0 && (c!=c1 || (long)r+r1>INT_MAX)) wrong_arg(); result=new_matrix(r+r1,c1,""); if (r!=0) { size=(long)r*c*sizeof(double); memmove((char *)matrixof(result),(char *)m, size); } memmove((char *)matrixof(result)+size, (char *)m1,(long)r1*c1*sizeof(double)); } else if (hd1->type==s_complex || hd1->type==s_cmatrix) { make_complex(st); mvconcat(st); return; } else if (hd1->type==s_interval || hd1->type==s_imatrix) { make_interval(st); mvconcat(st); return; } else wrong_arg(); } else if (hd->type==s_complex || hd->type==s_cmatrix) { if (hd1->type==s_complex || hd1->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=0 && (c!=c1 || (long)r+r1>INT_MAX)) wrong_arg(); result=new_cmatrix(r+r1,c1,""); if (r!=0) { size=(long)r*(long)2*c*sizeof(double); memmove((char *)matrixof(result),(char *)m, size); } memmove((char *)matrixof(result)+size, (char *)m1,(long)r1*(long)2*c1*sizeof(double)); } else if (hd1->type==s_real || hd1->type==s_matrix) { make_complex(next_param(st)); mvconcat(st); return; } else wrong_arg(); } else if (hd->type==s_interval || hd->type==s_imatrix) { if (hd1->type==s_interval || hd1->type==s_imatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (r!=0 && (c!=c1 || (long)r+r1>INT_MAX)) wrong_arg(); result=new_imatrix(r+r1,c1,""); if (r!=0) { size=(long)r*(long)2*c*sizeof(double); memmove((char *)matrixof(result),(char *)m, size); } memmove((char *)matrixof(result)+size, (char *)m1,(long)r1*(long)2*c1*sizeof(double)); } else if (hd1->type==s_real || hd1->type==s_matrix) { make_interval(next_param(st)); mvconcat(st); return; } else wrong_arg(); } else wrong_arg(); moveresult(st,result); } void mhconcat (header *hd) { header *st=hd,*hd1,*result; double *m,*m1,*mr; int r,c,r1,c1,i; hd=getvalue(hd); hd1=next_param(st); if (!hd1) wrong_arg(); hd1=getvalue(hd1); if (error) return; if (hd->type==s_string && hd1->type==s_string) { result=new_string(stringof(hd), strlen(stringof(hd))+strlen(stringof(hd1))+1,""); strcat(stringof(result),stringof(hd1)); } else if (hd->type==s_real || hd->type==s_matrix) { if (hd1->type==s_real || hd1->type==s_matrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (c!=0 && (r!=r1 || (long)c+c1>INT_MAX)) wrong_arg(); result=new_matrix(r1,c+c1,""); mr=matrixof(result); for (i=0; itype==s_complex || hd1->type==s_cmatrix) { make_complex(st); mhconcat(st); return; } else if (hd1->type==s_interval || hd1->type==s_imatrix) { make_interval(st); mhconcat(st); return; } else wrong_arg(); } else if (hd->type==s_complex || hd->type==s_cmatrix) { if (hd1->type==s_complex || hd1->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (c!=0 && (r!=r1 || (long)c+c1>INT_MAX)) wrong_arg(); result=new_cmatrix(r1,c+c1,""); mr=matrixof(result); for (i=0; itype==s_real || hd1->type==s_matrix) { make_complex(next_param(st)); if (error) return; mhconcat(st); return; } else wrong_arg(); } else if (hd->type==s_interval || hd->type==s_imatrix) { if (hd1->type==s_interval || hd1->type==s_imatrix) { getmatrix(hd,&r,&c,&m); getmatrix(hd1,&r1,&c1,&m1); if (c!=0 && (r!=r1 || (long)c+c1>INT_MAX)) wrong_arg(); result=new_imatrix(r1,c+c1,""); mr=matrixof(result); for (i=0; itype==s_real || hd1->type==s_matrix) { make_interval(next_param(st)); if (error) return; mhconcat(st); return; } else wrong_arg(); } else wrong_arg(); moveresult(st,result); } /**************************************************************************** * comparing * ****************************************************************************/ void mscompare (header *hd) { header *st=hd,*hd1,*result; hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd->type==s_string && hd1->type==s_string) { result=new_real(strcmp(stringof(hd),stringof(hd1)),""); if (error) return; } else wrong_arg(); moveresult(st,result); } void mfind (header *hd) { header *st=hd,*hd1,*result; double *m,*m1,*mr; int i,j,k,c,r,c1,r1; hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if ((hd->type!=s_matrix && hd->type!=s_real) || (hd1->type!=s_matrix && hd1->type!=s_real)) wrong_arg(); getmatrix(hd,&c,&r,&m); getmatrix(hd1,&c1,&r1,&m1); if (c!=1 && r!=1) wrong_arg(); if (r!=1) c=r; result=new_matrix(c1,r1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,4,""); if (error) return; mr=matrixof(result); for (i=0; imax) { max=x; imax=j; } } *mr++=min; *mr++=imin+1; *mr++=max; *mr++=imax+1; } } else wrong_arg_in("extrema"); moveresult(st,result); } void many (header *hd) { header *st=hd,*result; int c,r,res=0; long i,n; double *m; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); n=(long)(c)*r; } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); n=(long)2*(long)(c)*r; } else wrong_arg_in("any"); for (i=0; itype!=s_real && hd->type!=s_matrix) wrong_arg_in("nonzeros"); getmatrix(hd,&r,&c,&m); if (r!=1 && c!=1) wrong_arg_in("nonzeros"); if (c==1) c=r; result=new_matrix(1,c,""); if (error) return; k=0; mr=matrixof(result); for (i=0; ic=k; result->size=matrixsize(1,k); moveresult(st,result); } /**************************************************************************** * misc * ****************************************************************************/ void cscalp (double *s, double *si, double *x, double *xi, double *y, double *yi); void ccopy (double *y, double *x, double *xi); void wmultiply (header *hd) /***** multiply matrix multiplication for weakly nonzero matrices. *****/ { header *result,*st=hd,*hd1; dims *d,*d1; double *m,*m1,*m2,*mm1,*mm2,x,y,null=0.0; int i,j,c,r,k; hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd->type==s_matrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_matrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; for (k=0; kc; k++) { if ((*mm1!=0.0)&&(*mm2!=0.0)) x+=(*mm1)*(*mm2); mm1++; mm2+=d1->c; } *mat(m,c,i,j)=x; } moveresult(st,result); return; } if (hd->type==s_matrix && hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0 || *(mm2+1)!=0.0) && (*mm1!=0.0)) cscalp(&x,&y,mm1,&null,mm2,mm2+1); mm1++; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd->type==s_cmatrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0) && (*mm1!=0.0 || *(mm1+1)!=0.0)) cscalp(&x,&y,mm1,mm1+1,mm2,&null); mm1+=2; mm2+=d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } if (hd->type==s_cmatrix && hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0 || *(mm2+1)!=0.0) && (*mm1!=0.0 || *(mm1+1)!=0.0)) cscalp(&x,&y,mm1,mm1+1,mm2,mm2+1); mm1+=2; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); } moveresult(st,result); return; } else wrong_arg(); } void smultiply (header *hd) /***** multiply matrix multiplication for weakly nonzero symmetric matrices. *****/ { header *result,*st=hd,*hd1; dims *d,*d1; double *m,*m1,*m2,*mm1,*mm2,x,y,null=0.0; int i,j,c,r,k; hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd->type==s_matrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_matrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; for (k=0; kc; k++) { if ((*mm1!=0.0)&&(*mm2!=0.0)) x+=(*mm1)*(*mm2); mm1++; mm2+=d1->c; } *mat(m,c,i,j)=x; *mat(m,c,j,i)=x; } moveresult(st,result); return; } if (hd->type==s_matrix && hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0 || *(mm2+1)!=0.0) && (*mm1!=0.0)) cscalp(&x,&y,mm1,&null,mm2,mm2+1); mm1++; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); y=-y; ccopy(cmat(m,c,j,i),&x,&y); } moveresult(st,result); return; } if (hd->type==s_cmatrix && hd1->type==s_matrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0) && (*mm1!=0.0 || *(mm1+1)!=0.0)) cscalp(&x,&y,mm1,mm1+1,mm2,&null); mm1+=2; mm2+=d1->c; } ccopy(cmat(m,c,i,j),&x,&y); y=-y; ccopy(cmat(m,c,j,i),&x,&y); } moveresult(st,result); return; } if (hd->type==s_cmatrix && hd1->type==s_cmatrix) { d=dimsof(hd); d1=dimsof(hd1); if (d->c != d1->r) { error=8; output("Cannot multiply these!\n"); return; } r=d->r; c=d1->c; result=new_cmatrix(r,c,""); if (error) return; m=matrixof(result); m1=matrixof(hd); m2=matrixof(hd1); for (i=0; ic,i,0); mm2=m2+(long)2*j; x=0.0; y=0.0; for (k=0; kc; k++) { if ((*mm2!=0.0 || *(mm2+1)!=0.0) && (*mm1!=0.0 || *(mm1+1)!=0.0)) cscalp(&x,&y,mm1,mm1+1,mm2,mm2+1); mm1+=2; mm2+=2*d1->c; } ccopy(cmat(m,c,i,j),&x,&y); y=-y; ccopy(cmat(m,c,j,i),&x,&y); } moveresult(st,result); return; } else wrong_arg(); } euler-1.61.0/src/matrix.h0000644000175000001440000000224307453043701014024 0ustar ericusers/* * Euler - a numerical lab * * file : matrix.h -- builtin matrix functions */ #ifndef _MATRIX_H_ #define _MATRIX_H_ #include "stack.h" void minmax (double *x, long n, double *min, double *max, int *imin, int *imax); void msize (header *hd); void mcols (header *hd); void mrows (header *hd); void mredim (header *hd); void mresize (header *hd); void vectorize (header *init, header *step, header *end); void mdup (header *hd); void mmatrix (header *hd); void mzerosmat (header *hd); void mones (header *hd); void mdiag (header *hd); void msetdiag (header *hd); void mdiag2 (header *hd); void mband (header *hd); void mscompare (header *hd); void mfind (header *hd); void mextrema (header *hd); void mnonzeros (header *hd); void many (header *hd); void transpose (header *hd); void msum (header *hd); void mprod (header *hd); void mcumsum (header *hd); void mcumprod (header *hd); void mflipx (header *hd); void mflipy (header *hd); void mrotleft (header *hd); void mrotright (header *hd); void mshiftleft (header *hd); void mshiftright (header *hd); void mvconcat (header *hd); void mhconcat (header *hd); void wmultiply (header *hd); void smultiply (header *hd); #endif euler-1.61.0/src/import.cpp0000644000175000001440000000202607417015640014365 0ustar ericusers#include #include int main (int argc, char *argv[]) { int i,c; FILE *in,*out; for (i=1; i #include #include #include "output.h" #include "help.h" typedef struct _helpline { struct _helpline *next; char *text; } helpline; typedef struct _helpitem { struct _helpitem *next; helpline *help; char *item; } helpitem; static helpitem *firstitem=0; static char * newline (FILE *in) { static char line[1024]; int l; if (feof(in)) return 0; if (!fgets(line,1022,in)) return 0; if (feof(in)) return 0; l=(int)strlen(line); if (l>0 && line[l-1]=='\n') line[l-1]=0; return line; } static helpitem * loaditem (FILE *in) { char *l; helpline *h,*hn,*hend=0; helpitem *hin; while (1) { l=newline(in); if (!l) return 0; if (*l=='!') break; } hin=(helpitem *)malloc(sizeof(helpitem)); hin->next=0; hin->item=(char *)malloc(strlen(l+1)+1); strcpy(hin->item,l+1); h=0; while (1) { l=newline(in); if (!l || *l=='#') break; hn=(helpline *)malloc(sizeof(helpline)); hn->next=0; hn->text=(char *)malloc(strlen(l)+1); strcpy(hn->text,l); if (!h) h=hend=hn; else { hend->next=hn; hend=hn; } } hin->help=h; return hin; } void loadhelp (char *filename) { FILE *in=fopen(filename,"r"); helpitem *lastitem=0,*newitem; if (!in) return; firstitem=0; while (1) { newitem=loaditem(in); if (!newitem) break; if (!firstitem) { lastitem=firstitem=newitem; } else { lastitem->next=newitem; lastitem=newitem; } } fclose(in); } void unloadhelp () { helpitem *h=firstitem,*hn; helpline *l,*ln; while (h) { free(h->item); l=h->help; while (l) { free(l->text); ln=l->next; free(l); l=ln; } hn=h->next; free(h); h=hn; } } void externhelp (char *text) { helpitem *h=firstitem; helpline *hl; char s[256],*p,*q; while (h) { p=h->item; while(*p) { q=s; while (*p && *p!=',') *q++=*p++; *q=0; if (strcmp(s,text)==0) { hl=h->help; output1("--- help text available ---\n"); while (hl) { output1("%s\n",hl->text); hl=hl->next; } return; } if (*p==0) break; p++; } h=h->next; } } euler-1.61.0/src/help.h0000644000175000001440000000033407452617326013460 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : help.h -- help management */ #ifndef _HELP_H_ #define _HELP_H_ void externhelp (char *text); void loadhelp (char *name); void unloadhelp (); #endif euler-1.61.0/src/Makefile.am0000644000175000001440000000207510331246703014402 0ustar ericusers## Process this file with automake to produce Makefile.in ## Created by Anjuta - will be overwritten ## If you don't want it to overwrite it, ## Please disable it in the Anjuta project configuration INCLUDES = \ $(GTK_CFLAGS) AM_CFLAGS =\ -Wall\ -O3 bin_PROGRAMS = euler euler_SOURCES = \ main.c\ binary.c\ binary.h\ builtin.c\ builtin.h\ command.c\ command.h\ earray.c\ earray.h\ edit.c\ edit.h\ express.c\ express.h\ extend.h\ feval.c\ feval.h\ fft.c\ fft.h\ funcs.c\ funcs.h\ graphics.c\ graphics.h\ help.c\ help.h\ input.c\ input.h\ interval.c\ interval.h\ linear.c\ linear.h\ mainloop.c\ mainloop.h\ matrix.c\ matrix.h\ meta.c\ meta.h\ metagtk.c\ metagtk.h\ metaps.c\ metaps.h\ output.c\ output.h\ polynom.c\ polynom.h\ rc.c\ rc.h\ scalp.c\ scalp.h\ special.c\ special.h\ spread.c\ spread.h\ stack.c\ stack.h\ sysdep.h\ term.c\ term.h\ udf.c\ udf.h euler_LDFLAGS = euler_LDADD = \ $(GTK_LIBS) helpdir = $(prefix)/share/euler help_DATA = help.txt uidir = $(prefix)/share/euler EXTRA_DIST = $(help_DATA) euler-1.61.0/src/Makefile.in0000644000175000001440000004350010331246753014416 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = $(euler_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = euler$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(helpdir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_euler_OBJECTS = main.$(OBJEXT) binary.$(OBJEXT) builtin.$(OBJEXT) \ command.$(OBJEXT) earray.$(OBJEXT) edit.$(OBJEXT) \ express.$(OBJEXT) feval.$(OBJEXT) fft.$(OBJEXT) \ funcs.$(OBJEXT) graphics.$(OBJEXT) help.$(OBJEXT) \ input.$(OBJEXT) interval.$(OBJEXT) linear.$(OBJEXT) \ mainloop.$(OBJEXT) matrix.$(OBJEXT) meta.$(OBJEXT) \ metagtk.$(OBJEXT) metaps.$(OBJEXT) output.$(OBJEXT) \ polynom.$(OBJEXT) rc.$(OBJEXT) scalp.$(OBJEXT) \ special.$(OBJEXT) spread.$(OBJEXT) stack.$(OBJEXT) \ term.$(OBJEXT) udf.$(OBJEXT) euler_OBJECTS = $(am_euler_OBJECTS) am__DEPENDENCIES_1 = euler_DEPENDENCIES = $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(euler_SOURCES) DIST_SOURCES = $(euler_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; helpDATA_INSTALL = $(INSTALL_DATA) DATA = $(help_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = \ $(GTK_CFLAGS) AM_CFLAGS = \ -Wall\ -O3 euler_SOURCES = \ main.c\ binary.c\ binary.h\ builtin.c\ builtin.h\ command.c\ command.h\ earray.c\ earray.h\ edit.c\ edit.h\ express.c\ express.h\ extend.h\ feval.c\ feval.h\ fft.c\ fft.h\ funcs.c\ funcs.h\ graphics.c\ graphics.h\ help.c\ help.h\ input.c\ input.h\ interval.c\ interval.h\ linear.c\ linear.h\ mainloop.c\ mainloop.h\ matrix.c\ matrix.h\ meta.c\ meta.h\ metagtk.c\ metagtk.h\ metaps.c\ metaps.h\ output.c\ output.h\ polynom.c\ polynom.h\ rc.c\ rc.h\ scalp.c\ scalp.h\ special.c\ special.h\ spread.c\ spread.h\ stack.c\ stack.h\ sysdep.h\ term.c\ term.h\ udf.c\ udf.h euler_LDFLAGS = euler_LDADD = \ $(GTK_LIBS) helpdir = $(prefix)/share/euler help_DATA = help.txt uidir = $(prefix)/share/euler EXTRA_DIST = $(help_DATA) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done euler$(EXEEXT): $(euler_OBJECTS) $(euler_DEPENDENCIES) @rm -f euler$(EXEEXT) $(LINK) $(euler_LDFLAGS) $(euler_OBJECTS) $(euler_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/builtin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earray.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/express.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feval.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interval.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mainloop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/meta.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metagtk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metaps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/output.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/polynom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/special.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/term.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udf.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-helpDATA: $(help_DATA) @$(NORMAL_INSTALL) test -z "$(helpdir)" || $(mkdir_p) "$(DESTDIR)$(helpdir)" @list='$(help_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(helpDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(helpdir)/$$f'"; \ $(helpDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(helpdir)/$$f"; \ done uninstall-helpDATA: @$(NORMAL_UNINSTALL) @list='$(help_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(helpdir)/$$f'"; \ rm -f "$(DESTDIR)$(helpdir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(helpdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-helpDATA install-exec-am: install-binPROGRAMS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-helpDATA \ uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-exec \ install-exec-am install-helpDATA install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-helpDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/src/funcs.c0000644000175000001440000010334010330752632013627 0ustar ericusers#include #include #include #include #include #include #include #include "sysdep.h" #include "stack.h" #include "output.h" #include "builtin.h" #include "funcs.h" #include "linear.h" #include "polynom.h" #include "interval.h" #include "spread.h" #include "express.h" #include "udf.h" #include "mainloop.h" #include "edit.h" /*************************************************************************** * basic math functions (+, -, *, /) for real and complex numbers * ***************************************************************************/ static void real_add (double *x, double *y, double *z) { *z=*x+*y; } static void complex_add (double *x, double *xi, double *y, double *yi, double *z, double *zi) { *z=*x+*y; *zi=*xi+*yi; } void add (header *hd, header *hd1) /***** add add the values elementwise. *****/ { spreadf2(real_add,complex_add,interval_add,hd); } static void real_subtract (double *x, double *y, double *z) { *z=*x-*y; } static void complex_subtract (double *x, double *xi, double *y, double *yi, double *z, double *zi) { *z=*x-*y; *zi=*xi-*yi; } void subtract (header *hd, header *hd1) /***** substract substract the values elementwise. *****/ { spreadf2(real_subtract,complex_subtract,interval_sub,hd); } static void real_multiply (double *x, double *y, double *z) { *z=*x*(*y); } void complex_multiply (double *x, double *xi, double *y, double *yi, double *z, double *zi) { double h=*x * *y - *xi * *yi; *zi=*x * *yi + *xi * *y; *z=h; } void dotmultiply (header *hd, header *hd1) /***** dotmultiply multiply the values elementwise. *****/ { spreadf2(real_multiply,complex_multiply,interval_mult,hd); } static void real_divide (double *x, double *y, double *z) { #ifdef FLOAT_TEST if (*y==0.0) { *y=1e-10; error=1; } #endif *z=*x/(*y); } void complex_divide (double *x, double *xi, double *y, double *yi, double *z, double *zi) { double r,h; r=*y * *y + *yi * *yi; #ifdef FLOAT_TEST if (r==0) { r=1e-10; error=1; } #endif h=(*x * *y + *xi * *yi)/r; *zi=(*xi * *y - *x * *yi)/r; *z=h; } void dotdivide (header *hd, header *hd1) /***** dotdivide divide the values elementwise. *****/ { spreadf2(real_divide,complex_divide,interval_div,hd); } void copy_complex (double *x, double *y) { *x++=*y++; *x=*y; } /*************************************************************************** * math functions (exp, log, sqr, sin, cos, tan, asin, acos, atan) * ***************************************************************************/ static void csin (double *x, double *xi, double *z, double *zi) { *z=cosh(*xi)*sin(*x); *zi=sinh(*xi)*cos(*x); } void msin (header *hd) { spread1i(sin,csin,isin,hd); test_error("sin"); } static void ccos (double *x, double *xi, double *z, double *zi) { *z=cosh(*xi)*cos(*x); *zi=-sinh(*xi)*sin(*x); } void mcos (header *hd) { spread1i(cos,ccos,icos,hd); test_error("cos"); } static void ctan (double *x, double *xi, double *z, double *zi) { double s,si,c,ci; csin(x,xi,&s,&si); ccos(x,xi,&c,&ci); complex_divide(&s,&si,&c,&ci,z,zi); } #ifdef FLOAT_TEST static double rtan (double x) { if (cos(x)==0.0) return 1e10; return tan(x); } #endif void mtan (header *hd) { spread1i( #ifdef FLOAT_TEST rtan, #else tan, #endif ctan,itan,hd); test_error("tan"); } #ifdef FLOAT_TEST static double ratan (double x) { if (x<=-M_PI && x>=M_PI) return 1e10; else return atan(x); } #endif static void carg (double *x, double *xi, double *z) { #ifdef FLOAT_TEST if (*x==0.0 && *xi==0.0) *z=0.0; #endif *z = atan2(*xi,*x); } #ifdef FLOAT_TEST static double rlog (double x) { if (x<=0) { error=1; return 0; } else return log(x); } #endif static void cclog (double *x, double *xi, double *z, double *zi) { #ifdef FLOAT_TEST *z=rlog(sqrt(*x * *x + *xi * *xi)); #else *z=log(sqrt(*x * *x + *xi * *xi)); #endif carg(x,xi,zi); } static void catan (double *x, double *xi, double *y, double *yi) { double h,hi,g,gi,t,ti; h=1-*xi; hi=*x; g=1+*xi; gi=-*x; complex_divide(&h,&hi,&g,&gi,&t,&ti); cclog(&t,&ti,&h,&hi); *y=hi/2; *yi=-h/2; } void matan (header *hd) { spread1i( #ifdef FLOAT_TEST ratan, #else atan, #endif catan,iatan,hd); test_error("atan"); } #ifdef FLOAT_TEST static double rasin (double x) { if (x<-1 || x>1) { error=1; return 0; } else return asin(x); } #endif static void csqrt (double *x, double *xi, double *z, double *zi) { double a,r; carg(x,xi,&a); a=a/2.0; r=sqrt(sqrt(*x * *x + *xi * *xi)); *z=r*cos(a); *zi=r*sin(a); } static void casin (double *x, double *xi, double *y, double *yi) { double h,hi,g,gi; complex_multiply(x,xi,x,xi,&h,&hi); h=1-h; hi=-hi; csqrt(&h,&hi,&g,&gi); h=-*xi+g; hi=*x+gi; cclog(&h,&hi,yi,y); *yi=-*yi; } void masin (header *hd) { spread1( #ifdef FLOAT_TEST rasin, #else asin, #endif casin,hd); test_error("asin"); } #ifdef FLOAT_TEST static double racos (double x) { if (x<-1 || x>1) { error=1; return 0; } else return acos(x); } #endif static void cacos (double *x, double *xi, double *y, double *yi) { double h,hi,g,gi; complex_multiply(x,xi,x,xi,&h,&hi); h=1-h; hi=-hi; csqrt(&h,&hi,&g,&gi); hi=*xi+g; h=*x-gi; cclog(&h,&hi,yi,y); *yi=-*yi; } void macos (header *hd) { spread1( #ifdef FLOAT_TEST racos, #else acos, #endif cacos,hd); test_error("acos"); } static void cexp (double *x, double *xi, double *z, double *zi) { double r=exp(*x); *z=cos(*xi)*r; *zi=sin(*xi)*r; } #ifdef FLOAT_TEST static void rcexp (double *x, double *xi, double *z, double *zi) { double r; if (*x>=1000) { error=1; return; } r=exp(*x); *z=cos(*xi)*r; *zi=sin(*xi)*r; } #endif static inline double rexp (double x) { if (x>=1000) { error=1; return 0; } else return exp(x); } void mexp (header *hd) { #ifdef FLOAT_TEST spread1i(rexp,rcexp,iexp,hd); #else spread1i(exp,cexp,iexp,hd); #endif test_error("exp"); } static double rarg (double x) { if (x>=0) return 0.0; else return M_PI; } void mlog (header *hd) { #ifdef FLOAT_TEST spread1i(rlog,cclog,ilog,hd); #else spread1i(log,cclog,ilog,hd); #endif test_error("log"); } #ifdef FLOAT_TEST static double rsqrt (double x) { if (x<0.0) { error=1; return 0; } else return sqrt(x); } #endif void msqrt (header *hd) { spread1i( #ifdef FLOAT_TEST rsqrt, #else sqrt, #endif csqrt,isqrt,hd); test_error("sqrt"); } static void rrem (double *x, double *n, double *y) { *y=fmod(*x,*n); } void mrem (header *hd) { spreadf2(rrem,0,0,hd); test_error("mod"); } static void rmod (double *x, double *n, double *y) { if (*n==0.0) *y=*x; else { *y=fmod(*x,*n); if (*y<0) *y+=*n; } } void mmod (header *hd) { spreadf2(rmod,0,0,hd); test_error("mod"); } static void cpow (double *x, double *xi, double *y, double *yi, double *z, double *zi) { double l,li,w,wi; if (fabs(*x)0.0) *z=pow(*x,*y); else if (*x==0.0) if (*y==0.0) *z=1.0; else *z=0.0; else { n=(int)*y; if (n!=*y) { output("Illegal argument for ^\n"); error=1; return; } if (n%2) *z=-pow(-*x,n); else *z=pow(-*x,n); } } void mpower (header *hd) { spreadf2(rpow,cpow,ipow,hd); test_error("^"); } /**************************************************************************** * degree, sign, ceil, floor functions * ****************************************************************************/ static double rdegree (double x) { return x/180*M_PI; } void mdegree (header *hd) { spread1(rdegree,0,hd); test_error("signum"); } static double rsign (double x) { if (x<0) return -1; else if (x<=0) return 0; else return 1; } void msign (header *hd) { spread1(rsign,0,hd); test_error("sign"); } void mceil (header *hd) { spread1(ceil,0,hd); test_error("ceil"); } void mfloor (header *hd) { spread1(floor,0,hd); test_error("floor"); } static double rounder; static double rround (double x) { x*=rounder; if (x>0) x=floor(x+0.5); else x=-floor(-x+0.5); return x/rounder; } static void cround (double *x, double *xi, double *z, double *zi) { *z=rround(*x); *zi=rround(*xi); } static double frounder[]={1.0,10.0,100.0,1000.0,10000.0,100000.0,1000000.0, 10000000.0,100000000.0,1000000000.0,10000000000.0}; void mround (header *hd) { header *hd1; int n; hd1=next_param(hd); if (hd1) hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_real) wrong_arg_in("round"); n=(int)(*realof(hd1)); if (n>0 && n<11) rounder=frounder[n]; else rounder=pow(10.0,n); spread1(rround,cround,hd); test_error("round"); } /**************************************************************************** * complex specific functions * ****************************************************************************/ static void cconj (double *x, double *xi, double *z, double *zi) { *zi=-*xi; *z=*x; } static double ident (double x) { return x; } void mconj (header *hd) { spread1(ident,cconj,hd); test_error("conj"); } static void crealpart (double *x, double *xi, double *z) { *z=*x; } void mre (header *hd) { spread1r(ident,crealpart,hd); test_error("re"); } static double zero (double x) { return 0.0; } static void cimagpart (double *x, double *xi, double *z) { *z=*xi; } void mim (header *hd) { spread1r(zero,cimagpart,hd); test_error("im"); } void marg (header *hd) { spread1r(rarg,carg,hd); test_error("arg"); } static void cxabs (double *x, double *xi, double *z) { *z=sqrt(*x * *x + *xi * *xi); } void mabs (header *hd) { spread1ir(fabs,cxabs,iabs,hd); test_error("abs"); } /**************************************************************************** * constants * ****************************************************************************/ void mpi (header *hd) { new_real(M_PI,""); } void margn (header *hd) { new_real(actargn,""); } void mtime (header *hd) { new_real(myclock(),""); } void mfree (header *hd) { new_real(ramend-endlocal,""); } #ifndef NOSHRINK void mshrink (header *hd) { header *st=hd,*result; unsigned long size; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) wrong_arg_in("shrink"); if (*realof(hd)>LONG_MAX) wrong_arg_in("shrink"); size=(unsigned long)*realof(hd); if (ramend-sizetype!=s_real) wrong_arg_in("setepsilon"); result=new_real(epsilon,""); changedepsilon=epsilon=*realof(hd1); moveresult(stack,result); } void mlocalepsilon (header *hd) { header *stack=hd,*hd1,*result; hd1=getvalue(hd); if (error) return; if (hd1->type!=s_real) wrong_arg_in("localepsilon"); result=new_real(epsilon,""); epsilon=*realof(hd1); moveresult(stack,result); } void mtype (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; result=new_real(hd->type,""); moveresult(st,result); } void mintersects (header *hd) { spreadf2r(0,0,iintersects,hd); test_error("intersects"); } /**************************************************************************** * compare operator * ****************************************************************************/ static void rgreater (double *x, double *y, double *z) { if (*x>*y) *z=1.0; else *z=0.0; } static void igreater (double *xa, double *xb, double *ya, double *yb, double *z) { if (*xa>*yb) *z=1.0; else *z=0.0; } void mgreater (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))>0,""); moveresult(st,result); } else spreadf2r(rgreater,0,igreater,st); test_error("=="); } static void rless (double *x, double *y, double *z) { if (*x<*y) *z=1.0; else *z=0.0; } static void ilesst (double *xa, double *xb, double *ya, double *yb, double *z) { if (*xb<*ya) *z=1.0; else *z=0.0; } void mless (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))<0,""); moveresult(st,result); } else spreadf2r(rless,0,ilesst,st); test_error("<"); } static void rgreatereq (double *x, double *y, double *z) { if (*x>=*y) *z=1.0; else *z=0.0; } static void igreatereq (double *xa, double *xb, double *ya, double *yb, double *z) { if (*xa>=*yb) *z=1.0; else *z=0.0; } void mgreatereq (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))>=0,""); moveresult(st,result); } else spreadf2r(rgreatereq,0,igreatereq,st); test_error(">="); } static void rlesseq (double *x, double *y, double *z) { if (*x<=*y) *z=1.0; else *z=0.0; } static void ilesseq (double *xa, double *xb, double *ya, double *yb, double *z) { if (*xb<=*ya) *z=1.0; else *z=0.0; } void mlesseq (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))<=0,""); moveresult(st,result); } else spreadf2r(rlesseq,0,ilesseq,st); test_error("<="); } static void requal (double *x, double *y, double *z) { if (*x==*y) *z=1.0; else *z=0.0; } static void cequal (double *x, double *xi, double *y, double *yi, double *z) { if (*x==*y && *xi==*yi) *z=1.0; else *z=0.0; } void mequal (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))==0,""); moveresult(st,result); } else spreadf2r(requal,cequal,cequal,st); test_error("=="); } static void runequal (double *x, double *y, double *z) { if (*x!=*y) *z=1.0; else *z=0.0; } static void cunequal (double *x, double *xi, double *y, double *yi, double *z) { if (*x!=*y || *xi!=*yi) *z=1.0; else *z=0.0; } static void iunequal (double *x, double *xi, double *y, double *yi, double *z) { if (*x!=*y || *xi!=*yi) *z=1.0; else *z=0.0; } void munequal (header *hd) { header *st=hd,*hd1,*result,*hdv; hdv=getvariable(hd); if (hdv->type==s_string) { hd=getvalue(hd); hd1=getvalue(nextof(st)); if (error) return; if (hd1->type!=s_string) wrong_arg_in("=="); result=new_real(strcmp(stringof(hd),stringof(hd1))!=0,""); moveresult(st,result); } else spreadf2r(runequal,cunequal,iunequal,st); test_error("<>"); } static void raboutequal (double *x, double *y, double *z) { double rx=fabs(*x),ry=fabs(*y); if (rxtype==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_cmatrix(r,c,""); if (error) return; n=(long)r*c; mr=matrixof(result)+(long)2*(n-1); m+=n-1; for (i=0; itype==s_real) { result=new_complex(*realof(hd),0.0,""); if (error) return; moveresult(st,result); } } /*************************************************************************** * events handling * ***************************************************************************/ void mwait (header *hd) { header *st=hd,*result; double now; int h; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) wrong_arg_in("wait"); now=myclock(); sys_wait(*realof(hd),&h); if (h==escape) { output("Interrupt\n"); error=1; return; } now=myclock()-now; if (now>*realof(hd)) now=*realof(hd); result=new_real(now,""); if (error) return; moveresult(st,result); } void mkey (header *hd) { int scan,key; key=wait_key(&scan); if (scan==escape) { output("Interrupt\n"); error=1; return; } if (key) new_real(key,""); else new_real(scan,""); } void mcode (header *hd) { new_real(test_code(),""); } void minput (header *hd) { header *st=hd,*result; char input[1024],*oldnext; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("input"); retry: output(stringof(hd)); output("? "); nojump=1; edit(input); stringon=1; oldnext=next; next=input; result=scan_value(); next=oldnext; stringon=0; if (error) { output("Error in input!\n"); error=0; goto retry; } moveresult(st,result); } void mlineinput (header *hd) { header *st=hd,*result; char input[1024]; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("lineinput"); nojump=1; output(stringof(hd)); output("? "); edit(input); result=new_string(input,strlen(input),""); moveresult(st,result); } void minterpret (header *hd) { header *st=hd,*result; char *oldnext; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("interpret"); stringon=1; oldnext=next; next=stringof(hd); result=scan(); next=oldnext; stringon=0; if (error) { result=new_string("Error",8,""); error=0; } moveresult(st,result); } void mevaluate (header *hd) { header *st=hd,*result; char *oldnext; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("evaluate"); stringon=1; oldnext=next; next=stringof(hd); result=scan(); next=oldnext; stringon=0; if (error) { result=new_string("Syntax error!",16,""); } moveresult(st,result); } /*************************************************************************** * statistics - random numbers * ***************************************************************************/ void mfastrandom (header *hd) { header *st=hd,*result; double *m; int r,c; long k,n; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2 || *(m=matrixof(hd))<0 || *m>=INT_MAX || *(m+1)<0 || *(m+1)>INT_MAX) wrong_arg_in("random"); r=(int)*m; c=(int)*(m+1); result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=(long)c*r; for (k=0; ktype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2 || *(m=matrixof(hd))<0 || *m>=INT_MAX || *(m+1)<0 || *(m+1)>INT_MAX) wrong_arg_in("normal"); r=(int)*m; c=(int)*(m+1); result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=(long)c*r; for (k=0; kINT_MAX) return 1.0; n=(int)x; for (i=2; i<=n; i++) res=res*i; return res; } void mfak (header *hd) { spread1(rfak,0,hd); test_error("fak"); } static double rlogfak (double x) { int i,n; double res=0; if (x<2 || x>INT_MAX) return 0.0; n=(int)x; for (i=2; i<=n; i++) res=res+log(i); return res; } void mlogfak (header *hd) { spread1(rlogfak,0,hd); test_error("logfak"); } static void rbin (double *x, double *y, double *z) { long i,n,m,k; double res; n=(long)*x; m=(long)*y; if (m<=0) *z=1.0; else { res=k=n-m+1; for (i=2; i<=m; i++) { k++; res=res*k/i; } *z=res; } } void mbin (header *hd) { spreadf2(rbin,0,0,hd); test_error("bin"); } static void rlogbin (double *x, double *y, double *z) { long i,n,m,k; double res; n=(long)*x; m=(long)*y; if (m<=0) *z=0.0; else { k=n-m+1; res=log(n-m+1); for (i=2; i<=m; i++) { k++; res+=log(k)-log(i); } *z=res; } } void mlogbin (header *hd) { spreadf2(rlogbin,0,0,hd); test_error("bin"); } static void rtd (double *xa, double *yf, double *zres) { double t,t1,a,b,h,z,p,y,x; int flag=0; if (fabs(*xa)=1) { a=1; b=*yf; t1=t; } else { a=*yf; b=1; t1=1/t; } y=2/(9*a); z=2/(9*b); h=pow(t1,1.0/3); x=fabs((1-z)*h-1+y)/sqrt(z*h*h+y); if (b<4) x=x*(1+0.08*x*x*x*x/(b*b*b)); h=1+x*(0.196854+x*(0.115194+x*(0.000344+x*0.019527))); p=0.5/(h*h*h*h); if (t<0.5) *zres=p/2+0.5; else *zres=1-p/2; if (flag) *zres=1-*zres; } void mtd (header *hd) { spreadf2(rtd,0,0,hd); test_error("tdis"); } static double invgauss (double a) { double t,c,d; int flag=0; if (a<0.5) { a=1-a; flag=1; } t=sqrt(-2*log(fabs(1-a))); c=2.515517+t*(0.802853+t*0.010328); d=1+t*(1.432788+t*(0.189269+t*0.001308)); if (flag) return (c/d-t); else return t-c/d; } void minvgauss (header *hd) { spread1(invgauss,0,hd); test_error("invnormaldis"); } static void invrtd (double *x, double *y, double *zres) { double z=*x,f=*y,g1,g2,g3,g4,z2; int flag=0; if (z<0.5) { flag=1; z=1-z; } z=invgauss(z); z2=z*z; g1=z*(1+z2)/4.0; g2=z*(3+z2*(16+5*z2))/96.0; g3=z*(-15+z2*(17+z2*(19+z2*3)))/384.0; g4=z*(-945+z2*(-1920+z2*(1482+z2*(776+z2*79))))/92160.0; *zres=(((g4/f+g3)/f+g2)/f+g1)/f+z; if (flag) *zres=-*zres; } void minvtd (header *hd) { spreadf2(invrtd,0,0,hd); test_error("invtdis"); } static void chi (double *xa, double *yf, double *zres) { double ch=*xa,x,y,s,t,g,j=1; long i,p,f; f=(long)*yf; if (ch=2; i-=2) j=j*i; x=pow(ch,p)*exp(-(ch/2))/j; if (f%2==0) y=1; else y=sqrt(2/(ch*M_PI)); s=1; t=1; g=f; while (t>1e-5) { g=g+2; t=t*ch/g; s=s+t; } *zres=x*y*s; } void mchi (header *hd) { spreadf2(chi,0,0,hd); test_error("chidis"); } static double f1,f2; static double rfd (double F) { double f0,a,b,h,z,p,y,x; if (F=1) return 1-p; else return p; } void mfdis (header *hd) { header *st=hd,*hd1,*hd2=0; hd1=next_param(st); if (hd1) { hd2=next_param(hd1); hd1=getvalue(hd1); } if (hd2) hd2=getvalue(hd2); if (error) return; if (hd1->type!=s_real || hd2->type!=s_real) wrong_arg_in("fdis"); f1=*realof(hd1); f2=*realof(hd2); spread1(rfd,0,hd); test_error("fdis"); } /***************************************************************************** * sorting * *****************************************************************************/ static void rmax (double *x, double *y, double *z) { if (*x>*y) *z=*x; else *z=*y; } void mmax (header *hd) { spreadf2(rmax,0,imax,hd); test_error("max"); } static void rmin (double *x, double *y, double *z) { if (*x>*y) *z=*y; else *z=*x; } void mmin (header *hd) { spreadf2(rmin,0,imin,hd); test_error("min"); } typedef struct { double val; int ind; } sorttyp; static int sorttyp_compare (const sorttyp *x, const sorttyp *y) { if (x->val>y->val) return 1; else if (x->val==y->val) return 0; else return -1; } void msort (header *hd) { header *st=hd,*result,*result1; double *m,*m1; sorttyp *t; int r,c,i; hd=getvalue(hd); if (error) return; if (hd->type!=s_real && hd->type!=s_matrix) wrong_arg_in("sort"); getmatrix(hd,&r,&c,&m); if (c==1 || r==1) result=new_matrix(r,c,""); else wrong_arg_in("sort"); if (error) return; result1=new_matrix(r,c,""); if (error) return; if (c==1) c=r; if (c==0) wrong_arg_in("sort"); if (!freeram(c*sizeof(sorttyp))) { output("Out of memory!\n"); error=600; return; } t=(sorttyp *)newram; for (i=0; ival=*m++; t->ind=i; t++; } qsort(newram,c,sizeof(sorttyp), (int (*) (const void *, const void *))sorttyp_compare); m=matrixof(result); m1=matrixof(result1); t=(sorttyp *)newram; for (i=0; ival; *m1++=t->ind+1; t++; } moveresult(st,result); moveresult(nextof(st),result1); } void mstatistics (header *hd) { header *st=hd,*hd1,*result; int i,n,r,c,k; double *m,*mr; hd=getvalue(hd); hd1=next_param(st); if (hd1) hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_real || hd->type!=s_matrix) wrong_arg_in("count"); if (*realof(hd1)>INT_MAX || *realof(hd1)<2) wrong_arg_in("count"); n=(int)*realof(hd1); getmatrix(hd,&r,&c,&m); if (r!=1 && c!=1) wrong_arg_in("count"); if (c==1) c=r; result=new_matrix(1,n,""); if (error) return; mr=matrixof(result); for (i=0; i=0 && *mtype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; imax) max=x; } *mr++=max; } } else if (hd->type==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); result=new_matrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_interval || hd->type==s_imatrix) { getmatrix(hd,&r,&c,&m); result=new_imatrix(r,1,""); if (error) return; mr=matrixof(result); for (i=0; itype==s_complex || hd->type==s_cmatrix) result=new_real(1.0,""); else result=new_real(0.0,""); if (error) return; moveresult(st,result); } void misreal (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) result=new_real(1.0,""); else result=new_real(0.0,""); if (error) return; moveresult(st,result); } void misfunction (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type==s_string && (searchudf(stringof(hd))!=0 || find_builtin(stringof(hd))!=0)) result=new_real(1.0,""); else result=new_real(0.0,""); if (error) return; moveresult(st,result); } void misvar (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type==s_string && searchvar(stringof(hd))!=0) result=new_real(1.0,""); else result=new_real(0.0,""); if (error) return; moveresult(st,result); } void misinterval (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type==s_interval || hd->type==s_imatrix) result=new_real(1.0,""); else result=new_real(0.0,""); if (error) return; moveresult(st,result); } /**************************************************************************** * rounding * ****************************************************************************/ void mchar (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) wrong_arg_in("char"); result=new_string("a",1,""); if (error) return; *stringof(result)=(char)*realof(hd); moveresult(st,result); } void mascii (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("ascii"); result=new_real(*stringof(hd),""); if (error) return; moveresult(st,result); } void merror (header *hd) { hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("error"); output1("Error : %s\n",stringof(hd)); error=301; } extern int preventoutput; void merrlevel (header *hd) { header *st=hd,*res; char *oldnext; int en; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("errorlevel"); stringon=1; oldnext=next; next=stringof(hd); res=new_real(0,""); preventoutput=1; scan(); preventoutput=0; next=oldnext; stringon=0; en=error; error=0; if (en) { *realof(res)=en; moveresult(st,res); } else { moveresult1(st,res); } } void mprintf (header *hd) { header *st=hd,*hd1,*result; char string[1024]; hd1=next_param(hd); hd=getvalue(hd); hd1=getvalue(hd1); if (error) return; if (hd->type!=s_string || hd1->type!=s_real) wrong_arg_in("printf"); sprintf(string,stringof(hd),*realof(hd1)); result=new_string(string,strlen(string),""); if (error) return; moveresult(st,result); } void msetkey (header *hd) /***** set a function key *****/ { header *st=hd,*hd1,*result; char *p; int n; hd=getvalue(hd); if (error) return; hd1=nextof(st); hd1=getvalue(hd1); if (error) return; if (hd->type!=s_real || hd1->type!=s_string) wrong_arg_in("setkey"); n=(int)(*realof(hd))-1; p=stringof(hd1); if (n<0 || n>=10 || strlen(p)>63) wrong_arg_in("setkey"); result=new_string(fktext[n],strlen(fktext[n]),""); if (error) return; strcpy(fktext[n],p); moveresult(st,result); } void mcd (header *hd) { header *st=hd,*result; char *path; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("cd"); path=cd(stringof(hd)); result=new_string(path,strlen(path),""); moveresult(st,result); } static char **search_entries=NULL; static int search_count=0,search_current=0; void mdir (header *hd) { header *st=hd,*result; // char *name; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("dir"); if (search_entries) { int i; for (i=0;itype!=s_real) wrong_arg_in("args"); n=(int)*realof(hd); if (n<1) wrong_arg_in("args"); if (n>actargn) { newram=(char *)st; return; } result=(header *)startlocal; i=1; while (iactargn) n=actargn; result=(header *)startlocal; i=1; while (iname,strlen(hd->name),""); moveresult(st,result); } #ifdef WAVES void mplaywav (header *hd) { header *st=hd; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("playwave"); sys_playwav(stringof(hd)); moveresult(st,hd); } #endif euler-1.61.0/src/funcs.h0000644000175000001440000000600610330752506013635 0ustar ericusers/* * Euler - a numerical lab * * file : funcs.h -- builtin functions */ #ifndef _FUNCS_H_ #define _FUNCS_H_ #include "stack.h" /* * basic ops */ void complex_multiply (double *x, double *xi, double *y, double *yi, double *z, double *zi); void complex_divide (double *x, double *xi, double *y, double *yi, double *z, double *zi); void copy_complex (double *x, double *y); void add (header *hd, header *hd1); void subtract (header *hd, header *hd1); void dotmultiply (header *hd, header *hd1); void dotdivide (header *hd, header *hd1); /* * constants */ void mpi (header *hd); void mtime (header *hd); void mfree (header *hd); void mepsilon (header *hd); void msetepsilon (header *hd); void mlocalepsilon (header *hd); /* * types */ void mtype(header *hd); void misreal (header *hd); void misinterval (header *hd); void miscomplex (header *hd); void misvar (header *hd); void misfunction (header *hd); /* * math for real, complex, interval */ void msin (header *hd); void mcos (header *hd); void mtan (header *hd); void masin (header *hd); void macos (header *hd); void matan (header *hd); void mexp (header *hd); void mlog (header *hd); void msqrt (header *hd); void mpower (header *hd); void mmod (header *hd); void mintersects (header *hd); void mdegree (header *hd); void msign (header *hd); void mceil (header *hd); void mfloor (header *hd); void mround (header *hd); void mcomplex (header *hd); void mconj (header *hd); void mre (header *hd); void mim (header *hd); void marg (header *hd); void mabs (header *hd); /* * compare operators */ void mgreater (header *hd); void mless (header *hd); void mgreatereq (header *hd); void mlesseq (header *hd); void mequal (header *hd); void munequal (header *hd); void maboutequal (header *hd); /* * logical operators */ void mnot (header *hd); void mand (header *hd); void mor (header *hd); /* * statistics - random numbers */ void mfastrandom (header *hd); void mnormal (header *hd); void mfak (header *hd); void mlogfak (header *hd); void mbin (header *hd); void mlogbin (header *hd); void mtd (header *hd); void minvgauss (header *hd); void minvtd (header *hd); void mchi (header *hd); void mfdis (header *hd); void mstatistics (header *hd); /* * sorting */ void mmax (header *hd); void mmin (header *hd); void msort (header *hd); void mmax1 (header *hd); void mmin1 (header *hd); /* * programming */ void margn (header *hd); void margs (header *hd); void margs0 (header *hd); void minterpret (header *hd); void mevaluate (header *hd); /* * events */ void mwait (header *hd); void mkey (header *hd); void mcode (header *hd); void minput (header *hd); void mlineinput (header *hd); /* * utilities : files, dir */ void mcd (header *hd); void mdir (header *hd); void mdir0 (header *hd); void msetkey (header *hd); void mchar (header *hd); void mascii (header *hd); void merror (header *hd); void merrlevel (header *hd); void mprintf (header *hd); void mname (header *hd); #ifndef NOSHRINK void mshrink (header *hd); #endif #ifdef WAVES void mplaywav (header *hd); #endif #endif euler-1.61.0/src/main.c0000644000175000001440000024030110331247431013431 0ustar ericusers/************************************************************************* * * GTK Euler * *************************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../pixmaps/icon.xpm" #include "../pixmaps/logo.xpm" #ifdef RS6000 #include void gettimer (int, struct timestruc_t *); #endif #include "sysdep.h" #include "mainloop.h" #include "help.h" #include "rc.h" #include "term.h" #include "metagtk.h" #include "metaps.h" #include "output.h" #include "earray.h" /*----------------------------------------------------------------------- * Global variables *----------------------------------------------------------------------*/ static int is_demo = 0; static int in_text = 1; static EulerPrefs prefs; static GtkWidget *term_window = NULL; static GtkWidget *term; static GtkWidget *meta_window = NULL; static GtkWidget *meta; /*----------------------------------------------------------------------- * Euler callbacks *----------------------------------------------------------------------*/ /* text_mode * Switch to text. Graphics should not be deleted. * On a window system make text visible. */ void text_mode (void) { if (!in_text) { in_text=1; gdk_window_raise(term_window->window); } } /* graphic_mode * Switch to graphics. Text must not be deleted. * On a window system make graphics visible. */ void graphic_mode (void) { if (in_text) { in_text=0; gdk_window_raise(meta_window->window); } } /************************************************************************ * * Graphic window * * The graphic screen has coordinates from 0.0 to 1024.0 (double). * There should be a function, which computes the correct screen * coordinates from these internal ones. * ************************************************************************/ int usecolors=1; /* getpixelsize * Compute the size of pixel in screen coordinates. */ void getpixelsize (double *x, double *y) { *x=1024.0/meta->allocation.width; *y=1024.0/meta->allocation.height; } /* gflush * Flush out remaining graphic commands (for multitasking). * This serves to synchronize the graphics on multitasking systems. */ void gflush (void) { } /* * S O U N D W A V E S */ #ifdef WAVES void sys_playwav (char *file) { } #endif /* * G R A P H I C I N P U T */ /* mouse * wait, until the user marked a screen point with the mouse. * Return screen coordinates. */ void mouse (double *x, double *y) { while (1) { if (gdk_events_pending()) { GtkMeta *m = GTK_META(meta); gtk_main_iteration(); if (m->x>0.0 && m->y>0.0) { *x=m->x; *y=m->y; m->x = m->y = -1.0; return; } else { GtkTerm *t = GTK_TERM(term); if (t->scan==escape) { *x=-1.0; *y=-1.0; return; } t->scan = t->code = 0; } } else usleep(1); } } static int notekey=0; /* test_key * see, if user pressed the keyboard. * return the scancode, if he did. */ int test_key () { while (gtk_events_pending()) { GtkTerm *t = GTK_TERM(term); gtk_main_iteration(); if (t->scan==escape) { t->scan = t->code = 0; return escape; } else { if (t->scan) notekey=t->scan; else notekey=t->code; t->scan = t->code = 0; return 0; } } return 0; } int test_code (void) { int key=0; if (notekey) { key=notekey; notekey=0; return key; } while (gtk_events_pending()) { GtkTerm *t=GTK_TERM(term); gtk_main_iteration(); if (t->scan) { key = t->scan; t->scan = t->code = 0; return key; } else if (t->code) { key = t->code; t->scan = t->code = 0; return key; } } return 0; } /************************************************************************ * * Text Window * * The following text screen commands should be emulated on a graphic * work station. This can be done by a standard emulator (e.g. VT100) * or within a window displaying the text. Additional features may be * added, such as viewing old text. But the input line should be * visible as soon as a key is pressed by the user. * ************************************************************************/ /* Clear the text screen */ void clear_screen (void) { gtk_term_clear(term); } /* Print a line onto the text screen, parse tabs and '\n'. * Printing should be done at the cursor position. There is no need * to clear the line at a '\n'. * The cursor should move forward with the print. * Think of the function as a simple emulator. * If you have a line buffered input with echo then do not print, * when the command line is on. */ void gprint (char *s) /* print an output text (no newline) */ { gtk_term_print(term,s); } /* wait for a keystroke. return the scancode and the ascii code. * scancode should be a code from scantyp. Do at least generate * 'enter'. */ gboolean forcebreak = FALSE; int wait_key (int *scan) { int key; GtkTerm *t = GTK_TERM(term); t->scan = t->code = 0; *scan=0; while (!forcebreak) { if (gtk_events_pending()) { gtk_main_iteration(); if (t->scan || t->code) break; t->scan = t->code = 0; } else usleep(1); } if (forcebreak){ t->scan = enter; e_insert(t->history,e_get_length(t->history)-1,e_get_text(t->a,t->cur)+t->promptlen,0); if (e_get_length(t->history) > t->max_history) e_remove(t->history,0); t->hist=e_get_length(t->history)-1; set_editline(e_get_text(t->a,t->cur)+t->promptlen); key = 0; forcebreak = FALSE; } else key = t->code; *scan = t->scan; t->scan = t->code = 0; return key; } /* the command line is active (edit.c) */ void edit_on (void) { gtk_term_edit_on(term); } /* the command line is no longer in use (graphics or computing) (edit.c) */ void edit_off (void) { gtk_term_edit_off(term); } /************************************************************************ * * System * ************************************************************************/ static char path[256]; /* sets the path if dir!=0 and returns the path */ char *cd (char *dir) { chdir(dir); if (getcwd(path,256)) return path; return dir; } static void shellsort(char **buf, int n) { int h, i, j; int seq[28]; int p1=1, p2=1, p3=1, s=-1; /* * establish increment sequence (see Knuth, Vol 3) */ do { if (++s % 2) { seq[s] = 8*p1 - 6*p2 + 1; } else { seq[s] = 9*p1 - 9*p3 + 1; p2 *= 2; p3 *= 2; } p1 *= 2; } while(3*seq[s] < n); s = s > 0 ? s-1 : 0; /* * sort */ while (s >= 0) { /* sort-by-insertion in increments of h */ h = seq[s--]; for (i = h; i= 0 && strcmp(buf[j], t)>0; j -= h) buf[j+h] = buf[j]; buf[j+h] = t; } } } static int match (char *pat, char *s) { if (*pat==0) return *s==0; if (*pat=='*') { pat++; if (!*pat) return 1; while (*s) { if (match(pat,s)) return 1; s++; } return 0; } if (*s==0) return 0; if (*pat=='?') return match(pat+1,s+1); if (*pat!=*s) return 0; return match(pat+1,s+1); } /* * scan a directory and get : * files : an array of entries matching the pattern * files_count : number of files entries * the function returns the max length of a file entry */ int scan_dir(char *dir_name, char *pat, char ** files[], int *files_count) { DIR *dir; struct dirent *entry; int entry_count=0, len=0; char **buf = NULL; dir = opendir(dir_name); if (dir) { while((entry = readdir(dir)) != NULL) { if (match(pat,entry->d_name)) { int l=strlen(entry->d_name); len = MAX(len,l); entry_count ++; buf = (char**)realloc(buf,entry_count*sizeof(char *)); buf[entry_count-1]=(char*)malloc(l+1); strcpy(buf[entry_count-1],entry->d_name); } } closedir(dir); shellsort(buf, entry_count); } *files = buf; *files_count = entry_count; return len; } /* execute * Call an external program, return 0, if there was no error. * No need to support this on multitasking systems. */ int execute (char *dir, char *progname) { return 0; } /* shrink * allows shrinking of memory for single task systems. * simply return 1 if you do not support this or set NOSHRINK in funcs.c */ int shrink (size_t size) { return 1; } /* myclock * define a timer in seconds. */ double myclock (void) { #ifdef RS6000 struct timestruc_t t; gettimer(TIMEOFDAY,&t); return (t.tv_sec+t.tv_nsec/1000000000.0); #else return ((double)(times(NULL)))/CLK_TCK; #endif } /* sys_wait * Wait for time seconds or until a key press. * Return the scan code or 0 (time exceeded). */ void sys_wait (double delay, int *scan) { double now; GtkTerm *t = GTK_TERM(term); now=myclock(); *scan=0; t->scan = t->code = 0; while (myclock()scan) { *scan = notekey = t->scan; t->scan = t->code = 0; } else if (t->code) { *scan = notekey = t->code; t->scan = t->code = 0; } } if (*scan==switch_screen) { if (in_text) { graphic_mode(); wait_key(scan); text_mode(); } else { text_mode(); wait_key(scan); graphic_mode(); } *scan=0; } if (*scan) return; usleep(1); } *scan=0; } /* stack_init * get memory for stack. */ static int stack_init (long size) { ramstart = (char *)malloc(size*1024l); if (!ramstart) return 0; /* fail */ ramend = ramstart+size*1024l; return 1; /* success */ } static void save_rc() { if (prefs.saveatexit) eulerrc_save(&prefs); } static void euler_exit() { save_rc(); exit(0); } /*----------------------------------------------------------------------- * GTK things *----------------------------------------------------------------------*/ static void destroy_yesno_dialog(GtkWidget *widget) { if (widget) { GtkWidget *dialog = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "dialog"); gtk_widget_destroy(dialog); } } static char* get_filename(gpointer data, char *prefix) { char *filename; char *newname; GtkWidget *filechooser = (GtkWidget*)data; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooser)); if (!g_str_has_suffix(filename, prefix)) newname = g_strdup_printf("%s%s", filename, prefix); else newname = g_strdup(filename); return newname; } static void infobox(GtkWidget *parent, char *text) { GtkWidget * dialog; GtkWidget * hbox; GtkWidget * icon; GtkWidget * label; GtkWidget * button; dialog = gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW(dialog),"Information"); gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(parent)); gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_position(GTK_WINDOW(dialog),GTK_WIN_POS_MOUSE); g_signal_connect(G_OBJECT(dialog),"delete_event",G_CALLBACK(gtk_widget_destroy),NULL); g_signal_connect(G_OBJECT(dialog),"destroy",G_CALLBACK(gtk_widget_destroy),NULL); gtk_widget_realize(dialog); hbox = gtk_hbox_new(FALSE,10); gtk_container_set_border_width(GTK_CONTAINER(hbox), 10); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),hbox,TRUE,TRUE,0); icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG); gtk_box_pack_start(GTK_BOX(hbox),icon,FALSE,FALSE,0); label = gtk_label_new(text); gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(hbox),label,TRUE,TRUE,0); /* * setup the buttons (Yes, No and Cancel) */ button = gtk_button_new_from_stock(GTK_STOCK_OK); GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT); g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(dialog)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); gtk_widget_grab_default(button); gtk_widget_show_all(dialog); } static void yesnoquestion(char *text, GCallback yes_cb, GCallback no_cb, GtkWidget *window) { GtkWidget * dialog; GtkWidget * hbox; GtkWidget * icon; GtkWidget * label; GtkWidget * button; dialog = gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW(dialog),"Question"); gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(window)); gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_position(GTK_WINDOW(dialog),GTK_WIN_POS_CENTER_ON_PARENT); g_signal_connect(G_OBJECT(dialog),"delete_event", G_CALLBACK(gtk_widget_destroy),NULL); g_signal_connect(G_OBJECT(dialog),"destroy", G_CALLBACK(gtk_widget_destroy),NULL); gtk_widget_realize(dialog); hbox = gtk_hbox_new(FALSE,10); gtk_container_set_border_width(GTK_CONTAINER(hbox), 10); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),hbox,TRUE,TRUE,0); icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); gtk_box_pack_start(GTK_BOX(hbox),icon,FALSE,FALSE,0); label = gtk_label_new(text); gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(hbox),label,TRUE,TRUE,0); /* * setup the buttons (Yes, No and Cancel) */ button = gtk_button_new_from_stock(GTK_STOCK_YES); GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT); g_object_set_data(G_OBJECT(button), "dialog", (gpointer) dialog); if (GTK_IS_FILE_CHOOSER(window)) g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(yes_cb),window); else g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(yes_cb),NULL); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); gtk_widget_grab_default(button); button = gtk_button_new_from_stock(GTK_STOCK_NO); GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT); g_object_set_data(G_OBJECT(button), "dialog", (gpointer) dialog); if (no_cb) g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(no_cb),NULL); else g_signal_connect_swapped(G_OBJECT(button),"clicked", G_CALLBACK(gtk_widget_destroy),dialog); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); GTK_WIDGET_SET_FLAGS(button,GTK_CAN_DEFAULT); if (GTK_IS_FILE_CHOOSER(window)) g_signal_connect_swapped(G_OBJECT(button),"clicked", G_CALLBACK(gtk_widget_destroy),window); g_signal_connect_swapped(G_OBJECT(button),"clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(dialog)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); gtk_widget_show_all(dialog); } /*----------------------------------------------------------------------- * About box *----------------------------------------------------------------------*/ void activate_url(GtkAboutDialog *about, const gchar *url, gpointer data) { char *browser; browser = g_strconcat(prefs.browser," ",url," &", NULL); system(browser); g_free(browser); } static void about() { GtkWidget *aboutdialog; GdkPixbuf *buff; const gchar *authors[] = {"Rene Grothmann ", "Eric BoucharĂ© ", "Puji Prasetiyo ", NULL }; aboutdialog = gtk_about_dialog_new (); buff = gdk_pixbuf_new_from_xpm_data((const char**) logo_xpm); gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (aboutdialog), buff); gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (aboutdialog), VERSION); gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (aboutdialog), "Euler"); gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (aboutdialog), "Copyright © 2001,2005 Rene Grothmann, Eric BoucharĂ©, Puji Prasetiyo"); gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (aboutdialog), "EULER is a program for quickly and interactively\n" "computing with real and complex numbers and\n" "matrices, or with intervals. It can draw your\n" "functions in two and three dimensions"); gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (aboutdialog), authors); gtk_about_dialog_set_url_hook (activate_url, NULL, NULL); gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (aboutdialog), "http://euler.sourceforge.net"); gtk_about_dialog_set_license(GTK_ABOUT_DIALOG (aboutdialog), "This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU Library General Public License as\n" "published by the Free Software Foundation; either version 2 of the\n" "License, or (at your option) any later version.\n" "\n" "This library is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" "Library General Public License for more details.\n" "\n" "You should have received a copy of the GNU Library General Public\n" "License along with the Gnome Library; see the file COPYING.LIB. If not,\n" "write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n"); gtk_dialog_run (GTK_DIALOG(aboutdialog)); gtk_widget_destroy (aboutdialog); } /*--------------------------------------------------------------------------- * preference box *---------------------------------------------------------------------------*/ static GtkWidget * estack; static GtkWidget * gstack; static GtkWidget * glines; static GtkWidget * browser; static GtkWidget * color_button[16]; static GtkWidget * atexitbut; static GtkWidget * fontbutton; static GtkWidget * editordialog; static GtkWidget * etextview; static short def_colors[3][MAX_COLORS] = { {255,0,100,0 ,0 ,0 ,100,150,100,50,220 ,80 ,80 ,80 ,140,190}, {255,0,0 ,100,0 ,100,100,150,100,50,80 ,220 ,80 ,140 ,140,190}, {255,0,0 ,0 ,100,100, 0,150,100,50,80 ,80 ,220 ,140 , 80,190} }; static void prefs_apply_cb(GtkWidget *widget, gpointer data) { int val, i, j, changed = 0; const gchar *pfont = NULL; val = atol(gtk_entry_get_text(GTK_ENTRY(estack))); if (val) prefs.estack = val; val = atol(gtk_entry_get_text(GTK_ENTRY(gstack))); if (val) prefs.gstack = val; val = atol(gtk_entry_get_text(GTK_ENTRY(glines))); pfont = gtk_font_button_get_font_name(GTK_FONT_BUTTON(fontbutton)); if (pfont) { strcpy(prefs.pfont,pfont); if (editordialog) gtk_widget_modify_font(etextview, pango_font_description_from_string(pfont)); } if (val) { prefs.glines = val; setmetalines(prefs.glines); gtk_meta_update_lines(meta); } for (i=0 ; i<16 ; i++) { GdkColor gcolor; short color[3]; gtk_color_button_get_color(GTK_COLOR_BUTTON(color_button[i]),&gcolor); color[0] = gcolor.red>>8; color[1] = gcolor.green>>8; color[2] = gcolor.blue>>8; for (j=0 ; j<3 ; j++) if (prefs.colors[j][i]!=color[j]) { prefs.colors[j][i]=color[j]; changed =1; } } if (changed) { setmetacolors(prefs.colors); gtk_meta_update_colors(meta); } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(atexitbut))) prefs.saveatexit = 1; else prefs.saveatexit = 0; if (strlen(gtk_entry_get_text(GTK_ENTRY(browser)))) strcpy(prefs.browser,gtk_entry_get_text(GTK_ENTRY(browser))); } static void prefs_ok_cb(GtkWidget *widget, gpointer data) { prefs_apply_cb(widget,data); } static void prefs_reset_cb(GtkWidget *widget, gpointer data) { GdkColor color; char *s; int i; gtk_entry_set_text(GTK_ENTRY(browser),E_BROWSER_DEFAULT); s = g_strdup_printf("%ld",E_ESTACK_DEFAULT); gtk_entry_set_text(GTK_ENTRY(estack),s); g_free(s); s = g_strdup_printf("%ld",E_GSTACK_DEFAULT); gtk_entry_set_text(GTK_ENTRY(gstack),s); g_free(s); s = g_strdup_printf("%d",E_GLINES_DEFAULT); gtk_entry_set_text(GTK_ENTRY(glines),s); g_free(s); s = g_strdup_printf("%s",E_PFONT_DEFAULT); gtk_font_button_set_font_name(GTK_FONT_BUTTON(fontbutton),s); g_free(s); for (i=0 ; i<16 ; i++) { color.red = ((gushort)def_colors[0][i])<<8; color.green = ((gushort)def_colors[1][i])<<8; color.blue = ((gushort)def_colors[2][i])<<8; gtk_color_button_set_color(GTK_COLOR_BUTTON(color_button[i]), &color); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(atexitbut),TRUE); } static void prefs_box() { GtkWidget *dialog; GtkWidget *notebook; GtkWidget *frame; GtkWidget *label; GtkWidget *alignment; GtkWidget *table; GtkWidget *hbox; GtkWidget *pref_vbox; GtkWidget *vbox; GtkWidget *button; int i; char *s; dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT(dialog),"delete_event", G_CALLBACK(gtk_widget_destroy),NULL); g_signal_connect (G_OBJECT(dialog),"destroy", G_CALLBACK(gtk_widget_destroy),NULL); gtk_window_set_title (GTK_WINDOW (dialog), "Preferences ..."); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); pref_vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (dialog), pref_vbox); gtk_container_set_border_width (GTK_CONTAINER (pref_vbox), 5); notebook = gtk_notebook_new (); gtk_box_pack_start (GTK_BOX (pref_vbox), notebook, TRUE, TRUE, 0); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (notebook), frame); gtk_container_set_border_width (GTK_CONTAINER (frame), 5); alignment = gtk_alignment_new (0, 0, 0, 0); gtk_container_add (GTK_CONTAINER (frame), alignment); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (alignment), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); label = gtk_label_new ("You can setup the memory size of the stack used for calculation. This will be effective on Euler restart."); gtk_label_set_line_wrap(GTK_LABEL(label),TRUE); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new ("Stack memory (KB) :"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); estack = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), estack, FALSE, TRUE, 0); s = g_strdup_printf("%d",prefs.estack); gtk_entry_set_text(GTK_ENTRY(estack),s); g_free(s); label = gtk_label_new ("You can setup the memory size of the buffer used for graphics. This will be effective on Euler][ restart."); gtk_label_set_line_wrap(GTK_LABEL(label),TRUE); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); hbox = gtk_hbox_new (FALSE, 5); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new ("Graphics buffer (KB) :"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); gstack = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), gstack, FALSE, TRUE, 0); s = g_strdup_printf("%d",prefs.gstack); gtk_entry_set_text(GTK_ENTRY(gstack),s); g_free(s); label = gtk_label_new ("Memory"); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (notebook), frame); gtk_container_set_border_width (GTK_CONTAINER (frame), 5); alignment = gtk_alignment_new (0, 0, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (alignment), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); label = gtk_label_new ("You can setup the height of the graphics window in lines of text. This will not change the effective height of the graphics window, but the font size."); gtk_label_set_line_wrap(GTK_LABEL(label),TRUE); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); label = gtk_label_new ("Number of lines :"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); glines = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), glines, FALSE, FALSE, 0); s = g_strdup_printf("%d",prefs.glines); gtk_entry_set_text(GTK_ENTRY(glines),s); g_free(s); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); label = gtk_label_new("Editor font: "); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); fontbutton = gtk_font_button_new (); gtk_font_button_set_use_font (GTK_FONT_BUTTON (fontbutton), TRUE); gtk_font_button_set_font_name(GTK_FONT_BUTTON (fontbutton), prefs.pfont); gtk_box_pack_start (GTK_BOX (hbox), fontbutton, TRUE, TRUE, 0); label = gtk_label_new ("Font"); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (notebook), frame); gtk_container_set_border_width (GTK_CONTAINER (frame), 5); alignment = gtk_alignment_new (0, 0, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 5); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (alignment), vbox); label = gtk_label_new ("You can setup the colors used for the graphics. The change will be set when you click on Apply or OK."); gtk_label_set_line_wrap(GTK_LABEL(label),TRUE); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); table = gtk_table_new (8, 4, TRUE); gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); for (i=0 ; i<8 ; i++) { GdkColor color; s = g_strdup_printf("%d",i); label = gtk_label_new(s); gtk_widget_show (label); gtk_table_attach(GTK_TABLE(table),label,0,1,i,i+1,GTK_FILL|GTK_EXPAND,GTK_FILL|GTK_EXPAND,2,2); color_button[i] = gtk_color_button_new(); color.red = ((gushort)prefs.colors[0][i])<<8; color.green = ((gushort)prefs.colors[1][i])<<8; color.blue = ((gushort)prefs.colors[2][i])<<8; gtk_color_button_set_color(GTK_COLOR_BUTTON(color_button[i]), &color); gtk_widget_show (color_button[i]); gtk_table_attach(GTK_TABLE(table),color_button[i],1,2,i,i+1,GTK_FILL|GTK_EXPAND,GTK_FILL|GTK_EXPAND,2,2); g_free(s); s = g_strdup_printf("%d",i+8); color_button[i+8] = gtk_color_button_new(); color.red = ((gushort)prefs.colors[0][i+8])<<8; color.green = ((gushort)prefs.colors[1][i+8])<<8; color.blue = ((gushort)prefs.colors[2][i+8])<<8; gtk_color_button_set_color(GTK_COLOR_BUTTON(color_button[i+8]), &color); gtk_widget_show (color_button[i+8]); gtk_table_attach(GTK_TABLE(table),color_button[i+8],2,3,i,i+1,GTK_FILL|GTK_EXPAND,GTK_FILL|GTK_EXPAND,2,2); label = gtk_label_new(s); gtk_widget_show (label); gtk_table_attach(GTK_TABLE(table),label,3,4,i,i+1,GTK_FILL|GTK_EXPAND,GTK_FILL|GTK_EXPAND,2,2); g_free(s); } label = gtk_label_new ("Colors"); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 2), label); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (notebook), frame); gtk_container_set_border_width (GTK_CONTAINER (frame), 5); alignment = gtk_alignment_new (0, 0, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 5); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (alignment), vbox); atexitbut = gtk_check_button_new_with_mnemonic ("Save preferences at Euler exit"); gtk_box_pack_start (GTK_BOX (vbox), atexitbut, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (atexitbut), TRUE); label = gtk_label_new ("Browser used to view documentation"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); browser = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (vbox), browser, FALSE, FALSE, 0); s = g_strdup_printf("%s",prefs.browser); gtk_entry_set_text(GTK_ENTRY(browser),s); g_free(s); label = gtk_label_new ("Misc"); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3), label); hbox = gtk_hbox_new (FALSE, 3); gtk_box_pack_start (GTK_BOX (pref_vbox), hbox, FALSE, TRUE, 0); button = gtk_button_new_with_mnemonic ("Default"); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK (prefs_reset_cb),NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); g_signal_connect_swapped (G_OBJECT(button), "clicked", G_CALLBACK (gtk_widget_destroy),G_OBJECT(dialog)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); button = gtk_button_new_with_mnemonic ("Apply"); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK (prefs_apply_cb),NULL); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); button = gtk_button_new_from_stock (GTK_STOCK_OK); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK (prefs_ok_cb),NULL); g_signal_connect_swapped (G_OBJECT(button), "clicked", G_CALLBACK (gtk_widget_destroy),G_OBJECT(dialog)); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show_all(dialog); } static void edit_comment_cb(GtkWidget *widget, gpointer data) { char *text; GtkTextIter start, end; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(data)); if (buffer) { gtk_text_buffer_get_bounds(buffer, &start, &end); text = gtk_text_buffer_get_text(buffer, &start, &end, TRUE); if (g_utf8_validate(text, -1, NULL)) text = g_locale_from_utf8(text, -1, NULL, NULL, NULL); gtk_term_set_comment(term,text); } } /*--------------------------------------------------------------------------- * comment editor *---------------------------------------------------------------------------*/ static void editcomment(char *text) { GtkWidget *dialog; GtkWidget *vbox; GtkWidget *scrolledwindow; GtkWidget *textview; GtkWidget *hbuttonbox; GtkWidget *button; GtkTextBuffer *buffer; dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(dialog),"delete_event", G_CALLBACK(gtk_widget_destroy),NULL); g_signal_connect(G_OBJECT(dialog),"destroy", G_CALLBACK(gtk_widget_destroy),NULL); gtk_window_set_title (GTK_WINDOW (dialog), "Edit comment"); gtk_window_set_default_size (GTK_WINDOW (dialog), 350, 250); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); vbox = gtk_vbox_new (FALSE, 5); gtk_container_add (GTK_CONTAINER (dialog), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); buffer = gtk_text_buffer_new(NULL); if (text != NULL) gtk_text_buffer_set_text(buffer, text, -1); textview = gtk_text_view_new_with_buffer (buffer); gtk_container_add (GTK_CONTAINER (scrolledwindow), textview); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox), hbuttonbox, FALSE, FALSE, 0); button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); g_signal_connect_swapped(G_OBJECT(button),"clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(dialog)); gtk_container_add (GTK_CONTAINER (hbuttonbox), button); button = gtk_button_new_from_stock (GTK_STOCK_OK); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(edit_comment_cb),GTK_OBJECT(textview)); g_signal_connect_swapped(G_OBJECT(button),"clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(dialog)); gtk_container_add (GTK_CONTAINER (hbuttonbox), button); gtk_widget_show_all(dialog); } /*--------------------------------------------------------------------------- * menu *---------------------------------------------------------------------------*/ void file_select (GtkFileChooserAction action, gchar *title, gchar *pattern, gchar *filename, GCallback func, GtkWidget *window) { GtkWidget *dialog; GtkWidget *dialog_vbox; GtkWidget *dialog_action_area; GtkWidget *button; GtkFileFilter *filter; dialog = gtk_file_chooser_dialog_new (title, GTK_WINDOW(window), action, NULL); g_signal_connect(G_OBJECT(dialog), "delete_event", G_CALLBACK(gtk_widget_destroy), NULL); g_signal_connect(G_OBJECT(dialog), "destroy", G_CALLBACK(gtk_widget_destroy), NULL); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG); filter = gtk_file_filter_new (); gtk_file_filter_add_pattern(filter, pattern); gtk_file_filter_set_name(filter, pattern); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); if (filename && action == GTK_FILE_CHOOSER_ACTION_SAVE) gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), g_path_get_basename(filename)); dialog_vbox = GTK_DIALOG (dialog)->vbox; dialog_action_area = GTK_DIALOG (dialog)->action_area; gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area), GTK_BUTTONBOX_END); button = gtk_button_new_from_stock ("gtk-cancel"); g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), dialog); gtk_box_pack_start(GTK_BOX(dialog_action_area), button, FALSE, FALSE, 0); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); if (action == GTK_FILE_CHOOSER_ACTION_OPEN) button = gtk_button_new_from_stock ("gtk-open"); else if (action == GTK_FILE_CHOOSER_ACTION_SAVE) button = gtk_button_new_from_stock ("gtk-save"); else return; g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(func),dialog); gtk_box_pack_start(GTK_BOX(dialog_action_area), button, FALSE, FALSE, 0); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_widget_grab_default (button); gtk_widget_show_all(dialog); gtk_dialog_run (GTK_DIALOG (dialog)); } static void open_cb(GtkWidget *widget, gpointer data) { char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (!gtk_term_load(term,filename)) { char *txt = g_strdup_printf("\nI could not open the file\n%s !\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); } else { gtk_widget_destroy((GtkWidget*)data); is_demo = 0; } chdir(g_dirname(filename)); } static void postscript_cb(GtkWidget *widget, gpointer data) { char *filename = get_filename(data, ".eps"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (!dump_postscript(filename)) { char *txt = g_strdup_printf("\nI could not save the postscript graphics to the file\n%s\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); } else gtk_widget_destroy((GtkWidget*)data); } static void overwrite_yes_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); char *filename = get_filename(data, ".en"); if (!gtk_term_save(term,filename)) { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); } else gtk_widget_destroy((GtkWidget*)data); chdir(g_dirname(filename)); } static void save_as_cb(GtkWidget *widget, gpointer data) { struct stat statbuf; char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (stat(filename, &statbuf) == 0) /* file exists */ yesnoquestion("Destination file exists, overwrite it?", G_CALLBACK(overwrite_yes_cb), NULL, (GtkWidget*)data); else overwrite_yes_cb(NULL, data); } static void overwrite_yes_open_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); char *filename = get_filename(data, ".en"); if (gtk_term_save(term,filename)) { gtk_widget_destroy((GtkWidget*)data); chdir(g_dirname(filename)); file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Notebook ...", "*.en", NULL, G_CALLBACK(open_cb), term_window); } else { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\nThe notebook open command is aborted ...\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); chdir(g_dirname(filename)); } } static void save_as_open_cb(GtkWidget *widget, gpointer data) { struct stat statbuf; char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (stat(filename, &statbuf) == 0) /* file exists */ yesnoquestion("Destination file exists, overwrite it?", G_CALLBACK(overwrite_yes_open_cb), NULL, (GtkWidget*)data); else overwrite_yes_open_cb(NULL, data); } static void save_as_new_cb(GtkWidget *widget, gpointer data) { char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (gtk_term_save(term,filename)) { gtk_widget_destroy((GtkWidget*)data); gtk_term_clear_new(term); is_demo = 0; } else { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\nThe new notebook command is aborted ...\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); } chdir(g_dirname(filename)); } static void overwrite_yes_quit_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); char *filename = get_filename(data, ".en"); if (gtk_term_save(term,filename)){ gtk_widget_destroy((GtkWidget*)data); euler_exit(); } else { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\nThe quit notebook command is aborted ...\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); } chdir(g_dirname(filename)); } static void save_as_quit_cb(GtkWidget *widget, gpointer data) { struct stat statbuf; char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (stat(filename, &statbuf) == 0) /* file exists */ yesnoquestion("Destination file exists, overwrite it?", G_CALLBACK(overwrite_yes_quit_cb), NULL, (GtkWidget*)data); else overwrite_yes_quit_cb(NULL, data); } static void yes_quit_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_quit_cb), term_window); else { gtk_term_save(term,NULL); euler_exit(); } } static void no_quit_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); euler_exit(); } static void quit_cb(GObject *widget, gpointer data) { if (!is_demo && gtk_term_is_changed(term)) yesnoquestion("\nThe current notebook has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_quit_cb),G_CALLBACK(no_quit_cb),term_window); else euler_exit(); } /*--------------------------------------------------------------------------- * toolbar callbacks *---------------------------------------------------------------------------*/ static void yes_new_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_new_cb), term_window); else { gtk_term_save(term,NULL); gtk_term_clear_new(term); is_demo = 0; } } static void no_new_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); gtk_term_clear_new(term); is_demo = 0; } static void yes_open_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_open_cb), term_window); else { gtk_term_save(term,NULL); file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Notebook ...", "*.en", NULL, G_CALLBACK(open_cb), term_window); } } static void no_open_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Notebook ...", "*.en", NULL, G_CALLBACK(open_cb), term_window); } /*------------------------------------------------------------- * internal editor *------------------------------------------------------------*/ static GtkWidget * estatusbar; static GtkWidget * entry; static GtkWidget * loadbutton; static GtkWidget * savebutton; static GtkTextBuffer * etextbuffer; static gint row, col; static gchar *efname = ""; static gboolean echanged = FALSE; static void buffer_changed(void) { char *title = g_strdup_printf("Editor [*%s]",efname); gtk_window_set_title(GTK_WINDOW(editordialog), title); g_free(title); echanged = TRUE; gtk_widget_set_sensitive(loadbutton, FALSE); gtk_widget_set_sensitive(savebutton, TRUE); } static void buffer_saved(void) { char *title = g_strdup_printf("Editor [%s]",efname); gtk_window_set_title(GTK_WINDOW(editordialog), title); g_free(title); echanged = FALSE; gtk_widget_set_sensitive(loadbutton, strlen(efname)); gtk_widget_set_sensitive(savebutton, FALSE); } static void clear_editor(void) { efname = ""; gtk_text_buffer_set_text(etextbuffer, "", -1); gtk_widget_grab_focus (etextview); buffer_saved(); } static void get_row_col(GtkTextIter iter, int *row, int *col) { GtkTextIter start; guint tab_size = 8; *row = gtk_text_iter_get_line(&iter); start = iter; gtk_text_iter_set_line_offset(&start, 0); *col = 0; while (!gtk_text_iter_equal(&start, &iter)) { if (gtk_text_iter_get_char (&start) == '\t') (*col) += (tab_size - (*col % tab_size)); else ++(*col); gtk_text_iter_forward_char(&start); } } static void find(GtkTextView *text_view, const gchar *text, GtkTextIter *iter) { GtkTextIter mstart, mend; GtkTextMark *last_pos; if(gtk_text_iter_forward_search(iter, text, 0, &mstart, &mend, NULL)) { gtk_text_buffer_select_range(etextbuffer, &mstart, &mend); last_pos = gtk_text_buffer_create_mark(etextbuffer, "last_pos", &mend, FALSE); gtk_text_view_scroll_to_mark(text_view, last_pos, 0, TRUE, 0.5, 0.5); } } static void save_file(GtkWidget *parent, char *filename) { FILE *file; char *text; GtkTextIter start, end; file = fopen(filename,"w"); if (!file) { char *txt = g_strdup_printf("\nCould not save the file\n%s !\n",filename); infobox(parent, txt); g_free(txt); return; } else { gtk_text_buffer_get_bounds(etextbuffer, &start, &end); text = gtk_text_buffer_get_text(etextbuffer, &start, &end, TRUE); if (g_utf8_validate(text, -1, NULL)) text = g_locale_from_utf8(text, -1, NULL, NULL, NULL); fprintf(file,text); fclose(file); efname = filename; buffer_saved(); if (GTK_IS_FILE_CHOOSER(parent)) gtk_widget_destroy(parent); } chdir(g_dirname(filename)); } static void cursor_moved(void) { char *msg; GtkTextIter iter; int r, c; gtk_text_buffer_get_iter_at_mark (etextbuffer, &iter, gtk_text_buffer_get_insert(etextbuffer)); get_row_col(iter, &r, &c); row = r; col = c; msg = g_strdup_printf("Ln:%d Col:%d", row + 1, col + 1); gtk_statusbar_push(GTK_STATUSBAR (estatusbar), 0, msg); g_free (msg); } static void overwrite_yes_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); save_file((GtkWidget*)data, get_filename(data, ".e")); } static void save_as_e_cb(GtkWidget *widget, gpointer data) { struct stat statbuf; char *filename = get_filename(data, ".e"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (stat(filename, &statbuf) == 0) /* file exists */ yesnoquestion("Destination file exists, overwrite it?", G_CALLBACK(overwrite_yes_e_cb), NULL, (GtkWidget*)data); else save_file((GtkWidget*)data, filename); } static void open_file(GtkWidget *parent, char *filename) { FILE *file; char line[1024]; char *text; int length; if ((!filename) || (strcmp(filename,"") == 0)) return; if (!(file = fopen(filename, "r+"))) if (!(file = fopen(filename, "r"))) { char *txt = g_strdup_printf("\nCould not open the file\n%s !\n",filename); infobox(parent, txt); g_free(txt); return; } if (GTK_IS_FILE_CHOOSER(parent)) gtk_widget_destroy(parent); clear_editor(); efname = filename; while(!feof(file) && !ferror(file)) { length = fread(line, sizeof(char), 1023, file); line[length] = '\0'; if (!g_utf8_validate(line, strlen(line), NULL)) { text = g_locale_to_utf8(line, strlen(line), NULL, NULL, NULL); gtk_text_buffer_insert_at_cursor(etextbuffer, text, strlen(text)); } else gtk_text_buffer_insert_at_cursor(etextbuffer, line, strlen(line)); } fclose(file); buffer_saved(); chdir(g_dirname(filename)); } static void open_e_cb(GtkWidget *widget, gpointer data) { open_file((GtkWidget*)data, get_filename(data, ".e")); } static void save_or_save_as(void) { if (strlen(efname)) save_file(editordialog, efname); else file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Module As ...", "*.e", "untitled", G_CALLBACK(save_as_e_cb), editordialog); } static void yes_new_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); save_or_save_as(); clear_editor(); } static void no_new_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); clear_editor(); } static void yes_open_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); save_or_save_as(); file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Module ...", "*.e", NULL, G_CALLBACK(open_e_cb), editordialog); } static void no_open_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open module ...", "*.e", NULL, G_CALLBACK(open_e_cb), editordialog); } static void yes_quit_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); save_or_save_as(); gtk_widget_destroy(editordialog); editordialog = NULL; } static void no_quit_e_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); gtk_widget_destroy(editordialog); editordialog = NULL; } static void yes_quit_e_quit_cb(GtkWidget *widget, gpointer data) { yes_quit_e_cb(widget, NULL); quit_cb(NULL, NULL); } static void no_quit_e_quit_cb(GtkWidget *widget, gpointer data) { no_quit_e_cb(widget, NULL); quit_cb(NULL, NULL); } static void editor_delete_cb(GtkWidget *widget, gpointer data) { if (echanged) if (widget) yesnoquestion("\nThe current module has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_quit_e_quit_cb),G_CALLBACK(no_quit_e_quit_cb),editordialog); else yesnoquestion("\nThe current module has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_quit_e_cb),G_CALLBACK(no_quit_e_cb),editordialog); else { gtk_widget_destroy(editordialog); editordialog = NULL; if (widget) quit_cb(NULL, NULL); } } static void on_editor_new(GtkWidget *widget, gpointer data) { if (echanged) yesnoquestion("\nThe current module has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_new_e_cb),G_CALLBACK(no_new_e_cb),editordialog); else clear_editor(); } static void on_editor_open(GtkWidget *widget, gpointer data) { if(echanged) yesnoquestion("\nThe current module has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_open_e_cb),G_CALLBACK(no_open_e_cb),editordialog); else file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Module ...", "*.e", NULL, G_CALLBACK(open_e_cb), editordialog); } static void on_editor_save(GtkWidget *widget, gpointer data) { save_or_save_as(); } static void on_editor_save_as(GtkWidget *widget, gpointer data) { file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Module As ...", "*.e", strlen(efname) ? efname : "untitled", G_CALLBACK(save_as_e_cb), editordialog); } static void on_editor_find(GtkWidget *widget, gpointer data) { const gchar *text; GtkTextMark *last_pos; GtkTextIter iter; int r, c; text = gtk_entry_get_text(GTK_ENTRY(entry)); if (!strlen(text)) return; last_pos = gtk_text_buffer_get_mark (etextbuffer, "last_pos"); if (last_pos == NULL) gtk_text_buffer_get_start_iter (etextbuffer, &iter); else{ gtk_text_buffer_get_iter_at_mark (etextbuffer, &iter, last_pos); get_row_col(iter, &r, &c); if (row != r || col != (c-strlen(text))) gtk_text_buffer_get_iter_at_line_offset(etextbuffer, &iter, row, col); } find (GTK_TEXT_VIEW(etextview), text, &iter); } static void on_editor_load(GtkWidget *widget, gpointer data) { GtkTerm *t = GTK_TERM(term); if (t->editing) { if (!strlen(efname)) return; char *text = g_strdup_printf("load \"%s\"", efname); if (t->pos<=e_get_text_length(t->a,t->cur)) e_remove_text(t->a,t->cur,1,e_get_text_length(t->a,t->cur)-1); gtk_term_delete_current_output(term); output(text); gtk_term_redraw(term); strcpy(input_line, text); forcebreak = TRUE; g_free(text); } } static void editor(void) { if (editordialog) { gdk_window_raise(editordialog->window); return; } GtkWidget *vbox; GtkWidget *toolbar; GtkWidget *button; GtkWidget *toolitem; GtkWidget *vseparator; GtkWidget *scrolledwindow; GtkWidget *image; GtkTooltips *tips; PangoFontDescription *pfd; GtkIconSize tmp_toolbar_icon_size; editordialog = gtk_window_new (GTK_WINDOW_TOPLEVEL); // gtk_window_set_transient_for(GTK_WINDOW(editordialog),GTK_WINDOW(term_window)); // gtk_window_set_modal(GTK_WINDOW(editordialog),TRUE); gtk_window_set_position(GTK_WINDOW(editordialog),GTK_WIN_POS_MOUSE); gtk_window_set_title (GTK_WINDOW (editordialog), "Editor []"); gtk_window_set_default_size (GTK_WINDOW (editordialog), 500, 400); g_signal_connect_swapped(G_OBJECT(editordialog), "delete_event", G_CALLBACK(editor_delete_cb), NULL); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (editordialog), vbox); toolbar = gtk_toolbar_new (); gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0); gtk_toolbar_set_tooltips(GTK_TOOLBAR(toolbar), TRUE); gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), FALSE); tips = gtk_tooltips_new(); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar)); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_widget_show (toolitem); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); button = gtk_button_new (); gtk_tooltips_set_tip(tips, button, "Create new module", NULL); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_editor_new), NULL); gtk_container_add (GTK_CONTAINER (toolitem), button); image = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), image); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); button = gtk_button_new (); gtk_tooltips_set_tip(tips, button, "Open module", NULL); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_editor_open), NULL); gtk_container_add (GTK_CONTAINER (toolitem), button); image = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), image); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); savebutton = gtk_button_new (); gtk_tooltips_set_tip(tips, savebutton, "Save module", NULL); gtk_button_set_relief (GTK_BUTTON (savebutton), GTK_RELIEF_NONE); gtk_button_set_focus_on_click (GTK_BUTTON (savebutton), FALSE); g_signal_connect(G_OBJECT(savebutton), "clicked", G_CALLBACK(on_editor_save), NULL); gtk_container_add (GTK_CONTAINER (toolitem), savebutton); image = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (savebutton), image); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); button = gtk_button_new (); gtk_tooltips_set_tip(tips, button, "Save module as ...", NULL); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_editor_save_as), NULL); gtk_container_add (GTK_CONTAINER (toolitem), button); image = gtk_image_new_from_stock ("gtk-save-as", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), image); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); gtk_container_set_border_width (GTK_CONTAINER (toolitem), 5); vseparator = gtk_vseparator_new (); gtk_container_add (GTK_CONTAINER (toolitem), vseparator); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); entry = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (toolitem), entry); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); button = gtk_button_new (); gtk_tooltips_set_tip(tips, button, "Find text", NULL); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_editor_find), NULL); gtk_container_add (GTK_CONTAINER (toolitem), button); image = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), image); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); gtk_container_set_border_width (GTK_CONTAINER (toolitem), 5); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_container_add (GTK_CONTAINER (toolitem), vseparator); toolitem = (GtkWidget*) gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar), toolitem); loadbutton = gtk_button_new (); gtk_tooltips_set_tip(tips, loadbutton, "Load module into euler", NULL); gtk_button_set_relief (GTK_BUTTON (loadbutton), GTK_RELIEF_NONE); gtk_button_set_focus_on_click (GTK_BUTTON (loadbutton), FALSE); g_signal_connect(G_OBJECT(loadbutton), "clicked", G_CALLBACK(on_editor_load), NULL); gtk_container_add (GTK_CONTAINER (toolitem), loadbutton); image = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (loadbutton), image); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); etextview = gtk_text_view_new (); pfd = pango_font_description_from_string (prefs.pfont); gtk_widget_modify_font(etextview,pfd); gtk_container_add (GTK_CONTAINER (scrolledwindow), etextview); etextbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(etextview)); g_signal_connect (etextbuffer, "mark_set", G_CALLBACK (cursor_moved), NULL); g_signal_connect (etextbuffer, "changed", G_CALLBACK (cursor_moved), NULL); g_signal_connect (etextbuffer, "changed", G_CALLBACK (buffer_changed), NULL); estatusbar = gtk_statusbar_new(); gtk_box_pack_start(GTK_BOX(vbox), estatusbar, FALSE, FALSE, 0); if (strlen(efname)) open_file(editordialog, efname); gtk_widget_show_all(editordialog); gtk_widget_grab_focus (etextview); cursor_moved(); buffer_saved(); } /*--------------------------------------------------------------------------- * term callbacks and drag & drop *---------------------------------------------------------------------------*/ static guint id; static gboolean savesuccess = FALSE; static GdkAtom text_uri_list, application_octet_stream, text_plain; enum {TARGET_RAW_DATA, TARGET_URI_LIST}; /* Targets which other apps can offer to us */ static GtkTargetEntry targets_to_accept[] = { {"application/octet-stream", 0, TARGET_RAW_DATA}, {"text/uri-list", 0, TARGET_URI_LIST} }; #define MAX_HOST_NAME_LEN 256 /* XXX: Limit */ char our_host_name[MAX_HOST_NAME_LEN]; static gchar *dnd_path=NULL; static void term_changed_cb(GtkWidget *widget, gpointer data) { char *title = g_strdup_printf("Euler [*%s]",gtk_term_get_name(term)); gtk_window_set_title(GTK_WINDOW(term_window), title); g_free(title); } static void term_saved_cb(GtkWidget *widget, gpointer data) { char *title = g_strdup_printf("Euler [%s]",gtk_term_get_name(term)); gtk_window_set_title(GTK_WINDOW(term_window), title); g_free(title); } static void term_editing_cb(GtkWidget *widget, gpointer data) { if (gtk_term_is_initialized(term)) gtk_statusbar_pop(GTK_STATUSBAR(widget),id); else gtk_statusbar_push(GTK_STATUSBAR(widget),id," Editing ..."); } static void term_interpreting_cb(GtkWidget *widget, gpointer data) { gtk_statusbar_push(GTK_STATUSBAR(widget),id," Running ..."); } static gint term_cfg_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data) { GtkTerm *term = GTK_TERM(widget); prefs.twidth = term->twidth; prefs.theight = term->theight; return FALSE; } static void overwrite_yes_dndopen_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); char *filename = get_filename(data, ".en"); if (gtk_term_save(term,filename)) { gtk_widget_destroy((GtkWidget*)data); chdir(g_dirname(dnd_path)); savesuccess = gtk_term_load(term, dnd_path); } else { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\nThe notebook open command is aborted ...\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); chdir(g_dirname(filename)); savesuccess = FALSE; } } static void save_as_dndopen_cb(GtkWidget *widget, gpointer data) { struct stat statbuf; char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (stat(filename, &statbuf) == 0) /* file exists */ yesnoquestion("Destination file exists, overwrite it?", G_CALLBACK(overwrite_yes_dndopen_cb), NULL, (GtkWidget*)data); else { overwrite_yes_dndopen_cb(NULL, data); gtk_widget_destroy((GtkWidget*)data); } } static void yes_dndopen_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_dndopen_cb), term_window); else { gtk_term_save(term,NULL); gtk_term_load(term, dnd_path); chdir(g_dirname(dnd_path)); } } static void no_dndopen_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); gtk_term_load(term, dnd_path); chdir(g_dirname(dnd_path)); } static GdkAtom best_raw(GdkDragContext *context); static gboolean provides(GdkDragContext *context, GdkAtom target); /* Convert a list of URIs into a list of strings. * Lines beginning with # are skipped. * The text block passed in is zero terminated (after the final CRLF) */ GSList *uri_list_to_gslist(char *uri_list) { GSList *list = NULL; while (*uri_list) { char *linebreak; char *uri; int length; linebreak = strchr(uri_list, 13); if (!linebreak || linebreak[1] != 10) { infobox(term_window, "Incorrect or missing line break " "in text/uri-list data\n"); return list; } length = linebreak - uri_list; if (length && uri_list[0] != '#') { uri = g_malloc(sizeof(char) * (length + 1)); strncpy(uri, uri_list, length); uri[length] = 0; list = g_slist_append(list, uri); } uri_list = linebreak + 2; } return list; } /* Convert a URI to a local pathname (or NULL if it isn't local). * The returned pointer points inside the input string. * Possible formats: * /path * ///path * //host/path * file://host/path */ char *get_local_path(char *uri) { if (*uri == '/') { char *path; if (uri[1] != '/') return uri; /* Just a local path - no host part */ path = strchr(uri + 2, '/'); if (!path) return NULL; /* //something */ if (path - uri == 2) return path; /* ///path */ if (strlen(our_host_name) == path - uri - 2 && strncmp(uri + 2, our_host_name, path - uri - 2) == 0) return path; /* //myhost/path */ return NULL; /* From a different host */ } else { if (strncasecmp(uri, "file:", 5)) return NULL; /* Don't know this format */ uri += 5; if (*uri == '/') return get_local_path(uri); return NULL; } } /* * This is called when the remote application wants to send us some * data. We get to decide what kind of data we'd like. */ static int drag_drop(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time) { /* FIXME make term_window can't accept dnd if it has a shown transient window */ guchar *leafname = NULL; GdkAtom target; if (gtk_drag_get_source_widget(context)) return TRUE; /* Drag to ourselves - ignore */ if (provides(context, text_uri_list)) target = text_uri_list; else { leafname = g_strdup("Untitled"); target = best_raw(context); } /* Associate the leafname with the context */ if (leafname) g_dataset_set_data_full(context, "uri", leafname, g_free); if (target) gtk_drag_get_data(widget, context, target, time); else gtk_drag_finish(context, FALSE, FALSE, time); return TRUE; } /* Look for the best target type for transferring data */ static GdkAtom best_raw(GdkDragContext *context) { if (provides(context, text_plain)) return text_plain; if (provides(context, application_octet_stream)) return application_octet_stream; infobox(term_window, "I can't get the data from the other application\n"); return GDK_NONE; } /* Is the sended willing to supply this target type? */ static gboolean provides(GdkDragContext *context, GdkAtom target) { GList *targets = context->targets; while (targets && ((GdkAtom) targets->data != target)) targets = targets->next; return targets != NULL; } /* Called when some data arrives from the remote app (which we asked for * in drag_drop. */ static void drag_data_received(GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint32 time) { if (!selection_data->data) { /* Timeout? */ gtk_drag_finish(context, FALSE, FALSE, time); return; } if (selection_data->target == text_uri_list) { GSList *files; char *localpath; files = uri_list_to_gslist(selection_data->data); if (files == NULL || files->next) { /* Only one file at a time for now */ infobox(term_window, "Sorry, can only load one file at a time"); gtk_drag_finish(context, FALSE, FALSE, time); return; } localpath = get_local_path((char *) files->data); /* Remember the URI for the data */ g_dataset_set_data_full(context,"uri",files->data,g_free); if (localpath) { gboolean success = FALSE; if (gtk_term_is_editing(term)) { if (!is_demo && gtk_term_is_changed(term)) { dnd_path=localpath; yesnoquestion("\nThe current notebook has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_dndopen_cb),G_CALLBACK(no_dndopen_cb),term_window); success = savesuccess; } else { success = gtk_term_load(term, localpath); chdir(g_dirname(localpath)); } } else { infobox(term_window, "You cannot load another notebook\nwhile the interpreter is running ..."); } gtk_drag_finish(context,success,FALSE,time); } else { gtk_drag_finish(context, FALSE, FALSE, time); } } else { gtk_drag_finish(context, FALSE, FALSE, time); } } /*--------------------------------------------------------------------------- * metagtk callbacks *---------------------------------------------------------------------------*/ static gint meta_cfg_cb(GtkWidget *widget, GdkEventConfigure *event) { prefs.gwidth = event->width; prefs.gheight = event->height; return FALSE; } /*--------------------------------------------------------------------------- * demo callbacks *---------------------------------------------------------------------------*/ static const char *demo_name = NULL; static void save_as_demo_cb(GtkWidget *widget, gpointer data) { char *filename = get_filename(data, ".en"); if ((!filename) || (strcmp(filename,"") == 0)) return; if (gtk_term_save(term,filename)) { gchar *s; chdir(g_dirname(filename)); s = g_strconcat(INSTALL_DIR,"/share/euler/progs/",demo_name,NULL); gtk_term_load(term,s); g_free(s); is_demo = 1; gtk_widget_destroy((GtkWidget*)data); } else { char *txt = g_strdup_printf("\nI could not save the notebook to the file\n%s\nThe notebook open command is aborted ...\n",filename); infobox((GtkWidget*)data, txt); g_free(txt); chdir(g_dirname(filename)); } } static void yes_demo_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_demo_cb), term_window); else { gchar *s; gtk_term_save(term,NULL); s = g_strconcat(INSTALL_DIR,"/share/euler/progs/",demo_name,NULL); gtk_term_load(term,s); g_free(s); is_demo = 1; } } static void no_demo_cb(GtkWidget *widget, gpointer data) { destroy_yesno_dialog(widget); gchar *s; s = g_strconcat(INSTALL_DIR,"/share/euler/progs/",demo_name,NULL); gtk_term_load(term,s); g_free(s); is_demo = 1; } static void demo_cb(GtkAction *action) { g_return_if_fail(action != NULL); g_return_if_fail(GTK_IS_ACTION(action)); demo_name = gtk_action_get_name(action); if (!is_demo) { if (gtk_term_is_changed(term)) yesnoquestion("\nThe current notebook has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_demo_cb),G_CALLBACK(no_demo_cb),term_window); else { gchar *s; s = g_strconcat(INSTALL_DIR,"/share/euler/progs/",demo_name,NULL); gtk_term_load(term,s); g_free(s); is_demo = 1; } } else { gchar *s; s = g_strconcat(INSTALL_DIR,"/share/euler/progs/",demo_name,NULL); gtk_term_load(term,s); g_free(s); is_demo = 1; } } /*--------------------------------------------------------------------------- * main *---------------------------------------------------------------------------*/ static void on_file_new(GtkAction *action) { if (!is_demo && gtk_term_is_changed(term)) yesnoquestion("\nThe current notebook has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_new_cb),G_CALLBACK(no_new_cb),term_window); else { gtk_term_clear_new(term); is_demo = 0; } } static void on_file_open(GtkAction *action) { if (!is_demo && gtk_term_is_changed(term)) yesnoquestion("\nThe current notebook has been modified ...\nDo you want to save it?\n", G_CALLBACK(yes_open_cb),G_CALLBACK(no_open_cb),term_window); else file_select(GTK_FILE_CHOOSER_ACTION_OPEN, "Open A Notebook ...", "*.en", NULL, G_CALLBACK(open_cb), term_window); } static void on_file_save(GtkAction *action) { if (!gtk_term_is_named(term)) file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", "untitled", G_CALLBACK(save_as_cb), term_window); else if (!is_demo) gtk_term_save(term,NULL); } static void on_file_save_as(GtkAction *action) { file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Save Notebook As ...", "*.en", gtk_term_is_named(term) ? gtk_term_get_name(term) : "untitled", G_CALLBACK(save_as_cb), term_window); } static void on_export_to_postscript(GtkAction *action) { file_select(GTK_FILE_CHOOSER_ACTION_SAVE, "Export Graphics As ...", "*.eps", "untitled", G_CALLBACK(postscript_cb), term_window); } static void on_file_quit(GObject *object) { if (editordialog) { gdk_window_raise(editordialog->window); editor_delete_cb(term_window, NULL); } else quit_cb(object, NULL); } static void on_edit_cut (GtkAction *action) { gtk_term_cut(term); } static void on_edit_copy (GtkAction *action) { gtk_term_copy(term); } static void on_edit_paste (GtkAction *action) { gtk_term_paste(term); } static void on_edit_insert_command (GtkAction *action) { gtk_term_insert_command(term,NULL); } static void on_edit_delete_command (GtkAction *action) { gtk_term_delete_command(term); } static void on_edit_clear_outputs (GtkAction *action) { gtk_term_delete_outputs(term); } static void on_edit_delete_output (GtkAction *action) { gtk_term_delete_current_output(term); } static void on_edit_edit_comment (GtkAction *action) { gchar *buffer = gtk_term_get_comment(term); if (buffer) if (!g_utf8_validate(buffer, -1, NULL)) buffer = g_locale_to_utf8(buffer, -1, NULL, NULL, NULL); editcomment(buffer); } static void on_misc_editor (GtkAction *action) { editor(); } static void on_misc_preferences (GtkAction *action) { prefs_box(); } static void on_help_doc (GtkAction *action) { char *browser; browser = g_strconcat(prefs.browser," ",INSTALL_DIR,"/share/doc/euler/index.html &",NULL); system(browser); g_free(browser); } static void on_help_about (GtkAction *action) { about(); } static GtkActionEntry actionentries[] = { /* file menu */ { "FileMenu" , NULL , "_File" }, { "New" , GTK_STOCK_NEW , "_New" , "N", "Create a new file" , G_CALLBACK (on_file_new) }, { "Open" , GTK_STOCK_OPEN , "_Open" , "O", "Open a file" , G_CALLBACK (on_file_open) }, { "Save" , GTK_STOCK_SAVE , "_Save" , "S", "Save current file" , G_CALLBACK (on_file_save) }, { "SaveAs" , GTK_STOCK_SAVE_AS , "Save _As..." , NULL , "Save to a file" , G_CALLBACK (on_file_save_as) }, { "ExportMenu" , NULL , "Export Graphics To" }, { "Postscript" , NULL , "Postscript" , "P", NULL , G_CALLBACK (on_export_to_postscript) }, { "Quit" , GTK_STOCK_QUIT , "_Quit" , "Q", "Quit" , G_CALLBACK (on_file_quit) }, /* edit menu */ { "EditMenu" , NULL , "_Edit" }, { "Cut" , GTK_STOCK_CUT , "Cu_t" , "X", "Cut selection" , G_CALLBACK (on_edit_cut) }, { "Copy" , GTK_STOCK_COPY , "_Copy" , "C", "Copy selection" , G_CALLBACK (on_edit_copy) }, { "Paste" , GTK_STOCK_PASTE , "_Paste" , "V", "Paste clipboard content" , G_CALLBACK (on_edit_paste) }, { "InsertCommand", GTK_STOCK_ADD , "Insert Command" , "I", "Insert Command" , G_CALLBACK (on_edit_insert_command) }, { "DeleteCommand", GTK_STOCK_REMOVE , "Delete Command" , "D", "Delete Current Command" , G_CALLBACK (on_edit_delete_command) }, { "ClearOutputs" , GTK_STOCK_CLEAR , "Clear All Outputs" , NULL , "Clear All Outputs" , G_CALLBACK (on_edit_clear_outputs) }, { "DeleteOutput" , GTK_STOCK_DELETE , "Delete Current Output" , NULL , "Delete Current Output" , G_CALLBACK (on_edit_delete_output) }, { "EditComment" , GTK_STOCK_JUSTIFY_FILL , "Edit Comment", "E", "Edit Command..." , G_CALLBACK (on_edit_edit_comment) }, /* misc menu */ { "MiscMenu" , NULL , "_Misc" }, { "DemoMenu" , NULL , "Demo" }, { "Editor" , GTK_STOCK_EDIT , "Editor" , NULL , "Internal Editor..." , G_CALLBACK (on_misc_editor) }, { "Preferences" , GTK_STOCK_PREFERENCES, "Preferences" , NULL , NULL , G_CALLBACK (on_misc_preferences) }, /* help menu */ { "HelpMenu" , NULL , "_Help" }, { "Documentation", GTK_STOCK_HELP , "Documentation" , "F1" , NULL , G_CALLBACK (on_help_doc) }, { "About" , GTK_STOCK_ABOUT , "_About" , "A", "About" , G_CALLBACK (on_help_about) }, }; static guint n_actionentries = G_N_ELEMENTS (actionentries); static const gchar *ui_info = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; int main(int argc, char *argv[]) { GtkWidget *vbox; GtkUIManager *ui; GtkActionGroup *actions,*demoactions; GError *error = NULL; GtkWidget *statusbar; GtkWidget *hbox; GtkWidget *scrollbar; GdkBitmap *icon_mask; GdkPixmap *icon_pixmap; GdkColor alpha; char **entries=NULL; int n_entries=0,i; char *s; /* this should be equivalent to setlocale (LC_ALL, "") */ gtk_set_locale(); /* This must be the same for all locales */ setlocale(LC_NUMERIC, "POSIX"); /* Disable gtk's ability to set the locale. */ /* If gtk is allowed to set the locale, then it will override the */ /* setlocale for LC_NUMERIC (which is important for proper PS output. */ /* This may look funny here, given we make a call to gtk_set_locale() */ /* above. I don't know yet, if this is really the right thing to do. */ gtk_disable_setlocale(); gtk_init (&argc, &argv); prefs = eulerrc_init(); /* allocate stack space */ if (!stack_init(prefs.estack)) { g_print("Stack allocation failed!\nExiting.....\n"); exit(1); } /* allocate graphic stack space */ if (!openmeta(prefs.gstack,NULL)) { g_print("Graphic stack allocation failed!\nExiting.....\n"); exit(1); } setmetalines(prefs.glines); setmetacolors(prefs.colors); /* * setup atoms needed for drag & drop */ text_plain = gdk_atom_intern("text/plain", FALSE); text_uri_list = gdk_atom_intern("text/uri-list", FALSE); application_octet_stream = gdk_atom_intern("application/octet-stream", FALSE); /* * create the graphic window */ meta_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(meta_window), "Euler graphics window"); g_signal_connect(G_OBJECT(meta_window),"delete_event", G_CALLBACK(on_file_quit),NULL); g_signal_connect(G_OBJECT(meta_window),"destroy", G_CALLBACK(on_file_quit),NULL); meta = gtk_meta_new(prefs.gwidth,prefs.gheight); gtk_container_add(GTK_CONTAINER(meta_window),meta); /* * add a hook to collect geometry changes of the graphic window */ g_signal_connect(G_OBJECT(meta_window),"configure_event", G_CALLBACK(meta_cfg_cb),NULL); gtk_widget_show_all(meta_window); /* * create the main window */ term_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (term_window), "Euler []"); gtk_widget_realize(term_window); icon_pixmap = gdk_pixmap_create_from_xpm_d(term_window->window,&icon_mask,&alpha,icon_xpm); gdk_window_set_icon(term_window->window,NULL,icon_pixmap,icon_mask); gdk_window_set_group(meta_window->window,term_window->window); actions = gtk_action_group_new ("Actions"); gtk_action_group_add_actions (actions, actionentries, n_actionentries, NULL); ui = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (ui, actions, 0); gtk_window_add_accel_group (GTK_WINDOW (term_window), gtk_ui_manager_get_accel_group (ui)); if(!gtk_ui_manager_add_ui_from_string(ui, ui_info, -1, &error)) { g_message ("Building menus failed: %s", error->message); g_error_free (error); } gtk_ui_manager_set_add_tearoffs(ui,TRUE); gtk_toolbar_set_style(GTK_TOOLBAR(gtk_ui_manager_get_widget(ui, "ui/ToolBar")), GTK_TOOLBAR_ICONS); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (term_window), vbox); gtk_box_pack_start (GTK_BOX (vbox), gtk_ui_manager_get_widget (ui, "/MenuBar"), FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), gtk_ui_manager_get_widget (ui, "/ToolBar"), FALSE, FALSE, 0); /* * parse the install directory for available demos */ s = g_strconcat(INSTALL_DIR,"/share/euler/progs",NULL); scan_dir(s,"*.en",&entries,&n_entries); if (entries) { GtkActionEntry demoentries[n_entries]; for (i=0;iv_adj); GTK_WIDGET_UNSET_FLAGS (scrollbar, GTK_CAN_FOCUS); gtk_box_pack_start(GTK_BOX(hbox),scrollbar,FALSE,FALSE,0); gtk_term_set_scrollbar(term, scrollbar); /* * set the popup menu */ gtk_term_set_popup(term,GTK_MENU(gtk_ui_manager_get_widget(ui,"/Popup"))); statusbar = gtk_statusbar_new (); gtk_box_pack_start (GTK_BOX (vbox), statusbar, FALSE, FALSE, 0); id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar),"euler status messages"); g_signal_connect_swapped(G_OBJECT(term),"term_editing", G_CALLBACK(term_editing_cb),GTK_OBJECT(statusbar)); g_signal_connect_swapped(G_OBJECT(term),"term_interpreting", G_CALLBACK(term_interpreting_cb),GTK_OBJECT(statusbar)); gtk_statusbar_push(GTK_STATUSBAR(statusbar),id," Initializing Euler ..."); g_signal_connect (G_OBJECT(term_window), "delete_event", G_CALLBACK (on_file_quit),NULL); g_signal_connect (G_OBJECT(term_window), "destroy", G_CALLBACK (on_file_quit),NULL); /* * show everything and lets go */ gtk_widget_show_all(term_window); setmetadevice(gtk_meta_get_device(meta)); while (gtk_events_pending()) gtk_main_iteration_do(FALSE); s=g_strconcat(INSTALL_DIR,"/share/euler/help.txt",NULL); loadhelp(s); g_free(s); main_loop(argc,argv); closemeta(); return 0; } euler-1.61.0/src/meta.c0000644000175000001440000003210010257643143013436 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : meta.c -- portable independant graphic system */ #include #include #include #include #include #include #include #include "sysdep.h" #include "stack.h" #include "output.h" #include "meta.h" static double delay=0; double getcolor (int i, int j); extern int fillcolor1,fillcolor2,usecolors; double pswidth=15,psheight=15; typedef struct metastruct { char *start, *end; size_t size; int full, active, recording, playingframe; long nframes; int width, height; int wchar, hchar; int lines; short colors[3][MAX_COLORS]; metadevice *device; } metastruct; static struct metastruct *m = NULL; static void commandwrite (int i); static void longwrite (double n); static void shortwrite (short n); static void stringwrite (char *s); static int nextcommand (char **p); static double nextlong (char **p); static int nextint (char **p); //static void showcommand(int cmd); /**************************************************************************** * public metafile api * ****************************************************************************/ int openmeta(int size, metadevice *device) { m = (metastruct*)malloc(sizeof(metastruct)); if (m) { m->size = size*1024L; m->full = 0; m->active = 1; m->recording = 0; m->playingframe = 0; m->device = device; m->nframes = 0; m->lines = 40; m->wchar = m->hchar = 1; m->height = m->width = 0; m->start = m->end = (char*)malloc(m->size); if (m->start) return 1; } return 0; } void closemeta() { if (m) { if (m->start) free(m->start); free(m); } } metadevice * setmetadevice(metadevice *d) { metadevice *old = m->device; if (d) m->device = d; return old; } metadevice * getmetadevice() { return m->device; } void setmetawidth(int width) { m->width = width; } void setmetaheight(int height) { m->height = height; } int getmetawidth() { return m->width; } int getmetaheight() { return m->height; } void setmetacharwidth(int w) { m->wchar = w; } void setmetacharheight(int h) { m->hchar = h; } int getmetacharwidth() { return m->wchar; } int getmetacharheight() { return m->hchar; } void setmetalines(int lines) { m->lines = lines; } int getmetalines() { return m->lines; } void setmetacolors(short colors[3][MAX_COLORS]) { int i, j; for (i=0 ; i<3 ; i++) for (j=0 ; jcolors[i][j] = colors[i][j]; } short getmetacolor(int rgb, int index) { return m->colors[rgb][index]; } void playmeta() { char *p=m->start; double c,r,c1,r1,cc[16],hue; int col,st,width,n,i,co[16],again=-1; if (m->recording || !m->device) return; m->active = 0; if (!m->playingframe) again = 1; while (pend) { int command=nextcommand(&p); switch(command) { case 1 : if (!m->playingframe && !again) { m->active = 1; return; } else again--; if (m->playingframe) { sys_wait(delay,&n); if (n==escape) { m->active = 1; return; } // else if (n) { // m->active=1; // return; // } } m->device->clear(m->device->data); break; case 2 : c=nextlong(&p); r=nextlong(&p); c1=nextlong(&p); r1=nextlong(&p); m->device->clip(m->device->data,c,r,c1,r1); break; case 10 : c=nextlong(&p); r=nextlong(&p); c1=nextlong(&p); r1=nextlong(&p); col=nextint(&p); st=nextint(&p); width=nextint(&p); m->device->line(m->device->data,c,r,c1,r1,col,st,width); break; case 20 : c=nextlong(&p); r=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->marker(m->device->data,c,r,col,st); break; case 30 : n=nextint(&p); for (i=0; idevice->fill(m->device->data,cc,st,n,co); break; case 31 : for (i=0; i<8; i++) cc[i]=nextlong(&p); hue=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->fillh(m->device->data,cc,hue,col,st); break; case 32 : c=nextlong(&p); r=nextlong(&p); c1=nextlong(&p); r1=nextlong(&p); hue=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->bar(m->device->data,c,r,c1,r1,hue,col,st); break; case 33 : c=nextlong(&p); r=nextlong(&p); c1=nextlong(&p); r1=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->bar1(m->device->data,c,r,c1,r1,col,st); break; case 40 : c=nextlong(&p); r=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->text(m->device->data,c,r,p,col,st); p+=strlen(p)+1; break; case 41 : c=nextlong(&p); r=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->vtext(m->device->data,c,r,p,col,st); p+=strlen(p)+1; break; case 42 : c=nextlong(&p); r=nextlong(&p); col=nextint(&p); st=nextint(&p); m->device->vutext(m->device->data,c,r,p,col,st); p+=strlen(p)+1; break; case 50 : nextlong(&p); break; default : break; } } m->active = 1; } /**************************************************************************** * frame support * ****************************************************************************/ void mbeginframes(header *hd) { // gclear(); m->recording = 1; m->end = m->start; m->full = 0; m->nframes = 0; new_real(m->nframes,""); } void mendframes(header *h) { // gclear(); m->recording = 0; new_real(m->nframes,""); } void mframes (header *hd) { new_real(m->nframes,""); } void mplayframes(header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) wrong_arg_in("play"); graphic_mode(); delay = *realof(hd); m->playingframe = 1; m->device->begin(m->device->data); playmeta(); m->device->end(m->device->data); m->playingframe = 0; delay=0.0; result=new_real(m->nframes,""); moveresult(st,result); } /**************************************************************************** * basic drawing commands * ****************************************************************************/ void gclear() { if (!m->active) return; if (m->recording) { m->nframes++; } else { m->end = m->start; m->full = 0; m->nframes = 0; } commandwrite(1); if (!m->recording && m->device && m->device->clear) m->device->clear(m->device->data); } void gclip(double c, double r, double c1, double r1) { if (!m->active) return; if (fabs(r)>10000.0) return; if (fabs(c)>10000.0) return; if (fabs(r1)>10000.0) return; if (fabs(c1)>10000.0) return; commandwrite(2); longwrite(c); longwrite(r); longwrite(c1); longwrite(r1); if (!m->recording && m->device && m->device->clip) m->device->clip(m->device->data,c,r,c1,r1); } /***** gline draw a line. col is the color, where 0 should be white and 1 black. st is a style from linetyp. width is the linewidth, where 0 or 1 are equal defaults. *****/ void gline(double c, double r, double c1, double r1, int color, int st, int width) { if (!m->active) return; if (fabs(r)>10000.0) return; if (fabs(c)>10000.0) return; if (fabs(r1)>10000.0) return; if (fabs(c1)>10000.0) return; commandwrite(10); longwrite(c); longwrite(r); longwrite(c1); longwrite(r1); shortwrite(color); shortwrite(st); shortwrite(width); if (!m->recording && m->device && m->device->line) m->device->line(m->device->data,c,r,c1,r1,color,st,width); } /***** gmarker plot a single marker on screen. col is the color. type is a type from markertyp. *****/ void gmarker(double c, double r, int color, int type) { if (!m->active) return; commandwrite(20); longwrite(c); longwrite(r); shortwrite(color); shortwrite(type); if (!m->recording && m->device && m->device->marker) m->device->marker(m->device->data,c,r,color,type); } void gfill(double c[], int st, int n, int connect[]) { int i; if (!m->active) return; for (i=0; i<2*n; i++) if (fabs(c[i])>10000.0) return; commandwrite(30); shortwrite(n); for (i=0; irecording && m->device && m->device->fill) m->device->fill(m->device->data,c,st,n,connect); } /***** Draw a filled polygon. Works like gfill, but uses hue. *****/ void gfillh(double c[8], double hue, int color, int connect) { int i; if (!m->active) return; for (i=0; i<8; i++) if (fabs(c[i])>10000.0) return; hue-=floor(hue); commandwrite(31); for (i=0; i<8; i+=2) { longwrite(c[i]); longwrite(c[i+1]); } longwrite(hue); shortwrite(color); shortwrite(connect); if (!m->recording && m->device && m->device->fillh) m->device->fillh(m->device->data,c,hue,color,connect); } /***** Draw a rectangle. hue is a hue intensity from 0 to 1. style determines, if a black boundary should be drawn. ******/ void gbar(double c, double r, double c1, double r1, double hue, int color, int style) { if (!m->active) return; commandwrite(32); longwrite(c); longwrite(r); longwrite(c1); longwrite(r1); longwrite(hue); shortwrite(color); shortwrite(style); if (!m->recording && m->device && m->device->bar) m->device->bar(m->device->data,c,r,c1,r1,hue,color,style); } /***** Draw a rectangle. hue is a hue intensity from 0 to 1. style determines, if a black boundary should be drawn. ******/ void gbar1(double c, double r, double c1, double r1, int color, int style) { if (!m->active) return; commandwrite(33); longwrite(c); longwrite(r); longwrite(c1); longwrite(r1); shortwrite(color); shortwrite(style); if (!m->recording && m->device && m->device->bar1) m->device->bar1(m->device->data,c,r,c1,r1,color,style); } /***** gtext output a graphic text on screen. alignment is left=0, centered=1, right=2. *****/ void gtext(double c, double r, char *text, int color, int alignment) { if (!m->active) return; commandwrite(40); longwrite(c); longwrite(r); shortwrite(color); shortwrite(alignment); stringwrite(text); if (!m->recording && m->device && m->device->text) m->device->text(m->device->data,c,r,text,color,alignment); } /***** gvtext like gtext downwards *****/ void gvtext(double c, double r, char *text, int color, int alignment) { if (!m->active) return; commandwrite(41); longwrite(c); longwrite(r); shortwrite(color); shortwrite(alignment); stringwrite(text); if (!m->recording && m->device && m->device->vtext) m->device->vtext(m->device->data,c,r,text,color,alignment); } /***** gvutext like gtext upwards. *****/ void gvutext(double c, double r, char *text, int color, int alignment) { if (!m->active) return; commandwrite(42); longwrite(c); longwrite(r); shortwrite(color); shortwrite(alignment); stringwrite(text); if (!m->recording && m->device && m->device->vutext) m->device->vutext(m->device->data,c,r,text,color,alignment); } void gscale (double s) { if (!m->active) return; commandwrite(50); longwrite(s*1000); if (!m->recording && m->device && m->device->scale) m->device->scale(m->device->data,s); } int dump_meta (char *filename) { FILE *out=fopen(filename,"w"); if (!out) return 0; fwrite(m->start,m->end-m->start,1,out); fclose(out); return 1; } void pswindow (double w, double h) { pswidth=w; psheight=h; } /**************************************************************************** * private metafile * ****************************************************************************/ static void write (void *l, int n) { if (!m->active || m->full) return; memmove(m->end,l,n); m->end+=n; } static void commandwrite (int i) { if (!m->active) return; if ((int)(m->end-m->start)>(int)(m->size-512)) { m->full=1; return; } *m->end++=i; } /***** write a double to the metafile as long *****/ static void longwrite (double n) { long k=(long)(n*1000.0); write(&k,sizeof(long)); } /***** write an int to the metafile *****/ static void shortwrite (short n) { write(&n,sizeof(short)); } /***** write a string to the metafile *****/ static void stringwrite (char *s) { write(s,strlen(s)+1); } static int nextcommand (char **p) { int k=**p; (*p)++; return k; } static double nextlong (char **p) { long x; memmove(&x,*p,sizeof(long)); (*p)+=sizeof(long); return x/1000.0; } static int nextint (char **p) { short n; memmove(&n,*p,sizeof(short)); (*p)+=sizeof(short); return n; } #if 0 static void showcommand(int cmd) { switch (cmd) { case 1 : fprintf(stderr,"%2d : clear\n",cmd); break; case 2 : fprintf(stderr,"%2d : clip\n",cmd); break; case 10 : fprintf(stderr,"%2d : line\n",cmd); break; case 20 : fprintf(stderr,"%2d : marker\n",cmd); break; case 30 : fprintf(stderr,"%2d : fill\n",cmd); break; case 31 : fprintf(stderr,"%2d : fillh\n",cmd); break; case 32 : fprintf(stderr,"%2d : bar\n",cmd); break; case 33 : fprintf(stderr,"%2d : bar1\n",cmd); break; case 40 : fprintf(stderr,"%2d : text\n",cmd); break; case 41 : fprintf(stderr,"%2d : vtext\n",cmd); break; case 42 : fprintf(stderr,"%2d : vutext\n",cmd); break; case 50 : fprintf(stderr,"%2d : scale\n",cmd); break; default : fprintf(stderr,"%2d : unknown\n",cmd); break; } } #endif euler-1.61.0/src/meta.h0000644000175000001440000000661610257642741013463 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : meta.h -- portable independant graphic system */ #ifndef _META_H_ #define _META_H_ #include #include "stack.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef MAX_COLORS #define MAX_COLORS 16 #endif /* * device structure definition */ typedef void (*scalefn)(void *data, double s); typedef void (*clearfn)(void *data); typedef void (*clipfn)(void *data, double c, double r, double c1, double r1); typedef void (*linefn)(void *data, double c, double r, double c1, double r1, int color, int st, int width); typedef void (*markerfn)(void *data, double c, double r, int color, int st); typedef void (*barfn)(void *data, double c, double r, double c1, double r1, double hue, int color, int connect); typedef void (*bar1fn)(void *data, double c, double r, double c1, double r1, int color, int connect); typedef void (*fillfn)(void *data, double c[], int st, int n, int connect[]); typedef void (*fillhfn)(void *data, double c[], double hue, int color, int connect); typedef void (*textfn)(void *data, double c, double r, char *text, int color, int alignment); typedef void (*vtextfn)(void *data, double c, double r, char *text, int color, int alignment); typedef void (*vutextfn)(void *data, double c, double r, char *text, int color, int alignment); typedef void (*beginplayfn)(void *data); typedef void (*endplayfn)(void *data); //typedef void (*colorallocatefn)(short colors[3][MAX_COLORS]); typedef struct metadevice { void * data; /* private data pointer */ beginplayfn begin; endplayfn end; clearfn clear; clipfn clip; linefn line; markerfn marker; barfn bar; bar1fn bar1; fillfn fill; fillhfn fillh; textfn text; vtextfn vtext; vutextfn vutext; scalefn scale; } metadevice; /* * metafile programming api */ int openmeta(int size, metadevice *device); void closemeta(); void playmeta(); metadevice * setmetadevice(metadevice *d); metadevice * getmetadevice(); void setmetawidth(int width); void setmetaheight(int height); int getmetawidth(); int getmetaheight(); void setmetalines(int lines); int getmetalines(); void setmetacharwidth(int width); void setmetacharheight(int height); int getmetacharwidth(); int getmetacharheight(); void setmetacolors(short colors[3][MAX_COLORS]); short getmetacolor(int rgb, int index); /* * specific device output */ int dump_meta (char *filename); void pswindow (double w, double h); /* * basic drawing commands */ void gclear (void); void gclip(double c, double r, double c1, double r1); void gline (double c, double r, double c1, double r1, int color, int st, int width); void gtext (double c, double r, char *text, int color, int centered); void gvtext (double c, double r, char *text, int color, int centered); void gvutext (double c, double r, char *text, int color, int centered); void gmarker (double c, double r, int color, int st); void gfill (double c[], int st, int n, int connect[]); void gfillh (double c[], double hue, int color, int connect); void gbar (double c, double r, double c1, double r1, double hue, int color, int connect); void gbar1 (double c, double r, double c1, double r1, int color, int connect); void gscale (double s); /* * frame support */ void mbeginframes(header *hd); void mendframes(header *h); void mframes(header *hd); void mplayframes(header *hd); #ifdef __cplusplus } #endif /* __cplusplus */ #endif euler-1.61.0/src/dlldef.h0000644000175000001440000000200207417015640013744 0ustar ericusersenum { s_real,s_complex,s_matrix,s_cmatrix, s_reference,s_command,s_submatrix,s_csubmatrix,s_string,s_udf, s_interval,s_imatrix,s_isubmatrix }; typedef struct { long size; char name[16]; int xor; int type; int flags; } header; typedef struct { int c,r; } dims; #define stringof(hd) ((char *)((hd)+1)) #define realof(hd) ((double *)((hd)+1)) #define matrixof(hd) ((double *)((char *)((hd)+1)+sizeof(dims))) #define dimsof(hd) ((dims *)((hd)+1)) header *make_header (int type, int size, char * &newram, char *ramend); header *new_string (char *s, char * &newram, char *ramend); header *new_real (double x, char * &newram, char *ramend); header *new_complex (double x, double y, char * &newram, char *ramend); header *new_interval (double a, double b, char * &newram, char *ramend); header *new_matrix (int rows, int columns, char * &newram, char *ramend); header *new_cmatrix (int rows, int columns, char * &newram, char *ramend); header *new_imatrix (int rows, int columns, char * &newram, char *ramend); euler-1.61.0/src/output.c0000644000175000001440000003155610330751333014057 0ustar ericusers/* * Euler - a numerical laboratory * * file : output.c -- output and formatting stuff for outputs * * version 1.60.4 changes : formatting features have been put in this file. */ #include #include #include #include #include #include "sysdep.h" #include "stack.h" #include "output.h" #include "mainloop.h" #include "command.h" static int fieldw=16,linew=5,ilinew=1,precission=5,iprecission=15; static double maxexpo=1.0e6,minexpo=1.0e-5; static int outputlength=14,ioutputlength=42; static char expoformat[16]="%0.6g"; static char fixedformat[16]="%0.6g"; static int iformat=42; static double fraceps=0; static char *outputbuffer=0,*outputbufferend; static int outputbuffererror=0; /* * output format definition */ void mformat (header *hd) { header *st=hd,*result; static int l=10,d=5; int oldl=l,oldd=d; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("format"); l=(int)*matrixof(hd); d=(int)*(matrixof(hd)+1); if (l<2 || l>80 || d<0 || d>(DBL_DIG+4)) wrong_arg_in("format"); if (d>l-3) d=l-3; outputlength=l; if (outputlength>64) outputlength=64; if (outputlength<1) outputlength=1; sprintf(fixedformat,"%%0.%df",d); sprintf(expoformat,"%%0.%de",d); minexpo=pow(10,-d); maxexpo=pow(10,l-d-3); fieldw=l+1; linew=linelength/fieldw; if (linew<=0) linew=1; if (iformat==0) { ioutputlength=2*outputlength; ilinew=linelength/ioutputlength; if (ilinew<=0) ilinew=1; } result=new_matrix(1,2,""); if (error) return; *matrixof(result)=oldl; *(matrixof(result)+1)=oldd; moveresult(st,result); } void mgformat (header *hd) { header *st=hd,*result; static int l=10,d=5; int oldl=l,oldd=d; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("goodformat"); l=(int)*matrixof(hd); d=(int)*(matrixof(hd)+1); if (l<2 || l>80 || d<0 || d>(DBL_DIG+4)) wrong_arg_in("goodformat"); if (d>l-3) d=l-3; outputlength=l; precission=d; if (outputlength>64) outputlength=64; if (outputlength<1) outputlength=1; sprintf(fixedformat,"%%0.%dg",d+1); sprintf(expoformat,"%%0.%dg",d+1); minexpo=pow(10,-d); maxexpo=pow(10,l-d-3); fieldw=l+1; linew=linelength/fieldw; if (linew<=0) linew=1; if (iformat==0) { ioutputlength=2*outputlength; ilinew=linelength/ioutputlength; if (ilinew<=0) ilinew=1; } result=new_matrix(1,2,""); if (error) return; *matrixof(result)=oldl; *(matrixof(result)+1)=oldd; moveresult(st,result); fraceps=0; } void meformat (header *hd) { header *st=hd,*result; static int l=10,d=5; int oldl=l,oldd=d; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("expformat"); l=(int)*matrixof(hd); d=(int)*(matrixof(hd)+1); if (l<2 || l>80 || d<0 || d>(DBL_DIG+4)) wrong_arg_in("expformat"); if (d>l-3) d=l-3; outputlength=l; precission=d; if (outputlength>64) outputlength=64; if (outputlength<1) outputlength=1; sprintf(fixedformat,"%%0.%de",d); sprintf(expoformat,"%%0.%de",d); minexpo=pow(10,-d); maxexpo=pow(10,l-d-3); fieldw=l+1; linew=linelength/fieldw; if (linew<=0) linew=1; if (iformat==0) { ioutputlength=2*outputlength; ilinew=linelength/ioutputlength; if (ilinew<=0) ilinew=1; } result=new_matrix(1,2,""); if (error) return; *matrixof(result)=oldl; *(matrixof(result)+1)=oldd; moveresult(st,result); fraceps=0; } void mfformat (header *hd) { header *st=hd,*result; static int l=10,d=5; int oldl=l,oldd=d; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("fixedformat"); l=(int)*matrixof(hd); d=(int)*(matrixof(hd)+1); if (l<2 || l>80 || d<0 || d>(DBL_DIG+4)) wrong_arg_in("fixedformat"); if (d>l-3) d=l-3; outputlength=l; precission=d; if (outputlength>64) outputlength=64; if (outputlength<1) outputlength=1; sprintf(fixedformat,"%%0.%df",d); sprintf(expoformat,"%%0.%df",d); minexpo=pow(10,-d); maxexpo=pow(10,l-d-3); fieldw=l+2; linew=linelength/fieldw; if (linew<=0) linew=1; if (iformat==0) { ioutputlength=2*outputlength; ilinew=linelength/ioutputlength; if (ilinew<=0) ilinew=1; } result=new_matrix(1,2,""); if (error) return; *matrixof(result)=oldl; *(matrixof(result)+1)=oldd; moveresult(st,result); fraceps=0; } void miformat (header *hd) { header *st=hd,*result; int oldi=iformat,k; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) wrong_arg_in("iformat"); k=(int)(*realof(hd)); if (k>0) { iformat=k; if (k>80) k=80; if (k<21) k=21; iprecission=(k-3)/2-7; ioutputlength=k; ilinew=1; if (ilinew<=0) ilinew=1; } else { iformat=0; ilinew=linew/2; if (ilinew<=0) ilinew=1; ioutputlength=outputlength*2; } result=new_real(oldi,""); if (error) return; moveresult(st,result); fraceps=0; } void mfracformat (header *hd) { header *st=hd,*result; int oldl=outputlength,l; double oldeps=fraceps,eps; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) wrong_arg_in("fracformat"); l=(int)*matrixof(hd); eps=*(matrixof(hd)+1); if (l<2 || l>80 || eps<=0 || eps>1) wrong_arg_in("fracformat"); outputlength=l; fieldw=l+1; linew=linelength/fieldw; if (linew<=0) linew=1; result=new_matrix(1,2,""); if (error) return; *matrixof(result)=oldl; *(matrixof(result)+1)=oldeps; moveresult(st,result); fraceps=eps; } /* * high level output functions for real, matrix, fraction */ #define MAX 1e+10 #define MIN 1e-10 static double frac (double v, long *n, long *d, double error) { long D, N, t; double epsilon, r=0, m; int count=0; if (v < MIN || v > MAX || error < 0.0) return(-1.0); *d = D = 1; *n = (int)v; N = (*n) + 1; goto three; one: count++; if (r > 1.0) goto two; r = 1.0/r; two: N += (*n)*(long)r; D += (*d)*(long)r; (*n) += N; (*d) += D; three: if (v*(*d) == (double)(*n)) goto four; r = (N - v*D)/(v*(*d) - (*n)); if (r > 1.0) goto four; t = N; N = (*n); *n = t; t = D; D = (*d); *d = t; four: epsilon = fabs(1.0 - (*n)/(v*(*d))); if (epsilon <= error) goto six; m = 1.0; do { m *= 10.0; } while (m*epsilon < 1.0); epsilon = 1.0/m * ((int)(0.5 + m*epsilon)); six : if (epsilon <= error) return 0; if (r != 0.0 && count<1000) goto one; return -1; } #undef MIN #undef MAX static int frac_out (double x) { long n,d; if (x==0.0) output1hold(0,"0"); else { if (frac(fabs(x),&n,&d,fraceps)<0) return 0; if (x<0) output1hold(0,"-"); else output1hold(0,""); if (d>1) output1hold(-1,"%ld/%ld",n,d); else output1hold(-1,"%ld",n); } return 1; } static int frac_out0 (double x) { long n,d; if (x==0.0) output1hold(-1,"0"); else { if (frac(fabs(x),&n,&d,fraceps)<0) return 0; if (x<0) output1hold(-1,"-"); else output1hold(-1,""); if (d>1) output1hold(-1,"%ld/%ld",n,d); else output1hold(-1,"%ld",n); } return 1; } static void double_out (double x) /***** double_out print a double number. *****/ { if (fraceps>0) { if (!frac_out(x)) goto one; } else { one : if ((fabs(x)>maxexpo || fabs(x)=c) cend=c-1; if (c>linew) output2("Column %d to %d:\n",c0+1,cend+1); for (i=0; i0) { if (!frac_out(x)) goto one; if (y!=0.0) { if (y>0) output1hold(-1,"+"); else if (y<0) output1hold(-1,"-"); if (!frac_out0(fabs(y))) goto two; } } else { one : if ((fabs(x)>maxexpo || fabs(x)=0) output1hold(-1,"+"); else output1hold(-1,"-"); y=fabs(y); two : if ((y>maxexpo || y=c) cend=c-1; if (c>linew/2) output2("Column %d to %d:\n",c0+1,cend+1); for (i=0; i0 && (x>0 || y<0) && x!=y) { if (x>0) { d1=(int)log10(y); d2=(int)log10(y-x); } else { d1=(int)log10(-x); d2=(int)log10(-x+y); } l=d1-d2+2; if (l>DBL_DIG+3) l=DBL_DIG+3; sprintf(form,"%%0.%dg",l); if (y!=floor(y)) y+=pow(10.0,floor(log10(fabs(y)))-l+1)/2.00000001; if (x!=floor(x)) x-=pow(10.0,floor(log10(fabs(x)))-l+1)/2.00000001; output1hold(0,"~"); output1hold(-1,form,x); output1hold(-1,","); output1hold(-1,form,y); output1hold(ioutputlength,"~ "); return; } output1hold(0,"~"); output1hold(-1,"%0.2g",x); output1hold(-1,","); output1hold(-1,"%0.2g",y); output1hold(ioutputlength,"~ "); } static void out_imatrix (header *hd) /***** out_matrix print a complex matrix. *****/ { int c,r,i,j,c0,cend; double *m,*x; ilinew=linelength/ioutputlength; if (ilinew<=0) ilinew=1; getmatrix(hd,&r,&c,&m); for (c0=0; c0=c) cend=c-1; if (c>ilinew) output2("Column %d to %d:\n",c0+1,cend+1); for (i=0; itype) { case s_real : double_out(*realof(hd)); output("\n"); break; case s_complex : complex_out(*realof(hd),*imagof(hd)); output("\n"); break; case s_matrix : out_matrix(hd); break; case s_cmatrix : out_cmatrix(hd); break; case s_imatrix : out_imatrix(hd); break; case s_string : output(stringof(hd)); output("\n"); break; case s_interval : interval_out(*aof(hd),*bof(hd)); output("\n"); break; default : output("?\n"); } } /* Output to the text window via gprint in sysdep*.c */ int preventoutput=0; void output (char *s) { if (preventoutput) return; if (outputbuffer) { if (outputbuffererror) return; if (outputbuffer+strlen(s)>=outputbufferend) { outputbuffererror=1; return; } strcpy(outputbuffer,s); outputbuffer+=strlen(s); return; } text_mode(); if (outputing || error) gprint(s); if (outfile) { fprintf(outfile,"%s",s); if (ferror(outfile)) { output("Error on dump file (disk full?).\n"); error=200; fclose(outfile); outfile=0; } } } void output1 (char *s, ...) { char text [1024]; va_list v; if (preventoutput) return; text_mode(); va_start(v,s); vsprintf(text,s,v); if (outputbuffer) { output(text); return; } if (outputing || error) gprint(text); if (outfile) { fprintf(outfile,text); if (ferror(outfile)) { output("Error on dump file (disk full?).\n"); error=200; fclose(outfile); outfile=0; } } } void output1hold (int f, char *s, ...) { static char text [1024]; unsigned long si; va_list v; if (f==0) text[0]=0; text_mode(); va_start(v,s); vsprintf(text+strlen(text),s,v); if (f<=0) return; si=strlen(text); if (sip) { output1("error in:\n%s\n",input_line); if ((int)(p-input_line)outline+1022) { q=outline+1023; break; } } *q=0; output1("Error in :\n%s\n",outline); output("\n"); } errorout=1; } euler-1.61.0/src/output.h0000644000175000001440000000174407452012356014066 0ustar ericusers/* * Euler - a numerical lab * * file : output.h -- output and formating functions */ #ifndef _OUTPUT_H_ #define _OUTPUT_H_ #include "stack.h" /* * format setup functions */ void mformat (header *hd); void mgformat (header *hd); void meformat (header *hd); void mfformat (header *hd); void miformat (header *hd); void mfracformat (header *hd); /* * generic output (real, complex, matrix, ...) */ void give_out (header *hd); /* * basic output */ void output (char *s); void output1 (char *s, ...); void output1hold (int f, char *s, ...); void print_error (char *p); #define output2(form,s,t) output1(form,s,t) #define wrong_arg() { error=26; output("Wrong argument\n"); return; } #define wrong_arg_in(x) { error=26; output1("Wrong arguments for %s\n",x); return; } #define test_error(x) { if (error) { output1("Error in %s\n",x); } } #define varnotfound(x) { output1("Variable not found in %s\n",x); } #define outofram() { output("Out of Memory!\n"); error=120; return; } #endif euler-1.61.0/src/sysdep.h0000644000175000001440000000403010331246743014023 0ustar ericusers/* * Euler - a numerical lab * * file : sysdep.h -- system dependant functions */ #ifndef _SYSDEP_H_ #define _SYSDEP_H_ #include #include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #define TAB 9 #ifndef ALIGNMENT #define ALIGNMENT 8 #endif #if defined __MSDOS__ #define SPLIT_MEM #define FLOAT_TEST #endif #ifdef unix #define PATH_DELIM_CHAR '/' #define PATH_DELIM_STR "/" #else #define PATH_DELIM_CHAR '\\' #define PATH_DELIM_STR "\\" #endif extern int nojump; extern int linelength; typedef enum { line_none, line_solid, line_dotted, line_dashed, line_arrow } linetyp; typedef enum { marker_cross, marker_circle, marker_diamond, marker_dot, marker_plus, marker_square, marker_star } markertyp; typedef enum { bar_solid, bar_framed, bar_frame, bar_vhatch, bar_hhatch, bar_diagonal1, bar_diagonal2, bar_cross } bartyp; typedef enum { fill_blank, fill_filled } filltyp; typedef enum { key_none, cursor_up, cursor_down, cursor_left, cursor_right, escape, deletekey, backspace, clear_home, switch_screen, enter, space, line_end, line_start, fk1, fk2, fk3, fk4, fk5, fk6, fk7, fk8, fk9, fk10, word_left, word_right, help } scantyp; void mouse (double *, double *); void getpixelsize (double *x, double *y); void text_mode (void); void graphic_mode (void); int wait_key (int *scan); int test_key (void); int test_code (void); char *cd (char *dir); int scan_dir(char *dir_name, char *pat, char ** files[], int *files_count); void clear_screen (void); int execute (char *, char *); int shrink (size_t size); double myclock (void); void gprint (char *s); /* print an output text (no newline) */ void gflush (void); /* flush out graphics */ void move_cr (void); void move_cl (void); void clear_eol (void); void cursor_off (void); void cursor_on (void); void edit_on (void); void edit_off (void); void sys_wait (double delay, int *scan); void set_editline (char *p); #ifdef WAVES void sys_playwav (char *file); #endif double getcolor (int i, int j); #endif euler-1.61.0/src/polynom.c0000644000175000001440000004507707452667746014250 0ustar ericusers#include #include #include #include #include #include "polynom.h" #include "funcs.h" #include "interval.h" #include "linear.h" #include "express.h" #include "output.h" #include "spread.h" #include "mainloop.h" #define wrong_arg() { error=26; output("Wrong argument\n"); return; } #define max(x,y) ((x)>(y)?(x):(y)) double *polynom; int degree; void peval (double *x, double *r) { int i; double *p=polynom+degree,res; res=*p--; for (i=degree-1; i>=0; i--) res=res**x+(*p--); *r=res; } static void cpeval (double *x, double *xi, double *z, double *zi) { int i; double *p,h,hi; p=polynom+(2l*degree); *z=*p; *zi=*(p+1); p-=2; for (i=degree-1; i>=0; i--) { complex_multiply(x,xi,z,zi,&h,&hi); *z= h + *p; *zi=hi+*(p+1); p-=2; } } void polyval (header *hd) { header *st=hd,*hd1,*result; int r,c; hd1=nextof(hd); equal_params_2(&hd,&hd1); getmatrix(hd,&r,&c,&polynom); if (r!=1) wrong_arg(); degree=c-1; if (degree<0) wrong_arg(); if (isinterval(hd)) result=map1i(ipeval,hd1); else result=map1(peval,cpeval,hd1); moveresult(st,result); } void polyadd (header *hd) { header *st=hd,*hd1,*result; int c,c1,c2,i,r; double *m1,*m2,*mr; complex *mc1,*mc2,*mcr; interval *mi1,*mi2,*mir; hd1=next_param(st); equal_params_2(&hd,&hd1); if (error) return; getmatrix(hd,&r,&c1,&m1); if (r!=1) wrong_arg(); getmatrix(hd1,&r,&c2,&m2); if (r!=1) wrong_arg(); c=max(c1,c2); if (iscomplex(hd)) /* complex values */ { mc1=(complex *)m1; mc2=(complex *)m2; result=new_cmatrix(1,c,""); if (error) return; mcr=(complex *)matrixof(result); for (i=0; i=c1) { c_copy(*mcr,*mc2); mcr++; mc2++; } else if (i>=c2) { c_copy(*mcr,*mc1); mcr++; mc1++; } else { c_add(*mc1,*mc2,*mcr); mc1++; mc2++; mcr++; } } } else if (isinterval(hd)) { mi1=(interval *)m1; mi2=(interval *)m2; result=new_imatrix(1,c,""); if (error) return; mir=(interval *)matrixof(result); for (i=0; i=c1) { i_copy(*mir,*mi2); mir++; mi2++; } else if (i>=c2) { i_copy(*mir,*mi1); mir++; mi1++; } else { i_add(*mi1,*mi2,*mir); mi1++; mi2++; mir++; } } } else if (isreal(hd)) { result=new_matrix(1,c,""); if (error) return; mr=matrixof(result); for (i=0; i=c1) { *mr++ = *m2++; } else if (i>=c2) { *mr++ = *m1++; } else { *mr++ = *m1++ + *m2++; } } } else wrong_arg(); moveresult(st,result); } void polymult (header *hd) { header *st=hd,*hd1,*result; int c,c1,c2,i,r,j,k; double *m1,*m2,*mr,x; complex *mc1,*mc2,*mcr,xc,hc; interval *mi1,*mi2,*mir,xi,hi; hd1=next_param(st); equal_params_2(&hd,&hd1); if (error) return; getmatrix(hd,&r,&c1,&m1); if (r!=1) wrong_arg(); getmatrix(hd1,&r,&c2,&m2); if (r!=1) wrong_arg(); if ((long)c1+c2-1>INT_MAX) wrong_arg(); c=c1+c2-1; if (iscomplex(hd)) { mc1=(complex *)m1; mc2=(complex *)m2; result=new_cmatrix(1,c,""); if (error) return; mcr=(complex *)matrixof(result); c_copy(xc,*mc1); mc1++; for (i=0; i=0; i--) { c_div(mch[c2+i-1],lc,xc); c_copy(mcr[i],xc); for(j=0; j=0.0) wrong_arg(); for (i=c1-c2; i>=0; i--) { i_div(mih[c2+i-1],li,xi); c_copy(mir[i],xi); for(j=0; j=0; i--) { x=mh[c2+i-1]/l; mr[i]=x; for(j=0; j=i; j--) { if (mc1[j][0]==mc1[j-i][0] && mc1[j][1]==mc1[j-i][1]) wrong_arg(); c_sub(mcr[j],mcr[j-1],hc1); c_sub(mc1[j],mc1[j-i],hc2); c_div(hc1,hc2,mcr[j]); } } } else if (isinterval(hd)) /* complex values */ { mi1=(complex *)m1; mi2=(complex *)m2; result=new_imatrix(1,c1,""); if (error) return; mir=(interval *)matrixof(result); memmove((char *)mir,(char *)mi2,c1*sizeof(interval)); for (i=1; i=i; j--) { i_sub(mir[j],mir[j-1],hi1); if (hi1[0]<=0 && hi1[1]>=0) { output("Interval points coincide\n"); error=1; return; } i_sub(mi1[j],mi1[j-i],hi2); i_div(hi1,hi2,mir[j]); } } } else if (isreal(hd)) { result=new_matrix(1,c1,""); if (error) return; mr=matrixof(result); memmove((char *)mr,(char *)m2,c1*sizeof(double)); for (i=1; i=i; j--) { if (m1[j]==m1[j-i]) wrong_arg(); mr[j]=(mr[j]-mr[j-1])/(m1[j]-m1[j-i]); } } } else wrong_arg(); moveresult(st,result); } double *divx,*divdif; static void rddeval (double *x, double *r) { int i; double *p=divdif+degree,res; res=*p--; for (i=degree-1; i>=0; i--) res=res*(*x-divx[i])+(*p--); *r=res; } static void cddeval (double *x, double *xi, double *z, double *zi) { int i; double *p,h,hi,*dd,xh,xhi; p=divdif+(2l*degree); dd=divx+(2l*(degree-1)); *z=*p; *zi=*(p+1); p-=2; for (i=degree-1; i>=0; i--) { xh=*x-*dd; xhi=*xi-*(dd+1); dd-=2; complex_multiply(&xh,&xhi,z,zi,&h,&hi); *z= h + *p; *zi=hi+*(p+1); p-=2; } } void ddval (header *hd) { header *st=hd,*hdd,*hd1,*result; int r,c,cd; hdd=nextof(st); hd1=nextof(hdd); equal_params_3(&hd,&hdd,&hd1); if (error) return; getmatrix(hd,&r,&c,&divx); if (r!=1 || c<1) wrong_arg(); getmatrix(hdd,&r,&cd,&divdif); if (r!=1 || c!=cd) wrong_arg(); degree=c-1; if (isinterval(hd)) result=map1i(iddeval,hd1); else result=map1(rddeval,cddeval,hd1); if (error) return; moveresult(st,result); } void polyzeros (header *hd) { header *st=hd,*result; int i,j,r,c; double *m,*mr,x; complex *mc,*mcr,xc,hc; hd=getvalue(hd); if (error) return; if (hd->type==s_real || hd->type==s_matrix) { getmatrix(hd,&r,&c,&m); if (r!=1) wrong_arg(); result=new_matrix(1,c+1,""); if (error) return; mr=matrixof(result); mr[0]=-m[0]; mr[1]=1.0; for (i=1; i=1; j--) mr[j]=mr[j-1]+x*mr[j]; mr[0]*=x; } } else if (hd->type==s_complex || hd->type==s_cmatrix) { getmatrix(hd,&r,&c,&m); mc=(complex *)m; if (r!=1) wrong_arg(); result=new_cmatrix(1,c+1,""); if (error) return; mcr=(complex *)matrixof(result); mcr[0][0]=-mc[0][0]; mcr[0][1]=-mc[0][1]; mcr[1][0]=1.0; mcr[1][1]=0.0; for (i=1; i=1; j--) { c_mult(xc,mcr[j],hc); c_add(hc,mcr[j-1],mcr[j]); } c_mult(xc,mcr[0],mcr[0]); } } else wrong_arg(); moveresult(st,result); } void polydd (header *hd) { header *st=hd,*hd1,*result; int c1,c2,i,j,r; double *m1,*m2,*mr,x; complex *mc1,*mc2,*mcr,hc,xc; hd1=next_param(st); equal_params_2(&hd,&hd1); if (error) return; getmatrix(hd,&r,&c1,&m1); if (r!=1) wrong_arg(); getmatrix(hd1,&r,&c2,&m2); if (r!=1) wrong_arg(); if (c1!=c2) wrong_arg(); if (iscomplex(hd)) /* complex values */ { mc1=(complex *)m1; mc2=(complex *)m2; result=new_cmatrix(1,c1,""); if (error) return; mcr=(complex *)matrixof(result); c_copy(mcr[c1-1],mc2[c1-1]); for (i=c1-2; i>=0; i--) { c_copy(xc,mc1[i]); c_mult(xc,mcr[i+1],hc); c_sub(mc2[i],hc,mcr[i]); for (j=i+1; j=0; i--) { x=m1[i]; mr[i]=m2[i]-x*mr[i+1]; for (j=i+1; jtype==s_matrix && dimsof(hd)->r==1) { m=matrixof(hd); for (i=dimsof(hd)->c-1; i>=0; i--) { if (fabs(m[i])>epsilon) break; } if (i<0) result=new_real(0.0,""); else { result=new_matrix(1,i+1,""); memmove((char *)matrixof(result),(char *)matrixof(hd), (i+1)*sizeof(double)); } } else if (hd->type==s_complex && dimsof(hd)->r==1) { mc=(complex *)matrixof(hd); for (i=dimsof(hd)->c-1; i>=0; i--) { if (fabs(mc[i][0])>epsilon && fabs(mc[i][1])>epsilon) break; } if (i<0) result=new_complex(0.0,0.0,""); else { result=new_cmatrix(1,i+1,""); memmove((char *)matrixof(result),(char *)matrixof(hd), (i+1)*sizeof(complex)); } } else wrong_arg(); moveresult(st,result); } /************** bauhuber algorithm ***************/ #define ITERMAX 200 #define EPS (64*DBL_EPSILON) #define QR 0.1 #define QI 0.8 #define EPSROOT (64*epsilon) #define BETA (2096*EPSROOT) static char *ram; static void quadloes (double ar, double ai, double br, double bi, double cr, double ci, double *treal, double *timag) { double pr,pi,qr,qi,h; pr=br*br-bi*bi; pi=2*br*bi; qr=ar*cr-ai*ci; qi=ar*ci+ai*cr; pr=pr-4*qr; pi=pi-4*qi; h=sqrt(pr*pr+pi*pi); qr=h+pr; if (qr<0.0) qr=0; qr=sqrt(qr/2); qi=h-pr; if (qi<0.0) qi=0; qi=sqrt(qi/2); if (pi<0.0) qi=-qi; h=qr*br+qi*bi; if (h>0.0) { qr=-qr; qi=-qi; } pr=qr-br; pi=qi-bi; h=pr*pr+pi*pi; *treal=2*(cr*pr+ci*pi)/h; *timag=2*(ci*pr-cr*pi)/h; } static int cxdiv (double ar, double ai, double br, double bi, double *cr, double *ci) { double temp; if (br==0.0 && bi==0.0) return 1; if (fabs(br)>fabs(bi)) { temp=bi/br; br=temp*bi+br; *cr=(ar+temp*ai)/br; *ci=(ai-temp*ar)/br; } else { temp=br/bi; bi=temp*br+bi; *cr=(temp*ar+ai)/bi; *ci=(temp*ai-ar)/bi; } return 0; } static double cxxabs (double ar, double ai) { if (ar==0.0) return fabs(ai); if (ai==0.0) return fabs(ar); return sqrt(ai*ai+ar*ar); } static void chorner (int n, int iu, double *ar, double *ai, double xr, double xi, double *pr, double *pi, double *p1r, double *p1i, double *p2r, double *p2i, double *rf1) { register int i,j; int i1; double temp,hh,tempr=0.0,tempi=0.0; *pr=ar[n]; *pi=ai[n]; *p1r=*p2r=0.0; *p1i=*p2i=0.0; *rf1=cxxabs(*pr,*pi); i1=n-iu; for (j=n-iu,i=n-1; i>=iu; i--,j--) { if (itemp) temp=hh; if (temp>*rf1) { *rf1=temp; i1=j-1; } if (i*scal) *scal=h; } ar[n]/=p; ai[n]/=p; if (*scal==0.0) *scal=1.0; for (p=1.0,i=n-1; i>=0; i--) { p*= *scal; ar[i]/=p; ai[i]/=p; } } #endif static void bauroot (int n, int iu, double *ar, double *ai, double *x0r, double *x0i) { int iter=0,i=0,aborted=0; double xoldr,xoldi,xnewr,xnewi,h,h1,h2,h3,h4,dzmax,dzmin, dxr=1,dxi=0,tempr,tempi,abs_pold,abs_pnew,abs_p1new, temp,ss,u,v, pr,pi,p1r,p1i,p2r,p2i,abs_pnoted=-1; dxr=dxi=xoldr=xoldi=0.0; if (n-iu==1) { quadloes(0.0,0.0,ar[n],ai[n], ar[n-1],ai[n-1],x0r,x0i); goto stop; } if (n-iu==2) { quadloes(ar[n],ai[n],ar[n-1],ai[n-1], ar[n-2],ai[n-2],x0r,x0i); goto stop; } xnewr=*x0r; xnewi=*x0i; chorner(n,iu,ar,ai,xnewr,xnewi,&pr,&pi,&p1r,&p1i,&p2r,&p2i,&ss); iter++; abs_pnew=cxxabs(pr,pi); if (abs_pnew==0) goto stop; abs_pold=abs_pnew; dzmin=BETA*(1+cxxabs(xnewr,xnewi)); while (!aborted) { abs_p1new=cxxabs(p1r,p1i); iter++; if (abs_pnew>abs_pold) /* Spiraling */ { i=0; temp=dxr; dxr=QR*dxr-QI*dxi; dxi=QR*dxi+QI*temp; } else /* Newton step */ { dzmax=1.0+cxxabs(xnewr,xnewi); h1=p1r*p1r-p1i*p1i-pr*p2r+pi*p2i; h2=2*p1r*p1i-pr*p2i-pi*p2r; if (abs_p1new>10*ss && cxxabs(h1,h2)>100*ss*ss) /* do a Newton step */ { i++; if (i>2) i=2; tempr=pr*p1r-pi*p1i; tempi=pr*p1i+pi*p1r; cxdiv(-tempr,-tempi,h1,h2,&dxr,&dxi); if (cxxabs(dxr,dxi)>dzmax) { temp=dzmax/cxxabs(dxr,dxi); dxr*=temp; dxi*=temp; i=0; } if (i==2 && cxxabs(dxr,dxi)0) { i=0; cxdiv(xnewr-xoldr,xnewi-xoldi,dxr,dxi,&h3,&h4); h3+=1; h1=h3*h3-h4*h4; h2=2*h3*h4; cxdiv(dxr,dxi,h1,h2,&h3,&h4); if (cxxabs(h3,h4)<50*dzmin) { dxr+=h3; dxi+=h4; } } xoldr=xnewr; xoldi=xnewi; abs_pold=abs_pnew; } else /* saddle point, minimize into direction pr+i*pi */ { i=0; h=dzmax/abs_pnew; dxr=h*pr; dxi=h*pi; xoldr=xnewr; xoldi=xnewi; abs_pold=abs_pnew; do { chorner(n,iu,ar,ai,xnewr+dxr,xnewi+dxi,&u,&v, &h,&h1,&h2,&h3,&h4); dxr*=2; dxi*=2; } while (fabs(cxxabs(u,v)/abs_pnew-1)5) break; if (iter>ITERMAX) { iter=0; if (abs_pnew<=abs_pnoted) break; abs_pnoted=abs_pnew; if (test_key()==escape) { error=700; return; } } } *x0r=xnewr; *x0i=xnewi; stop: ; /* chorner(n,iu,ar,ai,*x0r,*x0i,&pr,&pi,&p1r,&p1i,&p2r,&p2i,&ss); abs_pnew=cxxabs(pr,pi); printf("%20.5e +i* %20.5e, %20.5e\n", *x0r,*x0i,abs_pnew); */ } static void _polydiv (int n, int iu, double *ar, double *ai, double x0r, double x0i) { int i; for (i=n-1; i>iu; i--) { ar[i]+=ar[i+1]*x0r-ai[i+1]*x0i; ai[i]+=ai[i+1]*x0r+ar[i+1]*x0i; } } static void bauhuber (double *p, int n, double *result, int all, double startr, double starti) { double *ar,*ai,scalefak=1.0; int i; double x0r,x0i; ram=newram; if (!freeram(2*(n+1)*sizeof(double))) outofram(); ar=(double *)ram; ai=ar+n+1; for (i=0; i<=n; i++) { ar[i]=p[2*i]; ai[i]=p[2*i+1]; } /* scpoly(n,ar,ai,&scalefak); */ /* scalefak=1; */ x0r=startr; x0i=starti; for (i=0; i<(all?n:1); i++) { bauroot(n,i,ar,ai,&x0r,&x0i); ar[i]=scalefak*x0r; ai[i]=scalefak*x0i; if (error) { output("Bauhuber-Iteration failed!\n"); error=311; return; } _polydiv(n,i,ar,ai,x0r,x0i); x0i=-x0i; } for (i=0; itype==s_matrix) { make_complex(st); if (error) return; hd=getvalue(st); if (error) return; } if (hd->type!=s_cmatrix || dimsof(hd)->r!=1 || dimsof(hd)->c<2) { output("Need a complex polynomial\n"); error=300; return; } getmatrix(hd,&r,&c,&m); result=new_cmatrix(1,c-1,""); if (error) return; bauhuber(m,c-1,matrixof(result),1,0,0); moveresult(st,result); } void mzeros1 (header *hd) { header *st=hd,*hd1,*result; int r,c; double *m,xr,xi; hd1=nextof(hd); hd=getvalue(hd); if (error) return; if (hd->type==s_matrix) { make_complex(st); if (error) return; hd=getvalue(st); if (error) return; } hd1=getvalue(hd1); if (error) return; if (hd1->type==s_real) { xr=*realof(hd1); xi=0; } else if (hd1->type==s_complex) { xr=*realof(hd1); xi=*(realof(hd1)+1); } else { output("Need a starting value!\n"); error=300; return; } if (hd->type!=s_cmatrix || dimsof(hd)->r!=1 || dimsof(hd)->c<2) { output("Need a complex polynomial\n"); error=300; return; } getmatrix(hd,&r,&c,&m); result=new_complex(0,0,""); if (error) return; bauhuber(m,c-1,realof(result),0,xr,xi); moveresult(st,result); } euler-1.61.0/src/polynom.h0000644000175000001440000000067107452015172014220 0ustar ericusers/* * Euler - a numerical lab * * file : polynom.h -- polynomial maths */ #ifndef _POLYNOM_H_ #define _POLYNOM_H_ #include "stack.h" void polyval (header *hd); void polyadd (header *hd); void polymult (header *hd); void polydiv (header *hd); void dd (header *hd); void ddval (header *hd); void polydd (header *hd); void polyzeros (header *hd); void polytrunc (header *hd); void mzeros (header *hd); void mzeros1 (header *hd); #endif euler-1.61.0/src/term.c0000644000175000001440000021617410327033705013471 0ustar ericusers/************************************************************************* * * GTK Euler : the notebook widget * *************************************************************************/ #include #include #include #include #include #include #include "term.h" #include "sysdep.h" #include "stack.h" #include "builtin.h" #include "command.h" #include "edit.h" #include "rc.h" #define TERM_MINWIDTH_DEFAULT 80 #define TERM_MINHEIGHT_DEFAULT 24 int linelength = E_TWIDTH_DEFAULT; static char deadkey; /* for deadkey handling (^ and ¨) */ #define PADDING 2 enum { GTK_TERM_CHANGED, GTK_TERM_SAVED, GTK_TERM_EDITING, GTK_TERM_INTERPRETING, LAST_SIGNAL }; static guint gtk_term_signals[LAST_SIGNAL] = {0,0,0,0}; static GtkWidgetClass *parent_class = NULL; static void gtk_term_class_init (GtkTermClass *klass); static void gtk_term_init (GtkTerm *term); /* GtkObject and GtkWidget virtual methods */ static void gtk_term_destroy (GtkObject *object); static void gtk_term_realize (GtkWidget *widget); static void gtk_term_unrealize (GtkWidget *widget); static void gtk_term_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gtk_term_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gint gtk_term_expose (GtkWidget *widget, GdkEventExpose *event); static void gtk_term_map (GtkWidget *widget); static gint gtk_term_focus_in(GtkWidget *widget, GdkEventFocus *event); static gint gtk_term_focus_out(GtkWidget *widget, GdkEventFocus *event); static gint gtk_term_key_press (GtkWidget *widget, GdkEventKey *event); static gint gtk_term_button_press (GtkWidget *widget, GdkEventButton *event); static gint gtk_term_button_release (GtkWidget *widget, GdkEventButton *event); static gint gtk_term_motion_notify (GtkWidget *widget, GdkEventMotion *event); static gint gtk_term_selection_clear(GtkWidget *widget, GdkEventSelection *event); static void gtk_term_selection_get(GtkWidget *widget, GtkSelectionData *selection_data, guint info, guint time); static void gtk_term_selection_received(GtkWidget *widget, GtkSelectionData *selection_data, guint time); /* private methods */ static void gtk_term_adjustment_safe_set_value(GtkTerm *term, gfloat value); static void gtk_term_scrollbar_moved (GtkAdjustment *adj, GtkWidget *widget); static void gtk_term_scroll(GtkWidget* widget, GdkEventScroll* event, gpointer user_data); static void gtk_term_cursor_up(GtkTerm *term); static void gtk_term_cursor_down(GtkTerm *term); static void gtk_term_update_caret(GtkTerm *term); static gint gtk_term_blink_caret(gpointer data); static void gtk_term_draw_caret(GtkTerm *term, guint state); static void gtk_term_scroll_to_pos(GtkTerm *term); static void gtk_term_draw_text(GtkTerm *term); static void gtk_term_redraw_current(GtkTerm *term); static void gtk_term_redraw_below(GtkTerm *term, int index); GType gtk_term_get_type() { static GType term_type = 0; if (!term_type) { GTypeInfo term_info = { sizeof (GtkTermClass), NULL, NULL, (GClassInitFunc) gtk_term_class_init, NULL, NULL, sizeof (GtkTerm), 0, (GInstanceInitFunc) gtk_term_init }; term_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkTerm", &term_info, 0); } return term_type; } /* * init of new signals and virtual methods */ static void gtk_term_class_init(GtkTermClass *klass) { GtkObjectClass *object_class = (GtkObjectClass*)klass; GtkWidgetClass *widget_class = (GtkWidgetClass*)klass; /* * save a copy of parent class structure to keep access to * its methods */ parent_class = gtk_type_class (gtk_widget_get_type ()); /* * define new signals */ gtk_term_signals[GTK_TERM_CHANGED] = g_signal_new ("term_changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkTermClass, changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gtk_term_signals[GTK_TERM_SAVED] = g_signal_new ("term_saved", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkTermClass, saved), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gtk_term_signals[GTK_TERM_EDITING] = g_signal_new("term_editing", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkTermClass, editing), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gtk_term_signals[GTK_TERM_INTERPRETING] = g_signal_new("term_interpreting", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkTermClass, interpreting), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /* * define virtual methods */ object_class->destroy = gtk_term_destroy; widget_class->realize = gtk_term_realize; widget_class->unrealize = gtk_term_unrealize; widget_class->size_request = gtk_term_size_request; widget_class->size_allocate = gtk_term_size_allocate; widget_class->expose_event = gtk_term_expose; widget_class->map = gtk_term_map; widget_class->button_press_event = gtk_term_button_press; widget_class->button_release_event = gtk_term_button_release; widget_class->motion_notify_event = gtk_term_motion_notify; widget_class->focus_in_event = gtk_term_focus_in; widget_class->focus_out_event = gtk_term_focus_out; widget_class->key_press_event = gtk_term_key_press; widget_class->selection_clear_event = gtk_term_selection_clear; widget_class->selection_received = gtk_term_selection_received; widget_class->selection_get = gtk_term_selection_get; } /* * init of object parameters, create subwidgets */ static void gtk_term_init(GtkTerm *term) { GTK_WIDGET_SET_FLAGS(term, GTK_CAN_FOCUS); term->name = g_string_new(""); term->a = e_new(); e_append(term->a,"",E_OUTPUT); term->top = term->cur = term->pos = term->epos = 0; term->promptlen = 1; term->xoff = 0; term->xcaret = term->ycaret = 0; term->twidth = 0; term->theight = 0; term->tfont = g_string_new(""); term->font = NULL; term->cwidth = 0; term->cheight = 0; term->cursor = NULL; term->scan = 0; term->code = 0; term->commentGC = term->outputGC = term->promptGC = term->udfGC = term->highlightGC = NULL; /* scrollbar set up */ term->v_adj = GTK_ADJUSTMENT(gtk_adjustment_new (0.0, 0.0, 0.0, 1.0, (gfloat)term->theight -1.0, (gfloat)term->theight)); gtk_object_ref ((gpointer)(term->v_adj)); gtk_object_sink (GTK_OBJECT (term->v_adj)); g_signal_connect ((gpointer) (term->v_adj),"value_changed", G_CALLBACK (gtk_term_scrollbar_moved),term); g_signal_connect ((gpointer) (term), "scroll_event", G_CALLBACK (gtk_term_scroll), NULL); /* caret timer */ term->timeout_id = -1; term->caret_blink_state = 0; /* command history set up */ term->history = e_new(); e_append(term->history,"",0); term->max_history = 32; term->hist = 0; /* clipboard */ term->clipboard = g_string_new(""); /* flags */ term->editing = 0; term->initializing = 1; term->selecting = 0; term->changed = 0; term->menu = NULL; gtk_selection_add_target(GTK_WIDGET(term),GDK_SELECTION_PRIMARY,GDK_SELECTION_TYPE_STRING,1); } /************************************************************************ * PUBLIC INTERFACE ************************************************************************/ /* * create a term widget with cols columns and rows rows */ GtkWidget* gtk_term_new(guint cols, guint rows, char *font) { GtkTerm *term = gtk_type_new (gtk_term_get_type ()); g_string_assign(term->tfont,font); term->twidth = cols; term->theight = rows; return GTK_WIDGET (term); } /* * load a notebook */ gint gtk_term_load(GtkWidget *widget, gchar *filename) { GtkTerm * term; int i; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); if (!e_load(term->a,filename)) return 0; term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); term->top = 0; /* find out for the first command */ for (i=0 ; ia) ; i++) if (e_get_type(term->a,i)==E_PROMPT) { term->cur = i; term->pos = term->epos = term->promptlen; term->xoff = 0; gtk_term_update_caret(term); break; } gdk_window_clear(term->text); gtk_term_draw_text(term); g_string_assign(term->name,filename); term->changed = 0; g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_SAVED],0); return 1; } /* * save the terminal to a notebook */ gint gtk_term_save(GtkWidget *widget, gchar *filename) { GtkTerm *term; gchar *file; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); if (filename) file = filename; else file = term->name->str; if (!e_save(term->a,file)) return 0; if (filename) g_string_assign(term->name,filename); term->changed = 0; g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_SAVED],0); return 1; } /* * clear the terminal */ void gtk_term_clear(GtkWidget *widget) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); e_clear(term->a); e_append(term->a,"",0); term->cur = term->top = 0; term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gdk_window_clear(term->text); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } void gtk_term_clear_new(GtkWidget *widget) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); gtk_term_draw_caret(term,0); e_clear(term->a); e_append(term->a,">",E_PROMPT); term->cur = term->top = 0; term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gdk_window_clear(term->text); gtk_term_draw_text(term); term->changed = 0; g_string_assign(term->name,""); g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_SAVED],0); gtk_term_draw_caret(term,1); } /* gtk_term_copy * copy the current selection to the clipboard */ void gtk_term_copy(GtkWidget *widget) { GtkTerm *term; gchar *s; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (term->epos!=term->pos) { if(gtk_selection_owner_set(widget,GDK_SELECTION_PRIMARY,GDK_CURRENT_TIME)){ if (term->epos>term->pos) s = g_strndup(&((e_get_text(term->a,term->cur))[term->pos]),term->epos-term->pos); else s = g_strndup(&((e_get_text(term->a,term->cur))[term->epos]),term->pos-term->epos); g_string_assign(term->clipboard,s); g_free(s); } else { g_print("euler could not own the selection"); } } //else g_string_assign(term->clipboard,""); } /* gtk_term_cut * cut the current selection to the clipboard */ void gtk_term_cut(GtkWidget *widget) { GtkTerm *term; gchar *s; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (term->epos!=term->pos) { if(gtk_selection_owner_set(widget,GDK_SELECTION_PRIMARY,GDK_CURRENT_TIME)) { if (term->epos>term->pos) { s = g_strndup(&((e_get_text(term->a,term->cur))[term->pos]),term->epos-term->pos); e_remove_text(term->a,term->cur,term->pos,term->epos-term->pos); term->epos = term->pos; } else { s = g_strndup(&((e_get_text(term->a,term->cur))[term->epos]),term->pos-term->epos); e_remove_text(term->a,term->cur,term->epos,term->pos-term->epos); term->pos = term->epos; } g_string_assign(term->clipboard,s); g_free(s); gtk_term_update_caret(term); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } else { g_print("euler could not own the selection\n"); } } } /* gtk_term_paste * paste the clipboard content to the current line */ void gtk_term_paste(GtkWidget *widget) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); gtk_selection_convert(widget,GDK_SELECTION_PRIMARY,GDK_TARGET_STRING,GDK_CURRENT_TIME); } gchar * gtk_term_get_comment(GtkWidget *widget) { GtkTerm *term; gchar *buffer, *next; int k, i, buffersize = 0; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); /* calculate the size of the comment */ k=term->cur; while (k-1>=0 && e_get_type(term->a,k-1)==E_COMMENT) { k--; buffersize += e_get_text_length(term->a,k)-1; } if (!buffersize) return NULL; next = buffer = g_malloc(buffersize); for (i=k;e_get_type(term->a,i)==E_COMMENT;i++) { strcpy(next,e_get_text(term->a,i)+2); next += e_get_text_length(term->a,i)-1; *(next-1)='\n'; } *(next-1)=0; return buffer; } void gtk_term_set_comment(GtkWidget *widget, gchar *cmt) { GtkTerm *term; char *s = cmt; int old_cur, dy; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); gtk_term_draw_caret(term,0); /* delete the current comment */ while (term->cur-1>=0 && e_get_type(term->a,term->cur-1)==E_COMMENT) { e_remove(term->a,term->cur-1); term->cur--; } old_cur=term->cur; /* insert the new one if any */ if (strlen(cmt)) { e_insert(term->a,term->cur,"% ",E_COMMENT); term->cur++; while (*s) { switch (*s) { case '\n' : e_insert(term->a,term->cur,"% ",E_COMMENT); term->cur++; break; default : e_append_char(term->a,term->cur-1,*s); } s++; } } if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } /* redraw what is needed */ term->v_adj->value = (gfloat)term->top; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_update_caret(term); gtk_term_redraw_below(term,old_cur); dy = old_cur - term->top; if (dy>=term->theight) gtk_term_adjustment_safe_set_value(term, (gfloat)(old_cur-term->theight+1)); else if (dy<0) gtk_term_adjustment_safe_set_value(term, (gfloat)old_cur); gtk_term_draw_caret(term,1); } gchar* gtk_term_get_name(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); return term->name->str; } gint gtk_term_is_named(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); return (term->name->len!=0); } gint gtk_term_is_changed(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); return term->changed; } gint gtk_term_is_initialized(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); return !term->initializing; } gint gtk_term_is_editing(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL,0); g_return_val_if_fail (GTK_IS_TERM (widget),0); term = GTK_TERM (widget); return term->editing; } void gtk_term_print(GtkWidget *widget, gchar *s) { GtkTerm * term; int i,n; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); g_return_if_fail (s != NULL); term = GTK_TERM (widget); while (*s) { switch (*s) { case '\n' : term->pos = term->epos = 0; gtk_term_update_caret(term); gtk_term_redraw_current(term); e_insert(term->a,term->cur+1,"",E_OUTPUT); term->cur++; term->v_adj->value = (gfloat)term->top; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); break; case 9 : n=4-(term->pos%4); for (i=0; ia,term->cur,' '); term->pos++; term->epos++; } break; default : e_append_char(term->a,term->cur,*s); // gtk_term_update_caret(term); // gtk_term_redraw_current(term); term->pos++; term->epos++; } s++; } if (!term->changed && !term->initializing) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } void gtk_term_edit_on(GtkWidget *widget) { GtkTerm * term; char ch; int i, type = E_OUTPUT, oldcur;; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); ch =(e_get_text(term->a,term->cur))[term->pos-1]; if (ch=='>') { term->promptlen = term->pos; if (term->promptlen==1) { e_set_type(term->a,term->cur,E_PROMPT); type = E_PROMPT; } } else if (ch=='$') { e_set_type(term->a,term->cur,E_UDF); type = E_UDF; } oldcur = term->cur; for (i=term->cur+1;ia);i++) { if (e_get_type(term->a,i)==type) { e_remove(term->a,term->cur); term->cur=i-1; break; } } term->v_adj->value = (gfloat)term->top; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); gtk_term_redraw_below(term,oldcur-1>=0? oldcur:0); term->editing = 1; if (term->timeout_id == -1 && term->editing && GTK_WIDGET_HAS_FOCUS(widget)) { term->timeout_id = gtk_timeout_add (500, gtk_term_blink_caret, term); gtk_term_draw_caret(term,1); } g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_EDITING],0); if (term->initializing) term->initializing = 0; } void gtk_term_edit_off(GtkWidget *widget) { GtkTerm * term; int type; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_INTERPRETING],0); term->editing = 0; if (term->timeout_id != -1) { g_source_remove(term->timeout_id); term->timeout_id = -1; } type = e_get_type(term->a,term->cur); if (type==E_COMMENT || (!strncmp(e_get_text(term->a,term->cur),">function",9) && term->cur+1a) && e_get_type(term->a,term->cur+1)==E_UDF) || (type==E_UDF && strncmp(e_get_text(term->a,term->cur),"$endfunction",12))) return; /* the line will be evaluated : remove the old output results */ while (term->cur+1a)) { type = e_get_type(term->a,term->cur+1); if (type==E_PROMPT || type==E_COMMENT) break; e_remove(term->a,term->cur+1); } term->v_adj->value = (gfloat)term->top; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); } void gtk_term_insert_command(GtkWidget *widget, char *text) { int type; GtkTerm * term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); type = e_get_type(term->a,term->cur); if (type!=E_PROMPT && type!=E_UDF) return; gtk_term_draw_caret(term,0); if (type==E_PROMPT) { int i = term->cur; while (i-1>=0 && e_get_type(term->a,i-1)==E_COMMENT) i--; term->cur = i; e_insert(term->a,term->cur,">",E_PROMPT); } else { e_insert(term->a,term->cur,"$",E_UDF); } term->pos = term->epos = term->promptlen; term->v_adj->upper = (gfloat)(e_get_length(term->a)); gtk_adjustment_changed(term->v_adj); if (term->cur < term->top) { gtk_term_scroll_to_pos(term); } else { gtk_term_update_caret(term); gtk_term_redraw_below(term,term->cur); } gtk_term_update_caret(term); gtk_term_draw_caret(term,1); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } void gtk_term_delete_command(GtkWidget *widget) { GtkTerm * term; int i; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (e_get_type(term->a,term->cur)==E_UDF) { if (term->cur==e_get_length(term->a)-1 || e_get_type(term->a,term->cur+1)!=E_UDF) return; gtk_term_draw_caret(term,0); e_remove(term->a,term->cur); term->pos = term->epos = term->promptlen; // term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_update_caret(term); gtk_term_redraw_below(term,term->cur); gtk_term_draw_caret(term,1); return; } /* is there another command line after this one (don't delete * the last line) ? */ for (i=term->cur+1;ia);i++) if (e_get_type(term->a,i)==E_PROMPT) break; if (i==e_get_length(term->a)) return; gtk_term_draw_caret(term,0); /* delete the comment lines if any */ while(term->cur && e_get_type(term->a,term->cur-1)==E_COMMENT) { e_remove(term->a,term->cur-1); term->cur--; } /* delete the command line */ e_remove(term->a,term->cur); /* delete the output and user function definition lines if any */ while (e_get_type(term->a,term->cur)==E_OUTPUT || e_get_type(term->a,term->cur)==E_UDF) e_remove(term->a,term->cur); /* set up the new current line (the next prompt) */ while (term->cura) && e_get_type(term->a,term->cur)!=E_PROMPT) term->cur++; term->pos = term->epos = term->promptlen; // term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); gdk_window_clear(term->text); gtk_term_draw_text(term); gtk_term_draw_caret(term,1); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } void gtk_term_delete_current_output(GtkWidget *widget) { GtkTerm * term; int i, changed=0; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (term->editing) { i = term->cur+1; while (ia) && e_get_type(term->a,i)==E_OUTPUT) { e_remove(term->a,i); changed = 1; } if(!changed) return; // term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); gdk_window_clear(term->text); gtk_term_draw_text(term); gtk_term_draw_caret(term,1); if (!term->changed && changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } } void gtk_term_delete_outputs(GtkWidget *widget) { GtkTerm * term; int i, changed=0; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (term->editing) { i=0; while (ia)) { if (e_get_type(term->a,i)==E_OUTPUT) { e_remove(term->a,i); if (icur) term->cur--; changed = 1; } else i++; } if (!changed) return; // term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); gdk_window_clear(term->text); gtk_term_draw_text(term); gtk_term_draw_caret(term,1); if (!term->changed && changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } } void gtk_term_set_popup(GtkWidget *widget, GtkMenu *menu) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); g_return_if_fail (menu!=NULL); term = GTK_TERM (widget); term->menu = menu; } void gtk_term_set_scrollbar(GtkWidget *widget, GtkWidget *scroll) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); g_return_if_fail (scroll!=NULL); term = GTK_TERM (widget); term->p_scroll = scroll; } void gtk_term_set_colors(GtkWidget *widget, GdkColor *cmdColor, GdkColor *outColor, GdkColor *cmtColor, GdkColor *udfColor) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); gdk_gc_set_foreground(term->commentGC,cmtColor); gdk_gc_set_foreground(term->outputGC,outColor); gdk_gc_set_foreground(term->promptGC,cmdColor); gdk_gc_set_foreground(term->udfGC,udfColor); } /************************************************************************ * PRIVATE METHODS ************************************************************************/ static void gtk_term_cursor_up(GtkTerm *term) { int i; if (e_get_type(term->a,term->cur)==E_UDF) { if (e_get_type(term->a,term->cur-1)==E_UDF) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->cur--; gtk_term_scroll_to_pos(term); gtk_term_draw_caret(term,1); } return; } if (e_get_type(term->a,term->cur)!=E_PROMPT) return; for (i=term->cur-1 ; i>=0 ; i--) if (e_get_type(term->a,i)==E_PROMPT) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->cur = i; gtk_term_scroll_to_pos(term); gtk_term_draw_caret(term,1); break; } } static void gtk_term_cursor_down(GtkTerm *term) { int i; if (e_get_type(term->a,term->cur)==E_UDF) { if (e_get_type(term->a,term->cur+1)==E_UDF) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->cur++; gtk_term_scroll_to_pos(term); gtk_term_draw_caret(term,1); } return; } if (e_get_type(term->a,term->cur)!=E_PROMPT) return; for (i=term->cur+1 ; ia) ; i++) if (e_get_type(term->a,i)==E_PROMPT) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->cur = i; gtk_term_scroll_to_pos(term); gtk_term_draw_caret(term,1); break; } } static void gtk_term_scroll_to_pos(GtkTerm *term) { gint w,h,dy; dy = term->cur - term->top; if (dy>=term->theight) gtk_term_adjustment_safe_set_value(term, (gfloat)(term->cur-term->theight+1)); else if (dy<0) gtk_term_adjustment_safe_set_value(term, (gfloat)term->cur); else{ gtk_term_adjustment_safe_set_value(term, (gfloat)term->v_adj->value); gtk_term_update_caret(term); } gdk_drawable_get_size(term->text,&w,&h); term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; if (term->xcaret>w-40){ while (term->xcaret>w-40) { term->xoff-=40; term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; } gdk_window_clear(term->text); gtk_term_draw_text(term); } else if (term->xcaretxcaretxoff+=40; term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; } gdk_window_clear(term->text); gtk_term_draw_text(term); } else gtk_term_redraw_current(term); } static void gtk_term_update_caret(GtkTerm *term) { term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; term->ycaret = (term->cur-term->top)*term->cheight+PADDING; } static void gtk_term_draw_caret(GtkTerm *term, guint state) { GdkGC *gc; if (term->pos==term->epos && term->cur >= term->top && term->cur < (term->top + term->theight)) { if (state && !term->caret_blink_state) { gc = ((GtkWidget*)term)->style->black_gc; gdk_draw_line(term->text,gc,term->xcaret,term->ycaret,term->xcaret,term->ycaret+term->cheight); } else if (!state && term->caret_blink_state) { gc = ((GtkWidget*)term)->style->white_gc; gdk_draw_line(term->text,gc,term->xcaret,term->ycaret,term->xcaret,term->ycaret+term->cheight); gtk_term_redraw_current(term); } term->caret_blink_state = state; } } static gint gtk_term_blink_caret(gpointer data) { GtkTerm *term = (GtkTerm*)data; g_return_val_if_fail (data != NULL, FALSE); gtk_term_draw_caret(term,!term->caret_blink_state); return TRUE; } /************************************************************************ * GtkObject and GtkWidget VIRTUAL METHODS DEFINITION ************************************************************************/ /* * GtkObject destroy method */ static void gtk_term_destroy (GtkObject *object) { GtkTerm *term; g_return_if_fail (object != NULL); g_return_if_fail (GTK_IS_TERM (object)); term = GTK_TERM (object); if (term->timeout_id != -1) g_source_remove(term->timeout_id); e_free(term->history); e_free(term->a); if (term->cursor) { gdk_cursor_destroy(term->cursor); term->cursor = NULL; } if (term->font) { gdk_font_unref (term->font); term->font = NULL; } if (term->v_adj) { gtk_signal_disconnect_by_data (GTK_OBJECT (term->v_adj), term); gtk_object_unref (GTK_OBJECT (term->v_adj)); term->v_adj = NULL; } g_string_free(term->name,TRUE); g_string_free(term->clipboard,TRUE); /* * call widget class destroy method */ if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy)(object); } /* * realize / unrealize : set up or destroy the gdk_window */ static void gtk_term_realize (GtkWidget *widget) { GtkTerm *term; GdkWindowAttr attributes; gint attributes_mask; GdkColormap *cmap; GdkColor c; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); term = GTK_TERM (widget); attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; attributes.height = widget->allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK | GDK_KEY_PRESS_MASK; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = cmap = gtk_widget_get_colormap (widget); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; /* main window */ widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); widget->style = gtk_style_attach (widget->style, widget->window); gdk_window_set_user_data (widget->window, widget); gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); attributes.x = widget->style->xthickness; attributes.y = widget->style->ythickness; attributes.width = MAX (1, (gint)widget->allocation.width - (gint)attributes.x * 2); attributes.height = MAX (1, (gint)widget->allocation.height - (gint)attributes.y * 2); attributes.cursor = term->cursor = gdk_cursor_new(GDK_XTERM); attributes_mask |= GDK_WA_CURSOR; term->text = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_user_data (term->text, term); gdk_window_set_background (term->text, &widget->style->white); gdk_window_show(term->text); term->font = gdk_font_load (term->tfont->str); if (!term->font) { fprintf(stderr,"The default font could not be found. Please change it by editing the \"tfont\" symbol in ~/euler/eulerrc\n"); exit(1); } term->cwidth = gdk_char_width(term->font,'m'); term->cheight = 2+gdk_string_height(term->font,"abcdefghijklmnopqrstuvwxyz0123456789"); term->commentGC = gdk_gc_new(term->text); c.red = 0; c.green = 100<<8; c.blue = 0; if (gdk_color_alloc(cmap,&c)) gdk_gc_set_foreground(term->commentGC,&c); term->outputGC = gdk_gc_new(term->text); term->udfGC = gdk_gc_new(term->text); c.red = 0; c.green = 0; c.blue = 100<<8; if (gdk_color_alloc(cmap,&c)) gdk_gc_set_foreground(term->udfGC,&c); term->promptGC = gdk_gc_new(term->text); c.red = 100<<8; c.green = 0; c.blue = 0; if (gdk_color_alloc(cmap,&c)) gdk_gc_set_foreground(term->promptGC,&c); term->highlightGC = gdk_gc_new(term->text); c.red = 255<<8; c.green = 153<<8; c.blue = 41<<8; if (gdk_color_alloc(cmap,&c)) gdk_gc_set_foreground(term->highlightGC,&c); term->v_adj->value = 0.0; term->v_adj->lower = 0.0; term->v_adj->upper = (gfloat)(e_get_length(term->a)); term->v_adj->step_increment = 1.0; term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); } static void gtk_term_unrealize (GtkWidget *widget) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); GTK_WIDGET_UNSET_FLAGS (widget, GTK_REALIZED); term = GTK_TERM (widget); gdk_window_set_user_data (term->text, NULL); gdk_window_destroy (term->text); term->text = NULL; gdk_gc_destroy(term->commentGC); gdk_gc_destroy(term->outputGC); gdk_gc_destroy(term->udfGC); gdk_gc_destroy(term->promptGC); gdk_gc_destroy(term->highlightGC); if (GTK_WIDGET_CLASS (parent_class)->unrealize) (*GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); } /* * selection handling */ static gint gtk_term_selection_clear(GtkWidget *widget, GdkEventSelection *event) { GtkTerm *term; g_return_val_if_fail (widget != NULL,FALSE); g_return_val_if_fail (GTK_IS_TERM(widget),FALSE); term = GTK_TERM(widget); /* Let the selection handling code know that the selection * has been changed, since we've overriden the default handler */ if (!gtk_selection_clear (widget, event)) return FALSE; if (term->clipboard->len!=0) g_string_assign(term->clipboard,""); return TRUE; } static void gtk_term_selection_get(GtkWidget *widget, GtkSelectionData *selection_data, guint info, guint time) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM(widget)); term = GTK_TERM(widget); gtk_selection_data_set(selection_data,GDK_SELECTION_TYPE_STRING,8,term->clipboard->str,term->clipboard->len); } static void gtk_term_selection_received(GtkWidget *widget, GtkSelectionData *selection_data, guint time) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM(widget)); term = GTK_TERM(widget); if (selection_data->length<0) return; if (selection_data->type != GDK_SELECTION_TYPE_STRING) return; /* if a piece of text is currently selected : delete it */ if (term->editing && (term->pos != term->epos)) { if (term->epos>term->pos) { e_remove_text(term->a,term->cur,term->pos,term->epos-term->pos); term->epos = term->pos; } else { e_remove_text(term->a,term->cur,term->epos,term->pos-term->epos); term->pos = term->epos; } } selection_data->data[selection_data->length] = 0; e_insert_text(term->a,term->cur,term->pos,(gchar *)selection_data->data); term->pos += strlen ((gchar *)selection_data->data); term->epos = term->pos; gtk_term_update_caret(term); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } /* * size_request : set the minimum widget size : 80 chars * 24 lines */ static void gtk_term_size_request (GtkWidget *widget, GtkRequisition *requisition) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); g_return_if_fail (requisition != NULL); term = GTK_TERM (widget); requisition->width = (term->twidth * term->cwidth) + (widget->style->xthickness * 2) + 2*PADDING; requisition->height = (term->theight * term->cheight) + (widget->style->ythickness * 2) + 2*PADDING; } /* * size_allocate : set the actual widget size */ static void gtk_term_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkTerm *term; static short count = 1; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); g_return_if_fail (allocation != NULL); widget->allocation = *allocation; if (GTK_WIDGET_REALIZED(widget)) { term = GTK_TERM(widget); if (count == 2) { int w = (TERM_MINWIDTH_DEFAULT * term->cwidth) + (widget->style->xthickness * 2) + 2*PADDING; int h = (TERM_MINHEIGHT_DEFAULT * term->cheight) + (widget->style->ythickness * 2) + 2*PADDING; gtk_widget_set_size_request(widget, w, h); count = 0; } if (count == 1) count = 2; gdk_window_move_resize(widget->window, allocation->x, allocation->y, allocation->width, allocation->height); gdk_window_move_resize(term->text, widget->style->xthickness, widget->style->ythickness, allocation->width-2*widget->style->xthickness, allocation->height-2*widget->style->ythickness); linelength = term->twidth = (allocation->width - (2 * widget->style->xthickness) - 2 * PADDING)/term->cwidth; term->theight = (allocation->height - (2 * widget->style->ythickness)- 2 * PADDING)/term->cheight; /* * resize the scrollbar */ term->v_adj->page_increment = (gfloat)(term->theight-1); term->v_adj->page_size = (gfloat)term->theight; gtk_adjustment_changed(term->v_adj); gtk_term_scroll_to_pos(term); } } static void gtk_term_redraw_current(GtkTerm *term) { int offy; GdkGC * gc = NULL; offy = PADDING+(term->cur-term->top)*term->cheight; gdk_window_clear_area(term->text,0,offy,2*PADDING+term->twidth*term->cwidth,term->cheight); if (term->pos!=term->epos) { if (term->epos>term->pos) gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret,offy,(term->epos-term->pos)*term->cwidth,term->cheight); else gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret-(term->pos-term->epos)*term->cwidth,offy,(term->pos-term->epos)*term->cwidth,term->cheight); } switch (e_get_type(term->a,term->cur)) { case E_OUTPUT: gc = term->outputGC; break; case E_PROMPT: gc = term->promptGC; break; case E_UDF: gc = term->udfGC; break; case E_COMMENT: gc = term->commentGC; } gdk_draw_string(term->text,term->font,gc,PADDING+term->xoff,offy+term->cheight-term->font->descent-1,e_get_text(term->a,term->cur)); } static void gtk_term_redraw_below(GtkTerm *term, int index) { int offy; GdkGC * gc = NULL; int i, last; offy = PADDING+(index-term->top)*term->cheight; gdk_window_clear_area(term->text, 0, offy, 2*PADDING+term->twidth*term->cwidth, (term->theight-index+term->top)*term->cheight); last = MIN(term->top+term->theight,e_get_length(term->a)); for (i=index ; icur && term->epos!=term->pos) { if (term->epos>term->pos) gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret,offy,(term->epos-term->pos)*term->cwidth,term->cheight); else gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret-(term->pos-term->epos)*term->cwidth,offy,(term->pos-term->epos)*term->cwidth,term->cheight); } offy+=term->cheight; switch (e_get_type(term->a,i)) { case E_OUTPUT: gc = term->outputGC; break; case E_PROMPT: gc = term->promptGC; break; case E_UDF: gc = term->udfGC; break; case E_COMMENT: gc = term->commentGC; } gdk_draw_string(term->text,term->font,gc, PADDING+term->xoff, offy-term->font->descent-1, e_get_text(term->a,i)); } } static void gtk_term_draw_text(GtkTerm *term) { int offx, offy; GdkGC * gc = NULL; int i, last; if (term->editing) gtk_term_draw_caret(term,0); offx = PADDING+term->xoff; offy = PADDING; last = MIN(term->top+term->theight,e_get_length(term->a)); for (i=term->top ; icur && term->epos!=term->pos) { if (term->epos>term->pos) gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret,offy,(term->epos-term->pos)*term->cwidth,term->cheight); else gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret-(term->pos-term->epos)*term->cwidth,offy,(term->pos-term->epos)*term->cwidth,term->cheight); } offy+=term->cheight; switch (e_get_type(term->a,i)) { case E_OUTPUT: gc = term->outputGC; break; case E_PROMPT: gc = term->promptGC; break; case E_UDF: gc = term->udfGC; break; case E_COMMENT: gc = term->commentGC; } // gdk_draw_rectangle(term->text,gc,FALSE,offx,offy-term->cheight,widget->allocation.width-2*(PADDING+widget->style->klass->ythickness),term->cheight); gdk_draw_string(term->text,term->font,gc,offx,offy-term->font->descent-1,e_get_text(term->a,i)); } if (term->editing) gtk_term_draw_caret(term,1); } /* * draw / expose : draw or refresh the widget */ static gint gtk_term_expose (GtkWidget *widget, GdkEventExpose *event) { GtkTerm * term; g_return_val_if_fail (widget != NULL,FALSE); g_return_val_if_fail (GTK_IS_TERM (widget),FALSE); g_return_val_if_fail (event!=NULL,FALSE); if (GTK_WIDGET_DRAWABLE (widget)) { term = GTK_TERM (widget); if (event->window==term->text) gtk_term_draw_text(term); else gtk_draw_shadow (widget->style,widget->window,GTK_STATE_NORMAL,GTK_SHADOW_IN,0,0,widget->allocation.width,widget->allocation.height); } return FALSE; } static void gtk_term_adjustment_safe_set_value(GtkTerm *term, gfloat value) { if (value < term->v_adj->lower || term->v_adj->upper < term->v_adj->page_size) gtk_adjustment_set_value(term->v_adj, term->v_adj->lower); else if (value > term->v_adj->upper - term->v_adj->page_size) gtk_adjustment_set_value(term->v_adj, term->v_adj->upper - term->v_adj->page_size); else gtk_adjustment_set_value(term->v_adj, value); } /* * Callback for when the adjustment changes - i.e., the scrollbar * moves. */ static void gtk_term_scrollbar_moved (GtkAdjustment *adj, GtkWidget *widget) { GtkTerm *term; gint dy; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); dy = (gint)adj->value - term->top; if (dy) { if (term->editing) gtk_term_draw_caret(term,0); if (dy>0) { gint offx, offy, i; GdkGC *gc = NULL; offx = PADDING+term->xoff; offy = PADDING; gdk_window_copy_area(term->text,term->outputGC,offx,offy, term->text, offx,offy+dy*term->cheight, term->twidth*term->cwidth+PADDING, (term->theight-dy)*term->cheight); gdk_draw_rectangle(term->text,widget->style->white_gc,TRUE, offx,offy+(term->theight-dy)*term->cheight, term->twidth*term->cwidth+PADDING, dy*term->cheight); for (i=term->top+term->theight; itop+term->theight+dy; i++) { if (i==term->cur && term->epos!=term->pos) { if (term->epos>term->pos) gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret,offy+(i-term->top-dy)*term->cheight,(term->epos-term->pos)*term->cwidth+PADDING,term->cheight); else gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret-(term->pos-term->epos)*term->cwidth,offy+(i-term->top-dy)*term->cheight,(term->pos-term->epos)*term->cwidth+PADDING,term->cheight); } switch (e_get_type(term->a,i)) { case E_OUTPUT: gc = term->outputGC; break; case E_PROMPT: gc = term->promptGC; break; case E_UDF: gc = term->udfGC; break; case E_COMMENT: gc = term->commentGC; } if(e_get_text(term->a,i)) gdk_draw_string(term->text,term->font,gc, offx, offy+(i-term->top-dy+1)*term->cheight-term->font->descent-1, e_get_text(term->a,i)); } term->top += dy; } else { gint offx, offy, i; GdkGC *gc = NULL; dy = -dy; offx = PADDING+term->xoff; offy = PADDING; gdk_window_copy_area(term->text,term->outputGC,offx,offy+dy*term->cheight, term->text, offx,offy, term->twidth*term->cwidth+PADDING, (term->theight-dy)*term->cheight); gdk_draw_rectangle(term->text,widget->style->white_gc,TRUE, offx,offy, term->twidth*term->cwidth+PADDING, dy*term->cheight); for (i=term->top-dy; itop; i++) { if (i==term->cur && term->epos!=term->pos) { if (term->epos>term->pos) gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret,offy+(i-term->top+dy)*term->cheight,(term->epos-term->pos)*term->cwidth+PADDING,term->cheight); else gdk_draw_rectangle(term->text,term->highlightGC,TRUE,term->xcaret-(term->pos-term->epos)*term->cwidth,offy+(i-term->top+dy)*term->cheight,(term->pos-term->epos)*term->cwidth+PADDING,term->cheight); } switch (e_get_type(term->a,i)) { case E_OUTPUT: gc = term->outputGC; break; case E_PROMPT: gc = term->promptGC; break; case E_UDF: gc = term->udfGC; break; case E_COMMENT: gc = term->commentGC; } if(e_get_text(term->a,i)) gdk_draw_string(term->text,term->font,gc,offx, offy+(i-term->top+dy+1)*term->cheight-term->font->descent-1, e_get_text(term->a,i)); } term->top -= dy; } gtk_term_update_caret(term); if (term->editing) gtk_term_draw_caret(term,1); } } static void gtk_term_scroll(GtkWidget* widget, GdkEventScroll* event, gpointer user_data) { GtkAdjustment* sb_state; gdouble lower; gdouble upper; gdouble far; GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); sb_state = gtk_range_get_adjustment(GTK_RANGE(term->p_scroll)); lower = sb_state->lower; upper = sb_state->upper; if (sb_state->page_size >= upper) return; switch (event->direction) { case GDK_SCROLL_UP: if (sb_state->value <= lower) return; if ((sb_state->value - lower) < sb_state->step_increment) far = sb_state->value - lower; else far = sb_state->step_increment; gtk_adjustment_set_value(sb_state, sb_state->value - far); break; case GDK_SCROLL_DOWN: if (sb_state->value >= (upper - sb_state->page_size)) return; if (((upper - sb_state->page_size) - sb_state->value) < sb_state->step_increment) far = (upper - sb_state->page_size) - sb_state->value; else far = sb_state->step_increment; gtk_adjustment_set_value(sb_state, sb_state->value + far); break; default:{}; } } static void gtk_term_map (GtkWidget *widget) { GtkTerm *term; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TERM (widget)); term = GTK_TERM (widget); if (!GTK_WIDGET_MAPPED (widget)) { GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); gdk_window_show (widget->window); if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); } } static gint gtk_term_button_press (GtkWidget *widget, GdkEventButton *event) { GtkTerm * term; int n, p; g_return_val_if_fail (widget != NULL,FALSE); g_return_val_if_fail (GTK_IS_TERM (widget),FALSE); g_return_val_if_fail (event!=NULL,FALSE); if (event->button==1) { term = GTK_TERM (widget); if (!term->editing) return FALSE; n = term->top + (event->y - widget->style->ythickness - PADDING)/term->cheight; p = (event->x - term->xoff - widget->style->xthickness - PADDING)/term->cwidth; if (n>=e_get_length(term->a) || e_get_type(term->a,n)==E_OUTPUT || e_get_type(term->a,n)==E_COMMENT) return FALSE; if (((e_get_type(term->a,term->cur)==E_UDF && term->cur==n) || e_get_type(term->a,n)==E_PROMPT) && !nojump) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); if (ppromptlen) p=term->promptlen; if (p>e_get_text_length(term->a,n)) p=e_get_text_length(term->a,n); term->cur = n; term->pos = term->epos = p; gtk_term_update_caret(term); gtk_term_scroll_to_pos(term); term->selecting = 1; } } else if (event->button==3) { term = GTK_TERM (widget); if (!term->editing) return FALSE; n = term->top + (event->y - widget->style->ythickness - PADDING)/term->cheight; p = (event->x - term->xoff - widget->style->xthickness - PADDING)/term->cwidth; if (n>=e_get_length(term->a) || e_get_type(term->a,n)==E_OUTPUT || e_get_type(term->a,n)==E_COMMENT) return FALSE; if (term->cur!=n) if (((e_get_type(term->a,term->cur)==E_UDF && term->cur==n) || e_get_type(term->a,n)==E_PROMPT) && !nojump) { gtk_term_draw_caret(term,0); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); if (ppromptlen) p=term->promptlen; if (p>e_get_text_length(term->a,n)) p=e_get_text_length(term->a,n); term->cur = n; term->pos = term->epos = p; gtk_term_update_caret(term); gtk_term_scroll_to_pos(term); } gtk_menu_popup(term->menu,NULL,NULL,NULL,NULL,event->button,event->time); } return FALSE; } static void gtk_term_scroll_to_epos(GtkTerm *term) { gint w,h,eposx; gdk_drawable_get_size(term->text,&w,&h); eposx = term->xoff+term->epos*term->cwidth+PADDING; if (eposx>w-40){ term->xoff-=40; term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; gdk_window_clear(term->text); gtk_term_draw_text(term); } else if (eposxxoff+=40; term->xcaret = term->xoff+term->pos*term->cwidth+PADDING; gdk_window_clear(term->text); gtk_term_draw_text(term); } else gtk_term_redraw_current(term); } static gint gtk_term_motion_notify (GtkWidget *widget, GdkEventMotion *event) { GtkTerm * term; int p; g_return_val_if_fail (widget != NULL,FALSE); g_return_val_if_fail (GTK_IS_TERM (widget),FALSE); g_return_val_if_fail (event!=NULL,FALSE); term = GTK_TERM (widget); if (!term->editing || !term->selecting) return FALSE; p = (event->x - term->xoff - widget->style->xthickness - PADDING)/term->cwidth; if (ppromptlen) p=term->promptlen; if (p>e_get_text_length(term->a,term->cur)) p=e_get_text_length(term->a,term->cur); term->epos = p; gtk_term_scroll_to_epos(term); return FALSE; } static gint gtk_term_button_release (GtkWidget *widget, GdkEventButton *event) { GtkTerm * term; g_return_val_if_fail (widget != NULL,FALSE); g_return_val_if_fail (GTK_IS_TERM (widget),FALSE); g_return_val_if_fail (event!=NULL,FALSE); term = GTK_TERM (widget); switch (event->button) { case 1: term->selecting = 0; gtk_term_redraw_current(term); gtk_term_draw_caret(term,1); break; case 4: gtk_term_adjustment_safe_set_value(term, term->v_adj->value-term->theight+1); break; case 5: gtk_term_adjustment_safe_set_value(term, (gfloat)MIN(term->top+term->theight-1,e_get_length(term->a)-term->theight)); break; } return FALSE; } static gint gtk_term_focus_in(GtkWidget *widget, GdkEventFocus *event) { GtkTerm *term; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_TERM (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); term = GTK_TERM (widget); GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS); if (term->timeout_id == -1 && term->editing) { term->timeout_id = gtk_timeout_add (500, gtk_term_blink_caret, term); gtk_term_draw_caret(term,1); } return FALSE; } static gint gtk_term_focus_out(GtkWidget *widget, GdkEventFocus *event) { GtkTerm *term; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_TERM (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); term = GTK_TERM (widget); GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS); if (term->timeout_id != -1) { g_source_remove(term->timeout_id); term->timeout_id = -1; } gtk_term_draw_caret(term,0); return FALSE; } /* dohelp * Extend a start string in up to 16 ways to a command or function. * This function is called from the line editor, whenever the HELP * key is pressed. */ static char helpstart[256]; static char helpextend[16][16]; static int helpn=0,helpnext=0,helphist=-1; static char *p; extern commandtyp command_list[]; static int dohelp (char start[256], char extend[16][16]) { int count=0,ln,l; header *hd=(header *)ramstart; builtintyp *b=builtin_list; commandtyp *c=command_list; ln=(int)strlen(start); while (b->name) { if (!strncmp(start,b->name,ln)) { l=(int)strlen(b->name)-ln; if (l>0 && l<16) { strcpy(extend[count],b->name+ln); count++; } if (count>=16) return count; } b++; } while (hd<(header *)udfend) { if (!strncmp(start,hd->name,ln)) { l=(int)strlen(hd->name)-ln; if (l>0 && l<16) { strcpy(extend[count],hd->name+ln); count++; } if (count>=16) return count; } hd=nextof(hd); } while (c->name) { if (!strncmp(start,c->name,ln)) { l=(int)strlen(c->name)-ln; if (l>0 && l<16) { strcpy(extend[count],c->name+ln); count++; } if (count>=16) return count; } c++; } return count; } /* extend the command at cursor position */ static void gtk_term_edithelp (GtkTerm *term) { char *start,*end,*p; int i,l; /* search history */ l=e_get_text_length(term->a,term->cur); helphist=-1; for (i=e_get_length(term->history)-1; i>=0; i--) if (!strncmp(e_get_text(term->history,i),e_get_text(term->a,term->cur),l)) { helphist=i; break; } /* get the begining of the command to extend */ start=end=p=e_get_text(term->a,term->cur)+term->pos; while (start>e_get_text(term->a,term->cur) && (isalpha(*(start-1)) || isdigit(*(start-1)))) start--; while (isdigit(*start)) start++; while (isalpha(*end) || isdigit(*end)) end++; if (start>p || start>=end) return; while (ppos++; p++; } memmove(helpstart,start,end-start); helpstart[end-start]=0; helpn=dohelp(helpstart,helpextend); helpnext=0; } static void gtk_term_fkinsert (GtkTerm *term, int i) { char *p = fktext[i]; e_insert_text(term->a,term->cur,term->pos,p); gtk_term_redraw_current(term); term->pos += (int)strlen(p); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } static void get_scan(GdkEventKey *event, GtkTerm *term) { switch (event->keyval) { case GDK_Escape: term->scan = escape; break; case GDK_KP_Up: case GDK_Up: term->scan = cursor_up; break; case GDK_KP_Down: case GDK_Down: term->scan = cursor_down; break; case GDK_KP_Right: case GDK_Right: if (event->state & GDK_SHIFT_MASK) { term->scan = word_right; } else { term->scan = cursor_right; } break; case GDK_KP_Left: case GDK_Left: if (event->state & GDK_SHIFT_MASK) { term->scan = word_left; } else { term->scan = cursor_left; } break; case GDK_BackSpace: term->scan = backspace; break; case GDK_Delete: case GDK_KP_Delete: term->scan = deletekey; break; case GDK_KP_Insert: case GDK_Insert: break; case GDK_KP_Home: case GDK_Home: term->scan = line_start; break; case GDK_KP_End: case GDK_End: term->scan = line_end; break; case GDK_KP_F1: case GDK_F1: term->scan = fk1; break; case GDK_KP_F2: case GDK_F2: term->scan = fk2; break; case GDK_KP_F3: case GDK_F3: term->scan = fk3; break; case GDK_KP_F4: case GDK_F4: term->scan = fk4; break; case GDK_F5: term->scan = fk5; break; case GDK_F6: term->scan = fk6; break; case GDK_F7: term->scan = fk7; break; case GDK_F8: term->scan = fk8; break; case GDK_F9: term->scan = fk9; break; case GDK_F10: term->scan = fk10; break; case GDK_F11: case GDK_F12: case GDK_F13: case GDK_F14: case GDK_F15: case GDK_F16: case GDK_F17: case GDK_F18: case GDK_F19: case GDK_F20: break; case GDK_KP_Page_Up: case GDK_Page_Up: break; case GDK_KP_Page_Down: case GDK_Page_Down: break; case GDK_Tab: term->scan = switch_screen; break; case GDK_KP_Enter: case GDK_Return: term->scan = enter; term->code = 13; break; default: if (event->string[0] && !(event->state & event->state & GDK_CONTROL_MASK || event->state & GDK_MOD1_MASK)) { char ch = event->string[0]; if (deadkey) { switch (deadkey) { case '^': switch (ch) { case ' ': ch = '^'; break; case 'a': ch = 'â'; break; case 'e': ch = 'ę'; break; case 'i': ch = 'î'; break; case 'o': ch = 'ô'; break; case 'u': ch = 'ű'; break; case 'A': ch = 'Â'; break; case 'E': ch = 'Ę'; break; case 'I': ch = 'Î'; break; case 'O': ch = 'Ô'; break; case 'U': ch = 'Ű'; break; default: {}; } deadkey=0; break; case '¨': switch (ch) { case ' ': ch = '¨'; break; case 'a': ch = 'ä'; break; case 'e': ch = 'ë'; break; case 'i': ch = 'ď'; break; case 'o': ch = 'ö'; break; case 'u': ch = 'ü'; break; case 'y': ch = '˙'; break; case 'A': ch = 'Ä'; break; case 'E': ch = 'Ë'; break; case 'I': ch = 'Ď'; break; case 'O': ch = 'Ö'; break; case 'U': ch = 'Ü'; break; default: {}; } deadkey=0; break; } } else if (ch=='^' || ch=='¨') deadkey=ch; if (!deadkey) { if (ch==' ') term->scan = space; term->code = ch; } } break; } } static gint gtk_term_key_press (GtkWidget *widget, GdkEventKey *event) { GtkTerm *term; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_TERM (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); term = GTK_TERM (widget); term->code = 0; term->scan = 0; if (term->editing) { if (event->keyval!=GDK_KP_Insert && event->keyval!=GDK_Insert) helpn=0; gtk_term_draw_caret(term,0); switch (event->keyval) { case GDK_Escape: term->scan = escape; e_remove_text(term->a,term->cur,term->promptlen,e_get_text_length(term->a,term->cur)-term->promptlen); term->pos = term->epos = term->promptlen; if (e_get_type(term->a,term->cur)==E_UDF) { e_append_text(term->a,term->cur,"endfunction"); term->pos += 11; term->epos = term->pos; } gtk_term_update_caret(term); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } break; case GDK_KP_Up: case GDK_Up: if (event->state & GDK_SHIFT_MASK) { term->scan = cursor_up; if (term->hist>0) { term->hist--; e_remove_text(term->a,term->cur,term->promptlen,e_get_text_length(term->a,term->cur)-term->promptlen); e_append_text(term->a,term->cur,e_get_text(term->history,term->hist)); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->pos = term->epos = e_get_text_length(term->a,term->cur); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } } else { gtk_term_cursor_up(term); } break; case GDK_KP_Down: case GDK_Down: if (event->state & GDK_SHIFT_MASK) { term->scan = cursor_down; if (term->histhistory)-1) { term->hist++; e_remove_text(term->a,term->cur,term->promptlen,e_get_text_length(term->a,term->cur)-term->promptlen); e_append_text(term->a,term->cur,e_get_text(term->history,term->hist)); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->pos = term->epos = e_get_text_length(term->a,term->cur); gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } } else { gtk_term_cursor_down(term); } break; case GDK_KP_Right: case GDK_Right: if (event->state & GDK_SHIFT_MASK) { term->scan = word_right; while ((e_get_text(term->a,term->cur))[term->pos] && (e_get_text(term->a,term->cur))[term->pos]!=' ') term->pos++; while ((e_get_text(term->a,term->cur))[term->pos]==' ') term->pos++; gtk_term_scroll_to_pos(term); term->epos = term->pos; } else { term->scan = cursor_right; if (term->epos==term->pos) { if ((e_get_text(term->a,term->cur))[term->pos]) { term->pos++;term->epos++; } } else { if (term->epos>term->pos) term->pos = term->epos; else term->epos = term->pos; } gtk_term_scroll_to_pos(term); } break; case GDK_KP_Left: case GDK_Left: if (event->state & GDK_SHIFT_MASK) { term->scan = word_left; while (term->pos>term->promptlen && (e_get_text(term->a,term->cur))[term->pos]==' ') term->pos--; while (term->pos>term->promptlen && (e_get_text(term->a,term->cur))[term->pos]!=' ') term->pos--; gtk_term_scroll_to_pos(term); term->epos = term->pos; } else { term->scan = cursor_left; if (term->epos==term->pos) { if (term->pos>term->promptlen) { term->pos--;term->epos--; } } else { if (term->epos>term->pos) term->epos=term->pos; else term->pos=term->epos; } gtk_term_scroll_to_pos(term); } break; case GDK_BackSpace: term->scan = backspace; if (term->pos>term->promptlen) { if (term->pos==term->epos) { term->pos--;term->epos--; gtk_term_update_caret(term); e_remove_text(term->a,term->cur,term->pos,1); } else { if (term->epos>term->pos) { e_remove_text(term->a,term->cur,term->pos,term->epos-term->pos); term->epos = term->pos; } else { e_remove_text(term->a,term->cur,term->epos,term->pos-term->epos); term->pos = term->epos; } } gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } break; case GDK_Delete: case GDK_KP_Delete: term->scan = deletekey; if (term->posa,term->cur)) { if (term->pos==term->epos) { e_remove_text(term->a,term->cur,term->pos,1); } else { if (term->epos>term->pos) { e_remove_text(term->a,term->cur,term->pos,term->epos-term->pos); term->epos = term->pos; } else { e_remove_text(term->a,term->cur,term->epos,term->pos-term->epos); term->pos = term->epos; } } gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } break; case GDK_KP_Insert: case GDK_Insert: if (!helpn && helphist<0) { gtk_term_edithelp(term); p=0; } if (helphist>=0) { e_remove_text(term->a,term->cur,term->promptlen,e_get_text_length(term->a,term->cur)-term->promptlen); e_append_text(term->a,term->cur,e_get_text(term->history,helphist)); term->pos = term->epos = term->promptlen; gtk_term_update_caret(term); gtk_term_redraw_current(term); term->pos = term->epos = e_get_text_length(term->a,term->cur); gtk_term_scroll_to_pos(term); } else if (helpnextepos-=l; e_remove_text(term->a,term->cur,term->pos,l); gtk_term_update_caret(term); } p=helpextend[helpnext++]; e_insert_text(term->a,term->cur,term->pos,p); term->epos+=strlen(p); gtk_term_scroll_to_pos(term); } if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } break; case GDK_KP_Home: case GDK_Home: term->scan = line_start; term->pos = term->epos = term->promptlen; gtk_term_scroll_to_pos(term); break; case GDK_KP_End: case GDK_End: term->scan = line_end; term->pos = term->epos = e_get_text_length(term->a,term->cur); gtk_term_scroll_to_pos(term); break; case GDK_KP_F1: case GDK_F1: term->scan = fk1; gtk_term_fkinsert(term,0); break; case GDK_KP_F2: case GDK_F2: term->scan = fk2; gtk_term_fkinsert(term,1); break; case GDK_KP_F3: case GDK_F3: term->scan = fk3; gtk_term_fkinsert(term,2); break; case GDK_KP_F4: case GDK_F4: term->scan = fk4; gtk_term_fkinsert(term,3); break; case GDK_F5: term->scan = fk5; gtk_term_fkinsert(term,4); break; case GDK_F6: term->scan = fk6; gtk_term_fkinsert(term,5); break; case GDK_F7: term->scan = fk7; gtk_term_fkinsert(term,6); break; case GDK_F8: term->scan = fk8; gtk_term_fkinsert(term,7); break; case GDK_F9: term->scan = fk9; gtk_term_fkinsert(term,8); break; case GDK_F10: term->scan = fk10; gtk_term_fkinsert(term,9); break; case GDK_F11: case GDK_F12: case GDK_F13: case GDK_F14: case GDK_F15: case GDK_F16: case GDK_F17: case GDK_F18: case GDK_F19: case GDK_F20: break; case GDK_KP_Page_Up: case GDK_Page_Up: /* scroll the view a page up */ gtk_term_adjustment_safe_set_value(term, term->v_adj->value-term->theight+1); break; case GDK_KP_Page_Down: case GDK_Page_Down: gtk_term_adjustment_safe_set_value(term, (gfloat)MIN(term->top+term->theight-1,e_get_length(term->a)-term->theight)); /* scroll the view a page down */ break; case GDK_Tab: term->scan = switch_screen; break; case GDK_KP_Enter: case GDK_Return: term->scan = enter; e_insert(term->history,e_get_length(term->history)-1,e_get_text(term->a,term->cur)+term->promptlen,0); if (e_get_length(term->history) > term->max_history) e_remove(term->history,0); term->hist=e_get_length(term->history)-1; set_editline(e_get_text(term->a,term->cur)+term->promptlen); return TRUE; default: if (event->string[0] && !(event->state & event->state & GDK_CONTROL_MASK || event->state & GDK_MOD1_MASK)) { char ch = event->string[0]; if (deadkey) { switch (deadkey) { case '^': switch (ch) { case ' ': ch = '^'; break; case 'a': ch = 'â'; break; case 'e': ch = 'ę'; break; case 'i': ch = 'î'; break; case 'o': ch = 'ô'; break; case 'u': ch = 'ű'; break; case 'A': ch = 'Â'; break; case 'E': ch = 'Ę'; break; case 'I': ch = 'Î'; break; case 'O': ch = 'Ô'; break; case 'U': ch = 'Ű'; break; default: {}; } deadkey=0; break; case '¨': switch (ch) { case ' ': ch = '¨'; break; case 'a': ch = 'ä'; break; case 'e': ch = 'ë'; break; case 'i': ch = 'ď'; break; case 'o': ch = 'ö'; break; case 'u': ch = 'ü'; break; case 'y': ch = '˙'; break; case 'A': ch = 'Ä'; break; case 'E': ch = 'Ë'; break; case 'I': ch = 'Ď'; break; case 'O': ch = 'Ö'; break; case 'U': ch = 'Ü'; break; default: {}; } deadkey=0; break; } } else if (ch=='^' || ch=='¨') deadkey=ch; if (!deadkey) { if (ch==' ') term->scan = space; term->code = ch; if (term->pos!=term->epos) { if (term->epos>term->pos) { e_remove_text(term->a,term->cur,term->pos,term->epos-term->pos); term->epos = term->pos; } else { e_remove_text(term->a,term->cur,term->epos,term->pos-term->epos); term->pos = term->epos; } } e_insert_char(term->a,term->cur,term->pos,ch); term->pos++;term->epos = term->pos; gtk_term_scroll_to_pos(term); if (!term->changed) { g_signal_emit(GTK_OBJECT(term),gtk_term_signals[GTK_TERM_CHANGED],0); term->changed = 1; } } } break; } gtk_term_draw_caret(term,1); } else get_scan(event,term); if (event->state & GDK_CONTROL_MASK || event->state & GDK_MOD1_MASK) return FALSE; return TRUE; } gint gtk_term_redraw(GtkWidget *widget) { GtkTerm *term; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_TERM (widget), FALSE); term = GTK_TERM (widget); gtk_term_redraw_current(term); return FALSE; } euler-1.61.0/src/term.h0000644000175000001440000000723510322311330013456 0ustar ericusers/************************************************************************* * * GTK Euler : the notebook widget * *************************************************************************/ #ifndef __GTK_TERM_H__ #define __GTK_TERM_H__ #include #include #include "earray.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define GTK_TERM(obj) GTK_CHECK_CAST (obj, gtk_term_get_type (), GtkTerm) #define GTK_TERM_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_term_get_type (), GtkTermClass) #define GTK_IS_TERM(obj) GTK_CHECK_TYPE (obj, gtk_term_get_type ()) typedef struct _GtkTerm GtkTerm; typedef struct _GtkTermClass GtkTermClass; struct _GtkTerm { GtkWidget widget; GtkWidget *p_scroll; /* pointer to scrollbar */ GtkAdjustment *v_adj; /* scrollbar adjustment */ GdkWindow * text; GString * name; /* current notebook filename */ earray * a; /* the variable which contains the notebook data */ gint top; /* the index of top visible line */ gint cur, pos, epos; /* the current line, pos and end pos (!= pos if a selection is active) */ gint promptlen; /* length of prompt string */ gint xoff; /* x offset */ gint xcaret, ycaret; /* caret position */ gint twidth; /* width in char */ gint theight; /* height in char */ GString * tfont; GdkFont * font; guint cwidth, cheight; GdkGC *commentGC, *outputGC, * promptGC, *udfGC, *highlightGC; GdkCursor * cursor; gint scan, code; // scan key code, and ascii code of the last key pressed gint editing, initializing, selecting; gint timeout_id; /* blinking time out */ guint caret_blink_state:1; /* caret blink state */ earray * history; /* command history handling */ int max_history; int hist; GString * clipboard; int changed; GtkMenu * menu; }; struct _GtkTermClass { GtkWidgetClass parent_class; void (*changed)(GtkTerm *term); void (*saved)(GtkTerm *term); void (*editing)(GtkTerm *term); void (*interpreting)(GtkTerm *term); }; GType gtk_term_get_type (void); GtkWidget* gtk_term_new (guint cols, guint rows, char *font); gint gtk_term_load (GtkWidget *widget, gchar *filename); gint gtk_term_save (GtkWidget *widget, gchar *filename); void gtk_term_clear (GtkWidget *widget); void gtk_term_clear_new (GtkWidget *widget); gchar * gtk_term_get_comment (GtkWidget *widget); void gtk_term_set_comment (GtkWidget *widget, gchar *cmt); gchar * gtk_term_get_name (GtkWidget *widget); gint gtk_term_is_named (GtkWidget *widget); gint gtk_term_is_changed (GtkWidget *widget); gint gtk_term_is_initialized (GtkWidget *widget); gint gtk_term_is_editing (GtkWidget *widget); void gtk_term_print (GtkWidget *widget, gchar *text); void gtk_term_edit_on (GtkWidget *widget); void gtk_term_edit_off (GtkWidget *widget); void gtk_term_set_colors (GtkWidget *widget, GdkColor *cmdColor, GdkColor *outColor, GdkColor *cmtColor, GdkColor *udfColor); void gtk_term_copy (GtkWidget *widget); void gtk_term_cut (GtkWidget *widget); void gtk_term_paste (GtkWidget *widget); void gtk_term_insert_command (GtkWidget *widget, char *text); void gtk_term_delete_command (GtkWidget *widget); void gtk_term_delete_current_output (GtkWidget *widget); void gtk_term_delete_outputs (GtkWidget *widget); void gtk_term_set_popup (GtkWidget *widget, GtkMenu *menu); void gtk_term_set_scrollbar (GtkWidget *widget, GtkWidget *scroll); gint gtk_term_redraw (GtkWidget *widget); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GTK_TERM_H__ */ euler-1.61.0/src/builtin.c0000644000175000001440000002056610331244544014166 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : builtin.c -- euler builtin function table */ #include #include #include "builtin.h" #include "output.h" #include "binary.h" #include "interval.h" #include "funcs.h" #include "matrix.h" #include "linear.h" #include "fft.h" #include "polynom.h" #include "feval.h" #include "special.h" #include "scalp.h" #include "spread.h" #include "graphics.h" #include "meta.h" #include "udf.h" #ifdef YACAS #include "yacas2e.h" #endif /**************************************************************************** * builtin function list * ****************************************************************************/ int builtin_count; builtintyp builtin_list[] = {{"index",0,mindex}, {"pi",0,mpi}, {"time",0,mtime}, {"epsilon",0,mepsilon}, {"sin",1,msin}, {"cos",1,mcos}, {"tan",1,mtan}, {"atan",1,matan}, {"acos",1,macos}, {"asin",1,masin}, {"exp",1,mexp}, {"log",1,mlog}, {"sqrt",1,msqrt}, {"re",1,mre}, {"im",1,mim}, {"complex",1,mcomplex}, {"iscomplex",1,miscomplex}, {"isinterval",1,misinterval}, {"isreal",1,misreal}, {"isfunction",1,misfunction}, {"isvar",1,misvar}, {"round",2,mround}, {"arg",1,marg}, {"abs",1,mabs}, {"sum",1,msum}, {"prod",1,mprod}, {"conj",1,mconj}, {"size",-1,msize}, {"rows",1,mrows}, {"cols",1,mcols}, {"zeros",1,mzerosmat}, {"ones",1,mones}, {"diag",3,mdiag}, {"diag",2,mdiag2}, {"band",3,mband}, {"extrema",1,mextrema}, {"mesh",1,mmesh}, {"meshbar",1,mmeshflat}, {"view",1,mview}, {"view",0,mview0}, {"wait",1,mwait}, {"fastrandom",1,mfastrandom}, {"random",1,mrandom}, {"normal",1,mnormalnew}, {"fastnormal",1,mnormal}, {"seed",1,mseed}, {"shuffle",1,mshuffle}, {"text",2,mtext}, {"ctext",2,mctext}, {"rtext",2,mrtext}, {"vtext",2,mvtext}, {"vctext",2,mvctext}, {"vrtext",2,mvrtext}, {"vutext",2,mvutext}, {"vcutext",2,mvcutext}, {"vrutext",2,mvrutext}, {"textsize",0,mtextsize}, {"wire",3,mwire}, {"solid",3,msolid}, {"solid",4,msolid1}, {"plot",2,mplot}, {"plotarea",2,mplotarea}, {"plot",0,mplot1}, {"pixel",0,mpixel}, {"mark",2,mmark}, {"contour",2,mcontour}, {"dup",2,mdup}, {"mod",2,mmod}, {"format",1,mformat}, {"goodformat",1,mgformat}, {"expformat",1,meformat}, {"fixedformat",1,mfformat}, {"iformat",1,miformat}, {"fracformat",1,mfracformat}, {"color",1,mcolor}, {"framecolor",1,mfcolor}, {"wirecolor",1,mwcolor}, {"textcolor",1,mtcolor}, {"fillcolor",1,mfillcolor}, {"style",1,mstyle}, {"markerstyle",1,mmstyle}, {"linestyle",1,mlstyle}, {"linewidth",1,mlinew}, {"window",1,mwindow}, {"window",0,mwindow0}, {"clip",1,mclip}, {"clip",0,mclip0}, {"normaldis",1,mgauss}, {"invnormaldis",1,minvgauss}, {"fak",1,mfak}, {"bin",2,mbin}, {"logfak",1,mlogfak}, {"logbin",2,mlogbin}, {"tdis",2,mtd}, {"invtdis",2,minvtd}, {"chidis",2,mchi}, {"fdis",3,mfdis}, {"max",2,mmax}, {"min",2,mmin}, {"scale",1,mscale}, {"sort",1,msort}, {"nonzeros",1,mnonzeros}, {"count",2,mstatistics}, {"floor",1,mfloor}, {"ceil",1,mceil}, {"cumsum",1,mcumsum}, {"cumprod",1,mcumprod}, {"free",0,mfree}, #ifndef NOSHRINK {"shrink",1,mshrink}, #endif {"input",1,minput}, {"max",1,mmax1}, {"min",1,mmin1}, {"eval",-1,mdo}, {"polyval",2,polyval}, {"polyadd",2,polyadd}, {"polymult",2,polymult}, {"polydiv",2,polydiv}, {"interp",2,dd}, {"divdif",2,dd}, {"interpval",3,ddval}, {"divdifval",3,ddval}, {"polytrans",2,polydd}, {"polycons",1,polyzeros}, {"polytrunc",1,polytrunc}, {"char",1,mchar}, {"ascii",1,mascii}, {"lu",1,mlu}, {"lusolve",2,mlusolve}, {"fft",1,mfft}, {"ifft",1,mifft}, {"polysolve",1,mzeros}, {"error",1,merror}, {"printf",2,mprintf}, {"sign",1,msign}, {"mouse",0,mmouse}, {"hb",1,mtridiag}, {"charpoly",1,mcharpoly}, {"stringcompare",2,mscompare}, {"find",2,mfind}, {"setdiag",3,msetdiag}, {"polyroot",2,mzeros1}, {"argn",0,margn}, {"setkey",2,msetkey}, {"any",1,many}, {"changedir",1,mcd}, {"searchfile",1,mdir}, {"searchfile",0,mdir0}, {"bandmult",2,wmultiply}, {"symmult",2,smultiply}, {"project",3,mproject}, {"args",1,margs}, {"args",0,margs0}, {"setplot",1,msetplot}, {"scaling",1,mscaling}, {"holding",1,mholding}, {"keepsquare",1,mkeepsquare}, {"holding",0,mholding0}, {"lineinput",1,mlineinput}, {"interpret",1,minterpret}, {"evaluate",1,mevaluate}, {"name",1,mname}, {"twosides",1,mtwosides}, {"meshfactor",1,mmeshfactor}, {"setepsilon",1,msetepsilon}, {"localepsilon",1,mlocalepsilon}, {"flipx",1,mflipx}, {"flipy",1,mflipy}, {"rotleft",1,mrotleft}, {"rotright",1,mrotright}, {"shiftleft",1,mshiftleft}, {"shiftright",1,mshiftright}, {"matrix",2,mmatrix}, {"jacobi",1,mjacobi}, {"frame",0,mframe}, #ifndef SPLIT_MEM {"store",1,mstore}, {"restore",1,mrestore}, #endif {"key",0,mkey}, {"errorlevel",1,merrlevel}, {"density",1,mdensity}, {"huecolor",1,mdcolor}, {"huegrid",1,mdgrid}, {"solidhue",4,msolidh}, {"redim",2,mredim}, {"resize",2,mresize}, {"open",2,mopen}, {"close",0,mclose}, {"putchar",1,mputchar}, {"putword",1,mputword}, {"putlongword",1,mputlongword}, {"getchar",0,mgetchar}, {"getchar",1,mgetchar1}, {"getword",0,mgetword}, {"getword",1,mgetword1}, {"getlongword",0,mgetlongword}, {"getlongword",1,mgetlongword1}, {"putuchar",1,mputchar}, {"putuword",1,mputword}, {"putulongword",1,mputlongword}, {"getuchar",0,mgetchar}, {"getuchar",1,mgetchar1}, {"getuword",0,mgetword}, {"getuword",1,mgetword1}, {"getulongword",0,mgetlongword}, {"getulongword",1,mgetlongword1}, {"getstring",1,mgetstring}, {"write",1,mwrite}, {"getvector",1,mgetvector}, {"eof",0,meof}, {"simplex",3,msimplex}, {"left",1,mleft}, {"right",1,mright}, {"middle",1,mmiddle}, {"diameter",1,mdiameter}, {"interval",2,minterval}, {"accuload",1,maccuload}, {"accuadd",1,maccuadd}, {"accuload",2,maccuload2}, {"accuadd",2,maccuadd2}, {"residuum",3,mresiduum}, {"accu",0,maccu1}, {"accure",0,maccu1}, {"accua",0,maccu1}, {"accuim",0,maccu2}, {"accub",0,maccu2}, {"expand",2,mexpand}, {"intersects",2,mintersects}, {"typeof",1,mtype}, {"markersize",1,mmarkersize}, {"bar",1,mbar}, {"barcolor",1,mbarcolor}, {"barstyle",1,mbarstyle}, {"map",-1,mmap1}, {"gammaln",1,mgammaln}, {"gamma",1,mgamma}, {"gamma",2,mgammai}, {"brent",-1,mbrent}, {"nelder",-1,mnelder}, {"runge1",-1,mrunge1}, {"runge2",-1,mrunge2}, {"testkey",0,mcode}, {"svd",1,msvd}, {"toeplitz",1,mtoeplitz}, {"toeplitzsolve",2,msolvetoeplitz}, {"betai1",3,mbetai}, {"besselj",2,mbesselj}, {"bessely",2,mbessely}, {"besselallr",2,mbesselall}, {"besseli",2,mbesseli}, {"besselk",2,mbesselk}, {"besselmodallr",2,mbesselmodall}, {"pswindow",1,mpswindow}, #ifdef WAVES {"playwave",1,mplaywav}, #endif #ifdef DLL {"dll",3,mdll}, #endif {"beginpages",0,mbeginframes}, {"endpages",0,mendframes}, {"playpages",1,mplayframes}, {"pages",0,mframes}, {"antialiasing",0,mantialiasing0}, {"antialiasing",1,mantialiasing}, #ifdef YACAS {"yacas",1,myacas}, {"yacasclear",0,myacasclear}, {"yacaseval",1,myacaseval}, #endif {(char *)0,0,0} }; /**************************************************************************** * execute builtin functions * ****************************************************************************/ static int builtin_compare (const builtintyp *p1, const builtintyp *p2) { int h; h=strcmp(p1->name,p2->name); if (h) return h; else { if (p1->nargs==-1 || p2->nargs==-1) return 0; else if (p1->nargsnargs) return -1; else if (p1->nargs>p2->nargs) return 1; else return 0; } } void sort_builtin (void) { builtin_count=0; while (builtin_list[builtin_count].name) builtin_count++; qsort(builtin_list,builtin_count,sizeof(builtintyp), (int (*) (const void *, const void *))builtin_compare); } int exec_builtin (char *name, int nargs, header *hd) { builtintyp *b,h; h.name=name; h.nargs=nargs; b=(builtintyp *)bsearch(&h,builtin_list,builtin_count,sizeof(builtintyp), (int (*) (const void *, const void *))builtin_compare); if (b) { if (nargs==0) hd=0; b->f(hd); return 1; } else return 0; } builtintyp *find_builtin (char *name) { builtintyp h; h.name=name; h.nargs=-1; return (builtintyp *)bsearch(&h,builtin_list,builtin_count,sizeof(builtintyp), (int (*) (const void *, const void *))builtin_compare); } euler-1.61.0/src/builtin.h0000644000175000001440000000066407452601534014176 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : builtin.h -- euler function table */ #ifndef _BUILTIN_H_ #define _BUILTIN_H_ #include "stack.h" typedef struct { char *name; int nargs; void (*f) (header *); } builtintyp; extern int builtin_count; extern builtintyp builtin_list[]; void sort_builtin (void); int exec_builtin (char *name, int nargs, header *hd); builtintyp *find_builtin (char *name); #endif euler-1.61.0/src/earray.c0000644000175000001440000001366410327033762014007 0ustar ericusers/**************************************************************************** * * earray : euler's array of command, output and comment strings * ****************************************************************************/ #include "earray.h" #include #include #include #include #include #define ALLOC_CHUNK 16 #define ALLOC_SIZE(n) (ALLOC_CHUNK*(((n)/ALLOC_CHUNK)+1)) typedef struct estring { GString * str; int type; } estring; struct earray { estring * data; int len; int alloc; }; static int watchforrealloc(earray *a, int n); /*--------------------------------------------------------------------------- * constructor / destructor *---------------------------------------------------------------------------*/ earray * e_new() { earray *a; a = (earray*)malloc(sizeof(earray)); if (a) { a->data = (estring*)malloc(ALLOC_CHUNK*sizeof(estring)); if (a->data) { a->alloc = ALLOC_CHUNK; a->len = 0; return a; } free(a); } return NULL; } void e_free(earray *a) { int i; if (!a) return; for (i=0 ; ilen ; i++) { g_string_free(a->data[i].str,TRUE); } free(a->data); free(a); } int e_load(earray *a, char *filename) { FILE *in; DIR *dir; char line[1024]; int type; if (!a) return 0; /* try to see if it is not a directory (because fopen succeeds even if it is a directory... */ dir = opendir(filename); if (dir) { fprintf(stderr,"It must be a file. I can't open %s !\n",filename); closedir(dir); return 0; } /* load the notebook */ in=fopen(filename,"r"); if (!in) { fprintf(stderr,"Could not open the file %s !\n",filename); return 0; } /* clear the old notebook */ e_clear(a); while (!feof(in)) { int n; if (!fgets(line,1024,in)) break; n=strlen(line); if (n>=2 && line[n-2]=='\r') line[n-2]=0; if (line[n-1]=='\n') line[n-1]=0; switch (line[0]) { case '>':type=E_PROMPT;break; case '$':type=E_UDF;break; case '%':type=E_COMMENT;break; default:type=E_OUTPUT; } e_append(a,line,type); } fclose(in); /* if the notebook file was empty... */ if (!a->len) e_append(a,"",E_OUTPUT); return 1; } int e_save(earray *a, char *filename) { FILE *out; int i; if (!a) return 0; out=fopen(filename,"w"); if (!out) { fprintf(stderr,"Could not save to the file %s !\n",filename); return 0; } for (i=0 ; ilen ; i++) { char ch = a->data[i].str->str[0]; if (a->data[i].type==E_OUTPUT && (ch=='>' || ch=='$' || ch=='%')) fputc(' ',out); fputs(a->data[i].str->str,out); fputc('\n',out); } fclose(out); return 1; } int e_get_length(earray *a) { if (a) return a->len; return 0; } /*--------------------------------------------------------------------------- * add / remove lines to the array *---------------------------------------------------------------------------*/ void e_clear(earray *a) { int i; if (!a) return; for (i=0 ; ilen ; i++) { g_string_free(a->data[i].str,TRUE); } a->len = 0; watchforrealloc(a,0); } int e_append(earray *a, char *text, int type) { if (a) { GString *s = g_string_new(text); if (s) { if (watchforrealloc(a,a->len+1)) { a->data[a->len].str = s; a->data[a->len].type = type; a->len++; return 1; } g_string_free(s,TRUE); } } return 0; } int e_insert(earray *a, int index, char *text, int type) { if (a) { GString *s; if (index>=a->len) return e_append(a,text,type); if (index<0) index=0; s = g_string_new(text); if (s) { if (watchforrealloc(a,a->len+1)) { memmove(&(a->data[index+1]),&(a->data[index]),(a->len-index)*sizeof(estring)); a->data[index].str = s; a->data[index].type = type; a->len++; return 1; } g_string_free(s,TRUE); } } return 0; } void e_remove(earray *a, int index) { if (!a) return; if (index<0 || index>=a->len-1) return; memmove(&(a->data[index]),&(a->data[index+1]),(a->len-index)*sizeof(estring)); a->len--; watchforrealloc(a,a->len); } /*--------------------------------------------------------------------------- * set / get things in specified line in the array *---------------------------------------------------------------------------*/ void e_set_type(earray *a, int index, int type) { if (!a) return; if (index<0 || index>=a->len) return; a->data[index].type = type; } int e_get_type(earray *a, int index) { if (a && index>=0 && indexlen) return a->data[index].type; return 0; } void e_set_text(earray *a, int index, char *text) { if (!a) return; if (index<0 || index>=a->len) return; g_string_assign(a->data[index].str,text); } char * e_get_text(earray *a, int index) { if (a && index>=0 && indexlen) return a->data[index].str->str; return NULL; } void e_append_char(earray *a, int index, char c) { if (a && index>=0 && indexlen) g_string_append_c(a->data[index].str,c); } void e_append_text(earray *a, int index, char *text) { if (a && index>=0 && indexlen) g_string_append(a->data[index].str,text); } void e_insert_char(earray *a, int index, int pos, char c) { if (a && index>=0 && indexlen) g_string_insert_c(a->data[index].str,pos,c); } void e_insert_text(earray *a, int index, int pos, char *text) { if (a && index>=0 && indexlen) g_string_insert(a->data[index].str,pos,text); } void e_remove_text(earray *a, int index, int pos, int len) { if (a && index>=0 && indexlen) g_string_erase(a->data[index].str,pos,len); } int e_get_text_length(earray *a, int index) { return a->data[index].str->len; } /*--------------------------------------------------------------------------- * watch if the array should be resized *---------------------------------------------------------------------------*/ static int watchforrealloc(earray *a, int n) { int alloc = ALLOC_SIZE(n); if (alloc!=a->alloc) { estring *data; data = (estring*)realloc(a->data,alloc*sizeof(estring)); if (data) { a->data = data; a->alloc = alloc; return 1; } return 0; } return 1; } euler-1.61.0/src/earray.h0000644000175000001440000000232707452601737014016 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : earray.h -- notebook line array */ #ifndef E_ARRAY_H #define E_ARRAY_H #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define E_OUTPUT 0 #define E_PROMPT 1 #define E_UDF 2 #define E_COMMENT 3 typedef struct earray earray; earray * e_new(); void e_free(earray *a); int e_load(earray *a, char *filename); int e_save(earray *a, char *filename); int e_get_length(earray *a); void e_clear(earray *a); int e_append(earray *a, char *text, int type); int e_insert(earray *a, int index, char *text, int type); void e_remove(earray *a, int index); void e_set_type(earray *a, int index, int type); int e_get_type(earray *a, int index); void e_set_text(earray *a, int index, char *text); char * e_get_text(earray *a, int index); void e_append_char(earray *a, int index, char c); void e_append_text(earray *a, int index, char *text); void e_insert_char(earray *a, int index, int pos, char c); void e_insert_text(earray *a, int index, int pos, char *text); void e_remove_text(earray *a, int index, int pos, int len); int e_get_text_length(earray *a, int index); #ifdef __cplusplus } #endif /* __cplusplus */ #endif euler-1.61.0/src/euler.cfg0000644000175000001440000000045307417015640014146 0ustar ericuserscd("../progs"); path(".;myspecial"); load "util.e"; load "framed.e" load "x.e" load "remez.e" load "steffens.e" load "gauss.e" load "histo.e" load "interval.e" load "broyden.e" load "fminmax.e" load "3dplot.e" load "svd.e" load "splines.e" load "statist.e" shortformat(); ..wait(1); shrinkwindow(); euler-1.61.0/src/metagtk.c0000644000175000001440000006561310257643643014170 0ustar ericusers/**************************************************************************** * metagtk.c * * gtk graphic device : widget for graphic output * ****************************************************************************/ #include #include #include #include "graphics.h" #include "metagtk.h" #include "sysdep.h" #define META_WIDTH_DEFAULT 100 #define META_HEIGHT_DEFAULT 100 static int oldst=-1; static int oldwidth=-1; static int oldcolor=-1; #define FONT_PATTERN "-*-helvetica-medium-r-normal-*-*-%d-*-*-p-*-iso8859-1" static int font_size=12; /* * method called by the metafile driver for Gtk */ static void gtk_meta_begin (void *p); static void gtk_meta_end (void *p); static void gtk_meta_clear (void *p); static void gtk_meta_clip (void *data, double c, double r, double c1, double r1); static void gtk_meta_line (void *p, double c, double r, double c1, double r1, int color, int style, int width); static void gtk_meta_marker (void *p, double c, double r, int color, int type); static void gtk_meta_fill (void *p, double c[], int st, int n, int connect[]); static void gtk_meta_fillh (void *p, double c[], double hue, int color, int connect); static void gtk_meta_bar (void *p, double c, double r, double c1, double r1, double hue, int color, int connect); static void gtk_meta_bar1 (void *p, double c, double r, double c1, double r1, int color, int connect); static void gtk_meta_text (void *p, double c, double r, char *text, int color, int alignment); static void gtk_meta_vtext (void *p, double c, double r, char *text, int color, int alignment); static void gtk_meta_vutext (void *p, double c, double r, char *text, int color, int alignment); static void gtk_meta_scale (void *p, double s); /* * events methods */ static void gtk_meta_realize (GtkWidget *widget); static void gtk_meta_unrealize (GtkWidget *widget); static void gtk_meta_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gtk_meta_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gint gtk_meta_expose (GtkWidget *widget, GdkEventExpose *event); static gint gtk_meta_button_press (GtkWidget *widget, GdkEventButton *event); /***************************************************************************** * Initialization / destruction of the widget * *****************************************************************************/ static GtkWidgetClass *parent_class = NULL; static void gtk_meta_class_init (GtkMetaClass *klass); static void gtk_meta_init (GtkMeta *term); static void gtk_meta_destroy (GtkObject *object); GType gtk_meta_get_type() { static GType meta_type = 0; if (!meta_type) { GTypeInfo meta_info = { sizeof (GtkMetaClass), NULL, NULL, (GClassInitFunc) gtk_meta_class_init, NULL, NULL, sizeof (GtkMeta), 0, (GInstanceInitFunc) gtk_meta_init }; meta_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkMeta", &meta_info, 0); } return meta_type; } /* * init of new signals and virtual methods */ static void gtk_meta_class_init(GtkMetaClass *klass) { GtkObjectClass *object_class = (GtkObjectClass*)klass; GtkWidgetClass *widget_class = (GtkWidgetClass*)klass; /* * save a copy of parent class structure to keep access to * its methods */ parent_class = gtk_type_class (gtk_widget_get_type ()); /* * defining virtual methods */ object_class->destroy = gtk_meta_destroy; widget_class->realize = gtk_meta_realize; widget_class->unrealize = gtk_meta_unrealize; widget_class->size_request = gtk_meta_size_request; widget_class->size_allocate = gtk_meta_size_allocate; widget_class->expose_event = gtk_meta_expose; widget_class->button_press_event = gtk_meta_button_press; } /* * init of object parameters, create subwidgets */ static void gtk_meta_init(GtkMeta *meta) { meta->width = meta->height = 0; meta->font = NULL; meta->cmap = NULL; meta->colors = NULL; meta->gc = meta->stipplegc = NULL; meta->cursor = NULL; meta->draw = NULL; meta->pixmap = NULL; meta->playing = 0; meta->dev.data = NULL; meta->dev.begin = gtk_meta_begin; meta->dev.end = gtk_meta_end; meta->dev.clear = gtk_meta_clear; meta->dev.clip = gtk_meta_clip; meta->dev.line = gtk_meta_line; meta->dev.marker = gtk_meta_marker; meta->dev.bar = gtk_meta_bar; meta->dev.bar1 = gtk_meta_bar1; meta->dev.fill = gtk_meta_fill; meta->dev.fillh = gtk_meta_fillh; meta->dev.text = gtk_meta_text; meta->dev.vtext = gtk_meta_vtext; meta->dev.vutext = gtk_meta_vutext; meta->dev.scale = gtk_meta_scale; meta->x = 0.0; meta->y = 0.0; } /* * GtkObject destroy method */ static void gtk_meta_destroy (GtkObject *object) { GtkMeta *meta; g_return_if_fail (object != NULL); g_return_if_fail (GTK_IS_META (object)); meta = GTK_META (object); g_free(meta->colors); gdk_cursor_destroy(meta->cursor); gdk_font_unref (meta->font); /* * call widget class destroy method */ if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy)(object); } /**************************************************************************** * meta widget * * public interface * ****************************************************************************/ GtkWidget* gtk_meta_new(gint width, gint height) { GtkMeta *meta; g_return_val_if_fail(width>0 && height>0,NULL); meta = gtk_type_new (gtk_meta_get_type ()); meta->width = width; meta->height = height; meta->dev.data = meta; return GTK_WIDGET (meta); } metadevice * gtk_meta_get_device(GtkWidget *widget) { GtkMeta *meta; g_return_val_if_fail(GTK_IS_META(widget),NULL); meta = GTK_META(widget); return &(meta->dev); } void gtk_meta_update_lines(GtkWidget *widget) { GtkMeta *meta; int newsize; g_return_if_fail(GTK_IS_META(widget)); meta = GTK_META(widget); newsize = widget->allocation.height/getmetalines(); if (newsize!=font_size) { if (meta->font) gdk_font_unref(meta->font); font_size = newsize; meta->font = gdk_font_load (g_strdup_printf(FONT_PATTERN,font_size*10)); if (meta->font) { setmetacharwidth(gdk_char_width(meta->font,'m')*1024l/widget->allocation.width); setmetacharheight((meta->font->ascent + meta->font->descent)*1024l/widget->allocation.height); } else fprintf(stderr,"the font %s can't be loaded\n",g_strdup_printf(FONT_PATTERN,font_size*10)); } } void gtk_meta_update_colors(GtkWidget *widget) { GtkMeta *meta; int i; g_return_if_fail(GTK_IS_META(widget)); meta = GTK_META(widget); for (i=0;icmap,&(meta->colors[i]),1); meta->colors[i].red = ((gushort)getmetacolor(0,i))<<8; meta->colors[i].green = ((gushort)getmetacolor(1,i))<<8; meta->colors[i].blue = ((gushort)getmetacolor(2,i))<<8; gdk_color_alloc(meta->cmap,&(meta->colors[i])); } } /**************************************************************************** * meta widget * * event interface * ****************************************************************************/ static void gtk_meta_realize (GtkWidget *widget) { GtkMeta *meta; GdkWindowAttr attributes; gint attributes_mask; int i; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_META (widget)); GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); meta = GTK_META (widget); attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; attributes.height = widget->allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = meta->cmap = gtk_widget_get_colormap (widget); attributes.cursor = meta->cursor = gdk_cursor_new(GDK_CROSSHAIR); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP | GDK_WA_CURSOR; /* main window */ widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); widget->style = gtk_style_attach (widget->style, widget->window); gdk_window_set_user_data (widget->window, widget); gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); gdk_window_set_background (widget->window, &widget->style->white); meta->stipplegc = gdk_gc_new(widget->window); meta->gc = gdk_gc_new(widget->window); gdk_gc_set_background(meta->gc,&(widget->style->white)); gdk_gc_set_foreground(meta->gc,&(widget->style->black)); meta->colors = g_new(GdkColor,MAX_COLORS); for (i=0;icolors[i].red = ((gushort)getmetacolor(0,i))<<8; meta->colors[i].green = ((gushort)getmetacolor(1,i))<<8; meta->colors[i].blue = ((gushort)getmetacolor(2,i))<<8; gdk_color_alloc(meta->cmap,&(meta->colors[i])); } font_size = widget->allocation.height/getmetalines(); meta->font = gdk_font_load (g_strdup_printf(FONT_PATTERN,font_size*10)); setmetacharwidth(gdk_char_width(meta->font,'m')*1024l/widget->allocation.width); setmetacharheight((meta->font->ascent + meta->font->descent)*1024l/widget->allocation.height); setmetawidth(widget->allocation.width); setmetaheight(widget->allocation.height); meta->pixmap = gdk_pixmap_new(widget->window,widget->allocation.width,widget->allocation.height,-1); gdk_draw_rectangle(meta->pixmap,widget->style->white_gc,1,0,0,-1,-1); meta->draw = widget->window; } static void gtk_meta_unrealize (GtkWidget *widget) { GtkMeta *meta; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_META (widget)); GTK_WIDGET_UNSET_FLAGS (widget, GTK_REALIZED); meta = GTK_META (widget); gdk_pixmap_unref(meta->pixmap); gdk_gc_destroy(meta->gc); gdk_gc_destroy(meta->stipplegc); if (GTK_WIDGET_CLASS (parent_class)->unrealize) (*GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); } /* * size_request : set the minimum widget size */ static void gtk_meta_size_request (GtkWidget *widget, GtkRequisition *requisition) { GtkMeta *meta; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_META (widget)); g_return_if_fail (requisition != NULL); meta = GTK_META (widget); if (meta->width && meta->height) { requisition->width = meta->width; requisition->height = meta->height; meta->width = meta->height = 0; } else { requisition->width = META_WIDTH_DEFAULT; requisition->height = META_HEIGHT_DEFAULT; } } /* * size_allocate : set the actual widget size */ static void gtk_meta_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkMeta *meta; static short count = 1; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_META (widget)); g_return_if_fail (allocation != NULL); widget->allocation = *allocation; if (GTK_WIDGET_REALIZED(widget)) { int newsize; GdkRectangle r; if (count == 2) { gtk_widget_set_size_request(widget, META_WIDTH_DEFAULT, META_HEIGHT_DEFAULT); count = 0; } if (count == 1) count = 2; meta = GTK_META(widget); gdk_window_move_resize(widget->window, allocation->x, allocation->y, allocation->width, allocation->height); if (meta->pixmap) gdk_pixmap_unref(meta->pixmap); meta->pixmap = gdk_pixmap_new(widget->window, widget->allocation.width, widget->allocation.height, -1); gdk_draw_rectangle (meta->pixmap, widget->style->white_gc, TRUE, 0, 0, widget->allocation.width, widget->allocation.height); setmetawidth(widget->allocation.width); setmetaheight(widget->allocation.height); r.x = allocation->x; r.y = allocation->y; r.width = allocation->width; r.height = allocation->height; gdk_gc_set_clip_rectangle(meta->gc, &r); newsize = widget->allocation.height/getmetalines(); if (newsize!=font_size) { if (meta->font) gdk_font_unref(meta->font); font_size = newsize; meta->font = gdk_font_load (g_strdup_printf(FONT_PATTERN,font_size*10)); if (meta->font) { setmetacharwidth(gdk_char_width(meta->font,'m')*1024l/widget->allocation.width); setmetacharheight((meta->font->ascent + meta->font->descent)*1024l/widget->allocation.height); } else fprintf(stderr,"the font %s can't be loaded\n",g_strdup_printf(FONT_PATTERN,font_size*10)); } } } static gint gtk_meta_expose(GtkWidget *widget, GdkEventExpose *event) { if (event->count==0) { GtkMeta *meta = GTK_META(widget); if (!meta->playing) { meta->draw = meta->pixmap; playmeta(); gdk_draw_pixmap(widget->window,meta->gc,meta->pixmap,0,0,0,0,-1,-1); meta->draw = widget->window; } } return FALSE; } static gint gtk_meta_button_press (GtkWidget *widget, GdkEventButton *event) { GtkMeta * meta; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_META (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); meta = GTK_META(widget); meta->x = (double)(((event)->x)*1024.0/widget->allocation.width); meta->y = (double)(((event)->y)*1024.0/widget->allocation.height); return FALSE; } /**************************************************************************** * metagtk.c * * metafile interface * ****************************************************************************/ #define col(c) ((int)(((c)*widget->allocation.width)/1024.0)) #define row(r) ((int)(((r)*widget->allocation.height)/1024.0)) static void setcolor (GtkMeta *meta, int c) { if (c!=oldcolor) { gdk_gc_set_foreground(meta->gc,&(meta->colors[c])); oldcolor=c; } } /* hsv_to_rgb * converts hsv color representation to rgb representation. * taken from the gtk_color_selection box. */ static void hsv_to_rgb (double h,double s,double v,double *r,double *g,double *b) { int i; double f, w, q, t; if (s == 0.0) s = 0.000001; if (h == -1.0) { *r = v; *g = v; *b = v; } else { if (h == 360.0) h = 0.0; h = h / 60.0; i = (int)h; f = h - i; w = v * (1.0 - s); q = v * (1.0 - (s * f)); t = v * (1.0 - (s * (1.0 - f))); switch (i) { case 0: *r = v; *g = t; *b = w; break; case 1: *r = q; *g = v; *b = w; break; case 2: *r = w; *g = v; *b = t; break; case 3: *r = w; *g = q; *b = v; break; case 4: *r = t; *g = w; *b = v; break; case 5: *r = v; *g = w; *b = q; break; } } } static void sethue (GtkMeta *meta, double hue, int ncol) { GdkColor c; int r, g, b; if(ncol) { r = 2*hue*(128+((meta->colors[ncol].red)>>8)/2); g = 2*hue*(128+((meta->colors[ncol].green)>>8)/2); b = 2*hue*(128+((meta->colors[ncol].blue)>>8)/2); } else { double cr,cg,cb; hsv_to_rgb((1.0-hue)*255.0,0.5,0.9,&cr,&cg,&cb); r = (int)(255.0*cr); g = (int)(255.0*cg); b = (int)(255.0*cb); } c.red = r>255 ? 255<<8:((gushort)(r))<<8; c.green = g>255 ? 255<<8:((gushort)(g))<<8; c.blue = b>255 ? 255<<8:((gushort)(b))<<8; /* c.red = ((gushort)(2*hue*(128+((meta->colors[ncol].red)>>8)/2)))<<8; c.green = ((gushort)(2*hue*(128+((meta->colors[ncol].green)>>8)/2)))<<8; c.blue = ((gushort)(2*hue*(128+((meta->colors[ncol].blue)>>8)/2)))<<8;*/ gdk_color_alloc(meta->cmap,&c); gdk_gc_set_foreground(meta->stipplegc,&c); } static void setline (GtkMeta *meta, int w, int st) { if (w==1) w=0; if (oldwidth==w && oldst==st) return; oldst=st; switch (st) { case line_dotted : case line_dashed : st=GDK_LINE_ON_OFF_DASH; break; default : st=GDK_LINE_SOLID; break; } gdk_gc_set_line_attributes(meta->gc,w,st,GDK_CAP_ROUND,GDK_JOIN_ROUND); oldwidth=w; } static void gtk_meta_begin (void *p) { GtkMeta *meta = (GtkMeta*)p; // GtkWidget *widget = GTK_WIDGET(meta); // gdk_flush(); meta->draw = meta->pixmap; meta->playing = 1; } static void gtk_meta_end (void *p) { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); meta->playing = 0; meta->draw = widget->window; } static void gtk_meta_clear (void *p) { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); if (meta->playing) gdk_draw_pixmap(widget->window,meta->gc,meta->pixmap,0,0,0,0,-1,-1); gdk_draw_rectangle(meta->draw,widget->style->white_gc,1,0,0,-1,-1); } static void gtk_meta_clip (void *data, double c, double r, double c1, double r1) { GtkMeta *meta = (GtkMeta*)data; GtkWidget *widget = GTK_WIDGET(meta); GdkRectangle rect; rect.x = col(c); rect.y = row(r); rect.width = col(c1)-rect.x+1; rect.height = row(r1)-rect.y+1; gdk_gc_set_clip_rectangle(meta->gc, &rect); } static void gtk_meta_line (void *p, double c, double r, double c1, double r1, int color, int style, int width) /***** gline draw a line. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); if (style==line_none) setcolor(meta,0); else setcolor(meta,color); setline(meta,width,style); gdk_draw_line(meta->draw,meta->gc,col(c),row(r),col(c1),row(r1)); setline(meta,1,line_solid); if (style==line_arrow) { double sin20 = 0.3420201433; double ah = 14.0; double dx = c1 - c; double dy = r1 - r; double norme = sqrt(dx*dx+dy*dy); double cs = dx/norme; double sn = dy/norme; GdkPoint p[3]; p[0].x = col(c+norme*cs-ah*(cs+sn*sin20)); p[0].y = row(r+norme*sn-ah*(sn-cs*sin20)); p[1].x = col(c1); p[1].y = row(r1); p[2].x = col(c+norme*cs-ah*(cs-sn*sin20)); p[2].y = row(r+norme*sn-ah*(sn+cs*sin20)); gdk_draw_polygon(meta->draw,meta->gc,1,p,3); } } static void gtk_meta_marker (void *p, double c, double r, int color, int type) /***** gmarker plot a single marker on screen. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); setcolor(meta,color); setline(meta,1,line_solid); switch(type) { case marker_dot : gdk_draw_point(meta->draw,meta->gc,col(c),row(r)); break; case marker_plus : gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r),col(c-10),row(r)); gdk_draw_line(meta->draw,meta->gc,col(c),row(r-10),col(c),row(r+10)); break; case marker_square : case marker_circle : gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r-10),col(c+10),row(r+10)); gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r+10),col(c-10),row(r+10)); gdk_draw_line(meta->draw,meta->gc,col(c-10),row(r+10),col(c-10),row(r-10)); gdk_draw_line(meta->draw,meta->gc,col(c-10),row(r-10),col(c+10),row(r-10)); break; case marker_diamond : gdk_draw_line(meta->draw,meta->gc,col(c),row(r-10),col(c+10),row(r)); gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r),col(c),row(r+10)); gdk_draw_line(meta->draw,meta->gc,col(c),row(r+10),col(c-10),row(r)); gdk_draw_line(meta->draw,meta->gc,col(c-10),row(r),col(c),row(r-10)); break; case marker_star : gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r),col(c-10),row(r)); gdk_draw_line(meta->draw,meta->gc,col(c),row(r-10),col(c),row(r+10)); default : gdk_draw_line(meta->draw,meta->gc,col(c+10),row(r-10),col(c-10),row(r+10)); gdk_draw_line(meta->draw,meta->gc,col(c-10),row(r-10),col(c+10),row(r+10)); } } static void gtk_meta_fill (void *p, double c[], int style, int n, int connect[]) /***** gfill fill an area given by n pairs of points (in c: x,y,x,y,...) with the style. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); int i,cc[64],ci[64],j,k,count; GdkPoint points[64]; for (i=0; i<2*n; i+=2) ci[i]=(int)col(c[i]); for (i=1; i<2*n; i+=2) ci[i]=(int)row(c[i]); for (i=0; idraw,meta->gc,1,points,n); i=0; setline(meta,0,line_solid); setcolor(meta,1); while (idraw,meta->gc,cc[2*k],cc[2*k+1],cc[2*k+2],cc[2*k+3]); while (idraw,meta->stipplegc,1,points,4); if (!connect) return; setline(meta,0,line_solid); setcolor(meta,1); gdk_draw_lines(meta->draw,meta->gc,points,5); } static void gtk_meta_bar (void *p, double c, double r, double c1, double r1, double hue, int color, int connect) { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); int x,y,w,h; x=col(c); y=row(r); w=col(c1)-x; h=row(r1)-y; if (w<=0) w=1; if (h<=0) h=1; sethue(meta,hue,color); gdk_draw_rectangle(meta->draw,meta->stipplegc,1,x,y,w,h); if (!connect) return; setline(meta,0,line_solid); setcolor(meta,1); gdk_draw_rectangle(meta->draw,meta->gc,0,x,y,w,h); } static void gtk_meta_bar1 (void *p, double c, double r, double c1, double r1, int color, int connect) { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); int x,y,w,h; GdkGC *g; x=col(c); y=row(r); w=col(c1)-x; h=row(r1)-y; if (w<=0) w=1; if (h<=0) h=1; switch (connect) { case bar_solid : setcolor(meta,color); g=meta->gc; break; case bar_frame : g=0; break; default : sethue(meta,0.5,color); g=meta->stipplegc; break; } if (g) { gdk_draw_rectangle(meta->draw,g,1,x,y,w,h); } if (connect==bar_solid) return; setline(meta,0,line_solid); setcolor(meta,1); gdk_draw_rectangle(meta->draw,meta->gc,0,x,y,w,h); } static void gtk_meta_text (void *p, double c, double r, char *text, int color, int alignment) /***** gtext output a graphic text on screen. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); int width; setcolor(meta,color); switch (alignment) { case 0: gdk_draw_string(meta->draw,meta->font,meta->gc,col(c),row(r)+meta->font->ascent,text); break; case 1: width=gdk_string_width(meta->font,text); gdk_draw_string(meta->draw,meta->font,meta->gc,col(c)-width/2,row(r)+meta->font->ascent,text); break; case 2: width=gdk_string_width(meta->font,text); gdk_draw_string(meta->draw,meta->font,meta->gc,col(c)-width,row(r)+meta->font->ascent,text); break; } } static void gdk_draw_rotated_string(GdkDrawable *drawable, GdkFont *font, GdkGC *gc, gint x, gint y, const gchar *text, gint angle, gint alignment); static void gtk_meta_vtext (void *p, double c, double r, char *text, int color, int alignment) /***** gtext output a graphic text on screen vertically. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); setcolor(meta,color); gdk_draw_rotated_string(meta->draw,meta->font,meta->gc,col(c),row(r),text,-90,alignment); } static void gtk_meta_vutext (void *p, double c, double r, char *text, int color, int alignment) /***** gtext output a graphic text on screen vertically. *****/ { GtkMeta *meta = (GtkMeta*)p; GtkWidget *widget = GTK_WIDGET(meta); setcolor(meta,color); gdk_draw_rotated_string(meta->draw,meta->font,meta->gc,col(c),row(r),text,90,alignment); } static void gtk_meta_scale (void *p, double s) /***** scale scale the screen according s = true width / true height. This is not necessary on a window based system. *****/ { } /**************************************************************************** * metagtk.c * * utility function for vertical text drawing * ****************************************************************************/ /* gdk_draw_rotated_string * * basic idea is from the GtkExtra plot widget. * draw a string with angle of : 90, -90, 180° * and alignment : 0 = left * 1 = center * 2 = right */ static void gdk_draw_rotated_string(GdkDrawable *drawable, GdkFont *font, GdkGC *gc, gint x, gint y, const gchar *text, gint angle, gint alignment) { GdkBitmap *text_bitmap; GdkBitmap *text_mask; GdkImage *image; GdkGC *bitmap_gc; GdkColormap *colormap; GdkColor white, black, mask_color; gint xp = 0, yp = 0; gint width, height; gint old_width, old_height; gint i, j; gint tx, ty; if(!text || strlen(text) == 0) return; colormap = gdk_colormap_get_system(); old_width = width = gdk_string_width(font,text); old_height = height = font->ascent + font->descent; if(angle == 90 || angle == -90 || angle == 270) { width = old_height; height = old_width; } /* initializing text bitmap - ajd */ text_bitmap = gdk_pixmap_new(drawable, old_width, old_height, 1); bitmap_gc = gdk_gc_new(text_bitmap); gdk_color_white (colormap, &white); gdk_gc_set_foreground(bitmap_gc, &white); gdk_draw_rectangle(text_bitmap, bitmap_gc, TRUE, 0, 0, -1, -1); gdk_color_black (colormap, &black); gdk_gc_set_foreground(bitmap_gc, &black); gdk_draw_string (text_bitmap, font, bitmap_gc, 0, font->ascent, text); /* initializing clip mask bitmap - ajd */ text_mask = gdk_pixmap_new(drawable, width, height, 1); mask_color = white; mask_color.pixel = 0; gdk_gc_set_foreground(bitmap_gc, &mask_color); gdk_draw_rectangle(text_mask, bitmap_gc, TRUE, 0, 0, -1, -1); mask_color = black; mask_color.pixel = 1; gdk_gc_set_foreground(bitmap_gc, &mask_color); /* performing text rotation and saving it onto clip mask bitmap - ajd */ image = gdk_image_get(text_bitmap, 0, 0, old_width, old_height); for(j = 0; j < old_height; j++) for(i = 0; i < old_width; i++) { if( black.pixel == gdk_image_get_pixel(image, i, j) ){ switch(angle){ case 0: xp = i; yp = j; break; case 90: xp = j; yp = old_width - i; break; case 180: case -180: xp = old_width - i; yp = old_height - j; break; case 270: case -90: xp = old_height - j; yp = i; break; } gdk_draw_point(text_mask, bitmap_gc, xp, yp); } } gdk_image_destroy(image); switch (angle) { case 90: switch (alignment) { case 1: ty=y-height/2; break; case 2: ty=y; break; case 0: default: ty = y-height; } tx = x; break; case 270: case -90: switch (alignment) { case 1: ty=y-height/2; break; case 2: ty=y-height; break; case 0: default: ty = y; } tx=x-width; break; case 180: case -180: switch (alignment) { case 1: tx = x - width/2; break; case 2: tx= x; break; case 0: default: tx = x-width; } ty = y-height; break; case 0: default: switch (alignment) { case 1: tx = x - width/2; break; case 2: tx= x-width; break; case 0: default: tx = x; } ty = y; } gdk_gc_set_clip_mask (gc, text_mask); gdk_gc_set_clip_origin (gc, tx, ty); gdk_draw_rectangle(drawable, gc, TRUE, tx, ty, width, height); gdk_gc_set_clip_mask(gc, NULL); gdk_bitmap_unref(text_mask); gdk_gc_unref(bitmap_gc); gdk_pixmap_unref(text_bitmap); } euler-1.61.0/src/metagtk.h0000644000175000001440000000227310253074166014160 0ustar ericusers/* * metagtk.h * * gtk graphic device : window for graphic output */ #ifndef __GTK_META_H__ #define __GTK_META_H__ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include "meta.h" #define GTK_META(obj) GTK_CHECK_CAST (obj, gtk_meta_get_type (), GtkMeta) #define GTK_META_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_meta_get_type (), GtkMetaClass) #define GTK_IS_META(obj) GTK_CHECK_TYPE (obj, gtk_meta_get_type ()) typedef struct _GtkMeta GtkMeta; typedef struct _GtkMetaClass GtkMetaClass; struct _GtkMeta { GtkWidget widget; gint width, height; metadevice dev; GdkFont *font; GdkColormap *cmap; GdkColor *colors; GdkGC *gc, *stipplegc; GdkCursor * cursor; GdkDrawable *draw; GdkPixmap *pixmap; int playing; double x, y; /* mouse x and y */ }; struct _GtkMetaClass { GtkWidgetClass parent_class; }; GType gtk_meta_get_type (void); GtkWidget* gtk_meta_new (gint width, gint height); metadevice * gtk_meta_get_device (GtkWidget *widget); void gtk_meta_update_lines (GtkWidget *widget); void gtk_meta_update_colors (GtkWidget *widget); #ifdef __cplusplus } #endif /* __cplusplus */ #endif euler-1.61.0/src/special.c0000644000175000001440000004660010330510650014126 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : special.h -- special math functions */ #include #include #include #include #include #include #include #include "output.h" #include "spread.h" static double polevl(double x, double coef[], int N ) { double ans; int i; double *p; p = coef; ans = *p++; i = N; do ans = ans * x + *p++; while( --i ); return( ans ); } static double p1evl(double x, double coef[], int N ) { double ans; double *p; int i; p = coef; ans = x + *p++; i = N-1; do ans = ans * x + *p++; while( --i ); return( ans ); } static double P[] = { 1.60119522476751861407E-4, 1.19135147006586384913E-3, 1.04213797561761569935E-2, 4.76367800457137231464E-2, 2.07448227648435975150E-1, 4.94214826801497100753E-1, 9.99999999999999996796E-1 }; static double Q[] = { -2.31581873324120129819E-5, 5.39605580493303397842E-4, -4.45641913851797240494E-3, 1.18139785222060435552E-2, 3.58236398605498653373E-2, -2.34591795718243348568E-1, 7.14304917030273074085E-2, 1.00000000000000000320E0 }; #define MAXGAM 171.624376956302725 static double LOGPI = 1.14472988584940017414; static double STIR[5] = { 7.87311395793093628397E-4, -2.29549961613378126380E-4, -2.68132617805781232825E-3, 3.47222221605458667310E-3, 8.33333333333482257126E-2, }; #define MAXSTIR 143.01608 static double SQTPI = 2.50662827463100050242E0; static int sgngam = 0; //extern int sgngam; extern double MAXLOG,MAXNUM; #define PI M_PI /* Gamma function computed by Stirling's formula. * The polynomial STIR is valid for 33 <= x <= 172. */ static double stirf (double x) { double y, w, v; w = 1.0/x; w = 1.0 + w * polevl( w, STIR, 4 ); y = exp(x); if( x > MAXSTIR ) { v = pow( x, 0.5 * x - 0.25 ); y = v * (v / y); } else { y = pow( x, x - 0.5 ) / y; } y = SQTPI * y * w; return( y ); } static double gamm (double x) { double p, q, z; int i; sgngam = 1; q = fabs(x); if( q > 33.0 ) { if( x < 0.0 ) { p = floor(q); if( p == q ) goto goverf; i = (int)p; if( (i & 1) == 0 ) sgngam = -1; z = q - p; if( z > 0.5 ) { p += 1.0; z = q - p; } z = q * sin( PI * z ); if( z == 0.0 ) { goverf: output("Overflow in gamma\n"); error=1; return 0; } z = fabs(z); z = PI/(z * stirf(q) ); } else { z = stirf(x); } return( sgngam * z ); } z = 1.0; while( x >= 3.0 ) { x -= 1.0; z *= x; } while( x < 0.0 ) { if( x > -1.E-9 ) goto small; z /= x; x += 1.0; } while( x < 2.0 ) { if( x < 1.e-9 ) goto small; z /= x; x += 1.0; } if( (x == 2.0) || (x == 3.0) ) return(z); x -= 2.0; p = polevl( x, P, 6 ); q = polevl( x, Q, 7 ); return( z * p / q ); small: if( x == 0.0 ) { output("Wrong argument for gamma.\n"); error=1; return 0; } else return( z/((1.0 + 0.5772156649015329 * x) * x) ); } static double A[] = { 8.11614167470508450300E-4, -5.95061904284301438324E-4, 7.93650340457716943945E-4, -2.77777777730099687205E-3, 8.33333333333331927722E-2 }; static double B[] = { -1.37825152569120859100E3, -3.88016315134637840924E4, -3.31612992738871184744E5, -1.16237097492762307383E6, -1.72173700820839662146E6, -8.53555664245765465627E5 }; static double C[] = { /* 1.00000000000000000000E0, */ -3.51815701436523470549E2, -1.70642106651881159223E4, -2.20528590553854454839E5, -1.13933444367982507207E6, -2.53252307177582951285E6, -2.01889141433532773231E6 }; /* log( sqrt( 2*pi ) ) */ static double LS2PI = 0.91893853320467274178; #define MAXLGM 2.556348e305 /* Logarithm of gamma function */ static double gammln (double x) { double p, q, w, z; int i; sgngam = 1; if( x < -34.0 ) { q = -x; w = gammln(q); /* note this modifies sgngam! */ p = floor(q); if( p == q ) goto loverf; i = (int)p; if( (i & 1) == 0 ) sgngam = -1; else sgngam = 1; z = q - p; if( z > 0.5 ) { p += 1.0; z = p - q; } z = q * sin( PI * z ); if( z == 0.0 ) goto loverf; /* z = log(PI) - log( z ) - w;*/ z = LOGPI - log( z ) - w; return( z ); } if( x < 13.0 ) { z = 1.0; while( x >= 3.0 ) { x -= 1.0; z *= x; } while( x < 2.0 ) { if( x == 0.0 ) goto loverf; z /= x; x += 1.0; } if( z < 0.0 ) { sgngam = -1; z = -z; } else sgngam = 1; if( x == 2.0 ) return( log(z) ); x -= 2.0; p = x * polevl( x, B, 5 ) / p1evl( x, C, 6); return( log(z) + p ); } if( x > MAXLGM ) { loverf: output("Overflow in loggamma\n"); error=1; return 0; } q = ( x - 0.5 ) * log(x) - x + LS2PI; if( x > 1.0e8 ) return( q ); p = 1.0/(x*x); if( x >= 1000.0 ) q += (( 7.9365079365079365079365e-4 * p - 2.7777777777777777777778e-3) *p + 0.0833333333333333333333) / x; else q += polevl( p, A, 4 ) / x; return( q ); } void mgammaln (header *hd) { spread1(gammln,0,hd); test_error("gammaln"); } void mgamma (header *hd) { spread1(gamm,0,hd); test_error("gamma"); } #define ITMAX 100 #define EPS 3.0e-7 #define FPMIN 1.0e-30 static double gser (double a, double x) { int n; double sum,del,ap; if (x <= 0.0) return 0; else { ap=a; del=sum=1.0/a; for (n=1;n<=ITMAX;n++) { ++ap; del *= x / ap; sum += del; if (fabs(del) < fabs(sum)*EPS) { return sum*exp(-x+a *log(x)); } } output("Iteration fails in gamma\n"); error=1; return 0; } } static double gcf (double a, double x) { int i; double an,b,c,d,del,h; b=x+1.0-a; c=1.0/FPMIN; d=1.0/b; h=d; for (i=1;i<=ITMAX;i++) { an = -i*(i-a); b += 2.0; d=an*d+b; if (fabs(d) < FPMIN) d=FPMIN; c=b+an/c; if (fabs(c) < FPMIN) c=FPMIN; d=1.0/d; del=d*c; h *= del; if (fabs(del-1.0) < EPS) break; } if (i > ITMAX) { output("a too large, ITMAX too small in gcf\n"); error=1; return 0; } return exp(-x+a*log(x))*h; } static void gammp (double *a, double *x, double *res) { if (*x < 0.0 || *a <= 0.0) { output("Invalid arguments in routine gammp\n"); error=1; return; } if (*x < (*a+1.0)) { *res=gser(*a,*x); return; } else { *res=gamm(*a)-gcf(*a,*x); return; } } void mgammai (header *hd) { spreadf2(gammp,0,0,hd); test_error("gamma"); } static double gauss (double z) { double res,a=0.5; double x=z*z/2; gammp(&a,&x,&res); res/=gamm(0.5)*2; if (z<0) return 0.5-res; else return 0.5+res; } void mgauss (header *hd) { spread1(gauss,0,hd); test_error("normaldis"); } #define IM1 2147483563 #define IM2 2147483399 #define AM (1.0/IM1) #define IMM1 (IM1-1) #define IA1 40014 #define IA2 40692 #define IQ1 53668 #define IQ2 52774 #define IR1 12211 #define IR2 3791 #define NTAB 32 #define NDIV (1+IMM1/NTAB) #define RNMX (1.0-EPS) static long randseed=1234512345; #define IDUM2 123456789 static long idum2=IDUM2; static long iy=0; static long iv[NTAB]; static double ran2 (void) { int j; long k; double temp; if (randseed <= 0) { if (-(randseed) < 1) randseed=1; else randseed = -(randseed); idum2=(randseed); for (j=NTAB+7;j>=0;j--) { k=(randseed)/IQ1; randseed=IA1*(randseed-k*IQ1)-k*IR1; if (randseed < 0) randseed += IM1; if (j < NTAB) iv[j] = randseed; } iy=iv[0]; } k=(randseed)/IQ1; randseed=IA1*(randseed-k*IQ1)-k*IR1; if (randseed < 0) randseed += IM1; k=idum2/IQ2; idum2=IA2*(idum2-k*IQ2)-k*IR2; if (idum2 < 0) idum2 += IM2; j=iy/NDIV; iy=iv[j]-idum2; iv[j] = randseed; if (iy < 1) iy += IMM1; if ((temp=AM*iy) > RNMX) return RNMX; else return temp; } void mrandom (header *hd) { header *st=hd,*result; double *m; int r,c; long k,n; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2 || *(m=matrixof(hd))<0 || *m>=INT_MAX || *(m+1)<0 || *(m+1)>INT_MAX) wrong_arg_in("random"); r=(int)*m; c=(int)*(m+1); result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=(long)c*r; for (k=0; ktype!=s_matrix || dimsof(hd)->r!=1) wrong_arg_in("shuffle"); n=dimsof(hd)->c; result=new_matrix(1,n,""); m=matrixof(hd); mr=matrixof(result); for (i=0; i0; i--) { j=(int)floor(ran2()*(i+1)); if (i!=j) { x=*(mr+i); *(mr+i)=*(mr+j); *(mr+j)=x; } } moveresult(st,result); } static double gasdev (void) { static int iset=0; static double gset; double fac,rsq,v1,v2; if (iset == 0) { do { v1=2.0*ran2()-1.0; v2=2.0*ran2()-1.0; rsq=v1*v1+v2*v2; } while (rsq >= 1.0 || rsq == 0.0); fac=sqrt(-2.0*log(rsq)/rsq); gset=v1*fac; iset=1; return v2*fac; } else { iset=0; return gset; } } void mnormalnew (header *hd) { header *st=hd,*result; double *m; int r,c; long k,n; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2 || *(m=matrixof(hd))<0 || *m>=INT_MAX || *(m+1)<0 || *(m+1)>INT_MAX) wrong_arg_in("normal"); r=(int)*m; c=(int)*(m+1); result=new_matrix(r,c,""); if (error) return; m=matrixof(result); n=(long)c*r; for (k=0; ktype!=s_real) wrong_arg_in("seed"); result=new_real(*realof(hd),""); randseed=-labs((long)(*realof(hd)*LONG_MAX)); moveresult(st,result); } /************ BETA Functions *******************/ #undef ITMAX #define ITMAX 100 #undef FPMIN #define FPMIN 1e-30 static double betacf (double a, double b, double x) { int m,m2; double aa,c,d,del,h,qab,qam,qap; qab=a+b; qap=a+1.0; qam=a-1.0; c=1.0; d=1.0-qab*x/qap; if (fabs(d) < FPMIN) d=FPMIN; d=1.0/d; h=d; for (m=1;m<=ITMAX;m++) { m2=2*m; aa=m*(b-m)*x/((qam+m2)*(a+m2)); d=1.0+aa*d; if (fabs(d) < FPMIN) d=FPMIN; c=1.0+aa/c; if (fabs(c) < FPMIN) c=FPMIN; d=1.0/d; h *= d*c; aa = -(a+m)*(qab+m)*x/((a+m2)*(qap+m2)); d=1.0+aa*d; if (fabs(d) < FPMIN) d=FPMIN; c=1.0+aa/c; if (fabs(c) < FPMIN) c=FPMIN; d=1.0/d; del=d*c; h *= del; if (fabs(del-1.0) < EPS) break; } if (m > ITMAX) { output( "a or b too big, or ITMAX too small in betai\n" ); error=1; } return h; } static double betai (double x, double a, double b) { double bt; if (x < 0.0 || x > 1.0) { output( "x not in [0,1] in betai\n" ); error=1; return 0; } if (x == 0.0 || x == 1.0) bt=0.0; else bt=exp(gammln(a+b)-gammln(a)-gammln(b)+a*log(x)+b*log(1.0-x)); if (x < (a+1.0)/(a+b+2.0)) return bt*betacf(a,b,x)/a; else return 1.0-bt*betacf(b,a,1.0-x)/b; } void mbetai (header *hd) { header *result,*st=hd,*hda,*hdb; double x; hda=nextof(hd); hdb=nextof(hda); hd=getvalue(hd); if (error) return; hda=getvalue(hda); if (error) return; hdb=getvalue(hdb); if (error) return; if (hd->type!=s_real || hda->type!=s_real || hdb->type!=s_real) wrong_arg_in("betai"); x=betai(*realof(hd),*realof(hda),*realof(hdb)); if (error) return; result=new_real(x,""); if (error) return; moveresult(st,result); } static double chebev (double a, double b, double c[], int m, double x) { double d=0.0,dd=0.0,sv,y,y2; int j; if ((x-a)*(x-b) > 0.0) { output("x not in range in routine bessel\n"); error = 1; return 0; } y2=2.0*(y=(2.0*x-a-b)/(b-a)); for (j=m-1;j>=1;j--) { sv=d; d=y2*d-dd+c[j]; dd=sv; } return y*d-dd+0.5*c[0]; } #define NUSE1 7 #define NUSE2 8 static void beschb(double x, double *gam1, double *gam2, double *gampl, double *gammi) { double xx; static double c1[] = { -1.142022680371172e0,6.516511267076e-3, 3.08709017308e-4,-3.470626964e-6,6.943764e-9, 3.6780e-11,-1.36e-13}; static double c2[] = { 1.843740587300906e0,-0.076852840844786e0, 1.271927136655e-3,-4.971736704e-6,-3.3126120e-8, 2.42310e-10,-1.70e-13,-1.0e-15}; xx=8.0*x*x-1.0; *gam1=chebev(-1.0,1.0,c1,NUSE1,xx); if (error) return; *gam2=chebev(-1.0,1.0,c2,NUSE2,xx); if (error) return; *gampl= *gam2-x*(*gam1); *gammi= *gam2+x*(*gam1); } #undef NUSE1 #undef NUSE2 static int imaxarg1,imaxarg2; #define IMAX(a,b) (imaxarg1=(a),imaxarg2=(b),(imaxarg1) > (imaxarg2) ?\ (imaxarg1) : (imaxarg2)) #define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) #undef EPS #undef FPMIN #define EPS 1.0e-16 #define FPMIN 1.0e-30 #define MAXIT 10000 #define XMIN 2.0 static void bessjy (double xnu, double x, double *rj, double *ry, double *rjp, double *ryp) { int i,isign,l,nl; double a,b,br,bi,c,cr,ci,d,del,del1,den,di,dlr,dli,dr,e,f,fact,fact2, fact3,ff,gam,gam1,gam2,gammi,gampl,h,p,pimu,pimu2,q,r,rjl, rjl1,rjmu,rjp1,rjpl,rjtemp,ry1,rymu,rymup,rytemp,sum,sum1, temp,w,x2,xi,xi2,xmu,xmu2; if (x <= 0.0 || xnu < 0.0) { output("bad arguments in bessel\n"); error = 1; return; } nl=(x < XMIN ? (int)(xnu+0.5) : IMAX(0,(int)(xnu-x+1.5))); xmu=xnu-nl; xmu2=xmu*xmu; xi=1.0/x; xi2=2.0*xi; w=xi2/M_PI; isign=1; h=xnu*xi; if (h < FPMIN) h=FPMIN; b=xi2*xnu; d=0.0; c=h; for (i=1;i<=MAXIT;i++) { b += xi2; d=b-d; if (fabs(d) < FPMIN) d=FPMIN; c=b-1.0/c; if (fabs(c) < FPMIN) c=FPMIN; d=1.0/d; del=c*d; h=del*h; if (d < 0.0) isign = -isign; if (fabs(del-1.0) < EPS) break; } if (i > MAXIT) { output("x too large in bessel\n"); error=1; return; } rjl=isign*FPMIN; rjpl=h*rjl; rjl1=rjl; rjp1=rjpl; fact=xnu*xi; for (l=nl;l>=1;l--) { rjtemp=fact*rjl+rjpl; fact -= xi; rjpl=fact*rjtemp-rjl; rjl=rjtemp; } if (rjl == 0.0) rjl=EPS; f=rjpl/rjl; if (x < XMIN) { x2=0.5*x; pimu=M_PI*xmu; fact = (fabs(pimu) < EPS ? 1.0 : pimu/sin(pimu)); d = -log(x2); e=xmu*d; fact2 = (fabs(e) < EPS ? 1.0 : sinh(e)/e); beschb(xmu,&gam1,&gam2,&gampl,&gammi); ff=2.0/M_PI*fact*(gam1*cosh(e)+gam2*fact2*d); e=exp(e); p=e/(gampl*M_PI); q=1.0/(e*M_PI*gammi); pimu2=0.5*pimu; fact3 = (fabs(pimu2) < EPS ? 1.0 : sin(pimu2)/pimu2); r=M_PI*pimu2*fact3*fact3; c=1.0; d = -x2*x2; sum=ff+r*q; sum1=p; for (i=1;i<=MAXIT;i++) { ff=(i*ff+p+q)/(i*i-xmu2); c *= (d/i); p /= (i-xmu); q /= (i+xmu); del=c*(ff+r*q); sum += del; del1=c*p-i*del; sum1 += del1; if (fabs(del) < (1.0+fabs(sum))*EPS) break; } if (i > MAXIT) { output("bessrl series failed to converge\n"); error=1; return; } rymu = -sum; ry1 = -sum1*xi2; rymup=xmu*xi*rymu-ry1; rjmu=w/(rymup-f*rymu); } else { a=0.25-xmu2; p = -0.5*xi; q=1.0; br=2.0*x; bi=2.0; fact=a*xi/(p*p+q*q); cr=br+q*fact; ci=bi+p*fact; den=br*br+bi*bi; dr=br/den; di = -bi/den; dlr=cr*dr-ci*di; dli=cr*di+ci*dr; temp=p*dlr-q*dli; q=p*dli+q*dlr; p=temp; for (i=2;i<=MAXIT;i++) { a += 2*(i-1); bi += 2.0; dr=a*dr+br; di=a*di+bi; if (fabs(dr)+fabs(di) < FPMIN) dr=FPMIN; fact=a/(cr*cr+ci*ci); cr=br+cr*fact; ci=bi-ci*fact; if (fabs(cr)+fabs(ci) < FPMIN) cr=FPMIN; den=dr*dr+di*di; dr /= den; di /= -den; dlr=cr*dr-ci*di; dli=cr*di+ci*dr; temp=p*dlr-q*dli; q=p*dli+q*dlr; p=temp; if (fabs(dlr-1.0)+fabs(dli) < EPS) break; } if (i > MAXIT) { output("cf2 failed in bessjy\n"); error=1; return; } gam=(p-f)/q; rjmu=sqrt(w/((p-f)*gam+q)); rjmu=SIGN(rjmu,rjl); rymu=rjmu*gam; rymup=rymu*(p+q/gam); ry1=xmu*xi*rymu-rymup; } fact=rjmu/rjl; *rj=rjl1*fact; *rjp=rjp1*fact; for (i=1;i<=nl;i++) { rytemp=(xmu+i)*xi2*ry1-rymu; rymu=ry1; ry1=rytemp; } *ry=rymu; *ryp=xnu*xi*rymu-ry1; } #undef EPS #undef FPMIN #undef MAXIT #undef XMIN #undef PI static void besselj (double *x, double *k, double *r) { double h1,h2; bessjy(*k,*x,r,&h1,&h2,&h2); } void mbesselj (header *hd) { spreadf2(besselj,0,0,hd); test_error("besselj"); } static void bessely (double *x, double *k, double *r) { double h1,h2; bessjy(*k,*x,&h1,r,&h2,&h2); } void mbessely (header *hd) { spreadf2(bessely,0,0,hd); test_error("bessely"); } void mbesselall (header *hdx) { header *st=hdx,*hd=nextof(hdx); double bj,by,bdj,bdy; hd=getvalue(hd); if (error) return; hdx=getvalue(hdx); if (error) return; if (hd->type!=s_real || hdx->type!=s_real) wrong_arg_in("besselall"); bessjy(*realof(hd),*realof(hdx),&bj,&by,&bdj,&bdy); if (error) return; newram=(char *)st; new_real(bj,""); if (error) return; new_real(by,""); if (error) return; new_real(bdj,""); if (error) return; new_real(bdy,""); } #define EPS 1.0e-16 #define FPMIN 1.0e-30 #define MAXIT 10000 #define XMIN 2.0 #define PI M_PI static void bessik(double xnu, double x, double *ri, double *rk, double *rip, double *rkp) { void beschb(double x, double *gam1, double *gam2, double *gampl, double *gammi); void nrerror(char error_text[]); int i,l,nl; double a,a1,b,c,d,del,del1,delh,dels,e,f,fact,fact2,ff,gam1,gam2, gammi,gampl,h,p,pimu,q,q1,q2,qnew,ril,ril1,rimu,rip1,ripl, ritemp,rk1,rkmu,rkmup,rktemp,s,sum,sum1,x2,xi,xi2,xmu,xmu2; if (x <= 0.0 || xnu < 0.0) { output("bad arguments in bessik\n"); error = 1; return; } nl=(int)(xnu+0.5); xmu=xnu-nl; xmu2=xmu*xmu; xi=1.0/x; xi2=2.0*xi; h=xnu*xi; if (h < FPMIN) h=FPMIN; b=xi2*xnu; d=0.0; c=h; for (i=1;i<=MAXIT;i++) { b += xi2; d=1.0/(b+d); c=b+1.0/c; del=c*d; h=del*h; if (fabs(del-1.0) < EPS) break; } if (i > MAXIT) { output("x too large in bessik\n"); error=1; return; } ril=FPMIN; ripl=h*ril; ril1=ril; rip1=ripl; fact=xnu*xi; for (l=nl;l>=1;l--) { ritemp=fact*ril+ripl; fact -= xi; ripl=fact*ritemp+ril; ril=ritemp; } f=ripl/ril; if (x < XMIN) { x2=0.5*x; pimu=PI*xmu; fact = (fabs(pimu) < EPS ? 1.0 : pimu/sin(pimu)); d = -log(x2); e=xmu*d; fact2 = (fabs(e) < EPS ? 1.0 : sinh(e)/e); beschb(xmu,&gam1,&gam2,&gampl,&gammi); ff=fact*(gam1*cosh(e)+gam2*fact2*d); sum=ff; e=exp(e); p=0.5*e/gampl; q=0.5/(e*gammi); c=1.0; d=x2*x2; sum1=p; for (i=1;i<=MAXIT;i++) { ff=(i*ff+p+q)/(i*i-xmu2); c *= (d/i); p /= (i-xmu); q /= (i+xmu); del=c*ff; sum += del; del1=c*(p-i*ff); sum1 += del1; if (fabs(del) < fabs(sum)*EPS) break; } if (i > MAXIT) { output("bessk series failed to converge\n"); error = 1; return; } rkmu=sum; rk1=sum1*xi2; } else { b=2.0*(1.0+x); d=1.0/b; h=delh=d; q1=0.0; q2=1.0; a1=0.25-xmu2; q=c=a1; a = -a1; s=1.0+q*delh; for (i=2;i<=MAXIT;i++) { a -= 2*(i-1); c = -a*c/i; qnew=(q1-b*q2)/a; q1=q2; q2=qnew; q += c*qnew; b += 2.0; d=1.0/(b+a*d); delh=(b*d-1.0)*delh; h += delh; dels=q*delh; s += dels; if (fabs(dels/s) < EPS) break; } if (i > MAXIT) { output("bessik: failure to converge in cf2\n"); error = 1; return; } h=a1*h; rkmu=sqrt(PI/(2.0*x))*exp(-x)/s; rk1=rkmu*(xmu+x+0.5-h)*xi; } rkmup=xmu*xi*rkmu-rk1; rimu=xi/(f*rkmu-rkmup); *ri=(rimu*ril1)/ril; *rip=(rimu*rip1)/ril; for (i=1;i<=nl;i++) { rktemp=(xmu+i)*xi2*rk1+rkmu; rkmu=rk1; rk1=rktemp; } *rk=rkmu; *rkp=xnu*xi*rkmu-rk1; } #undef EPS #undef FPMIN #undef MAXIT #undef XMIN #undef PI static void besseli (double *x, double *k, double *r) { double h1,h2; bessik(*k,*x,r,&h1,&h2,&h2); } void mbesseli (header *hd) { spreadf2(besseli,0,0,hd); test_error("besseli"); } static void besselk (double *x, double *k, double *r) { double h1,h2; bessik(*k,*x,&h1,r,&h2,&h2); } void mbesselk (header *hd) { spreadf2(besselk,0,0,hd); test_error("besselk"); } void mbesselmodall (header *hdx) { header *st=hdx,*hd=nextof(hdx); double bj,by,bdj,bdy; hd=getvalue(hd); if (error) return; hdx=getvalue(hdx); if (error) return; if (hd->type!=s_real || hdx->type!=s_real) wrong_arg_in("besselmodall"); bessik(*realof(hd),*realof(hdx),&bj,&by,&bdj,&bdy); if (error) return; newram=(char *)st; new_real(bj,""); if (error) return; new_real(by,""); if (error) return; new_real(bdj,""); if (error) return; new_real(bdy,""); } euler-1.61.0/src/special.h0000644000175000001440000000113007453004414014130 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : special.h -- special math functions */ #ifndef _SPECIAL_H_ #define _SPECIAL_H_ #include "stack.h" void mgammaln (header *hd); void mgamma (header *hd); void mgammai (header *hd); void mgauss (header *hd); void mrandom (header *hd); void mshuffle (header *hd); void mnormalnew (header *hd); void mseed (header *hd); void mbetai (header *hd); void mbesselj (header *hd); void mbessely (header *hd); void mbesselall (header *hdx); void mbesseli (header *hd); void mbesselk (header *hd); void mbesselmodall (header *hdx); #endif euler-1.61.0/src/input.c0000644000175000001440000000267610313644550013662 0ustar ericusers#include #include "sysdep.h" #include "output.h" #include "express.h" #include "mainloop.h" #include "edit.h" #include "udf.h" extern int trace,nojump,booktype,promptnotebook; void read_line (char *line) { int count=0,input,scan; char *p; start : p=line; while(1) { input=getc(infile); if (input==EOF) { fclose(infile); if (p>line) break; else *p++=1; infile=0; break; } if (input=='\r') { continue; } if (input=='\n') break; if (count>=1023) { output("Line too long!\n"); error=50; *line=0; return; } if ((char)input>=' ' || (signed char)input<0 || (char)input==TAB) { *p++=(char)input; count++; } } *p=0; if (booktype) { switch (*line) { case '$' : case '>' : output1("%s\n",line); if (promptnotebook && line[1]) wait_key(&scan); if (scan==escape) { fclose(infile); infile=0; *line=0; break; } *line=' '; break; case '%' : output1("%s\n",line); goto start; default : if (!infile) break; goto start; } } } void next_line (void) /**** next_line read a line from keyboard or file. ****/ { if (udfon) { while (*next) next++; next++; if (*next==1) udfon=0; else udfline=next; if (trace>0) trace_udfline(next); return; } else { if (trace==-1) trace=1; if (stringon) { error=2300; output("Input ended in string!\n"); return; } nojump=0; if (!infile) edit(input_line); else read_line(input_line); next=input_line; } } euler-1.61.0/src/input.h0000644000175000001440000000014107452605461013660 0ustar ericusers#ifndef _INPUT_H_ #define _INPUT_H_ void read_line (char *line); void next_line (void); #endif euler-1.61.0/src/graphics.c0000644000175000001440000012344107471437134014326 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : graphics.h -- portable advanced graphics */ #include #include #include #include #include #include "sysdep.h" #include "output.h" #include "funcs.h" #include "graphics.h" #include "meta.h" #include "express.h" #include "matrix.h" static double x_min=-1,x_max=1,y_min=-1,y_max=1,meshfactor=1; static int dgrid=0; static int upperclipc=0,upperclipr=0,lowerclipc=1023,lowerclipr=1023; static int upperc=10,upperr=30,lowerc=1010,lowerr=1010; static int connected[4]={1,1,1,1}; static int tconnected[3]={1,0,0}; static int keepsquare=0; static int linetype=line_solid,linecolor=1,lines=1,holding=0,framecolor=3, wirecolor=2,textcolor=2,markertype=marker_cross,scaling=1, newframe,twosides=1,linewidth=1,densitycolor=1,antialiasing=0, bartype=bar_framed,barcolor=3; static double distance=7,tele=1.5,a_left=0.5,a_up=0.5; static double scrcol (double x) { return (upperc+(x-x_min)/(x_max-x_min)*(lowerc-upperc)); } static double scrrow (double y) { return (lowerr-(y-y_min)/(y_max-y_min)*(lowerr-upperr)); } static void frame (void) { gline(upperc,upperr,upperc,lowerr,framecolor,line_solid,1); gline(upperc,lowerr,lowerc,lowerr,framecolor,line_solid,1); gline(lowerc,lowerr,lowerc,upperr,framecolor,line_solid,1); gline(lowerc,upperr,upperc,upperr,framecolor,line_solid,1); newframe=0; } static void plot_vector (double *x, double *y, int n, int m) /***** plot_vector plots n pairs (x,y). *****/ { double c0,r0,c1,r1; int i; if (n<=0) return; if (lines) { c0=scrcol(*x); r0=scrrow(*y); if (m) gmarker(c0,r0,linecolor,markertype); if (n==1) gline(c0,r0,c0,r0,linecolor,linetype,linewidth); for (i=1; i1 && ry!=rx)) { error=22; output("Plot columns must agree!\n"); return; } if (scaling) { minmax(x,(long)cx*rx,&x_min,&x_max,&ix,&iy); minmax(y,(long)cy*ry,&y_min,&y_max,&ix,&iy); } if (x_max>DBL_MAX) x_max=DBL_MAX; if (x_min<-DBL_MAX) x_min=-DBL_MAX; if (y_max>DBL_MAX) y_max=DBL_MAX; if (y_min<-DBL_MAX) y_min=-DBL_MAX; if (x_min>=x_max) x_min=x_max+1; if (y_min>=y_max) y_min=y_max+1; if (keepsquare) { if (x_max-x_min>y_max-y_min) { h=(y_max+y_min)/2; y_max=h+(x_max-x_min)/2; y_min=h-(x_max-x_min)/2; } else { h=(x_max+x_min)/2; x_max=h+(y_max-y_min)/2; x_min=h-(y_max-y_min)/2; } } graphic_mode(); if (!holding) { gclear(); } if (!holding || newframe) frame(); for (i=0; i=rx)?rx-1:i,0),mat(y,cy,i,0),cx,m); if (test_key()==escape) break; } gflush(); } void mplot (header *hd) { header *hd1=0,*st=hd,*result; double *x; hd=getvalue(hd); if (error) return; if (hd) /* parameters given */ { if (hd->type!=s_matrix && hd->type!=s_real) { error=21; output("Plot needs a real vector or matrix!\n"); return; } hd1=next_param(st); if (hd1) hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_matrix && hd1->type!=s_real) { error=11001; output("Wrong arguments for plot!\n"); return; } } do_plot(hd,hd1,0); result=new_matrix(1,4,""); if (error) return; x=matrixof(result); *x++=x_min; *x++=x_max; *x++=y_min; *x=y_max; moveresult(st,result); } void mplotarea (header *hd) { header *hd1=0,*st=hd,*result; double *x,*y,h; int cx,rx,cy,ry,ix,iy; hd=getvalue(hd); if (error) return; if (hd) /* parameters given */ { if (hd->type!=s_matrix && hd->type!=s_real) { error=21; output("Plot needs a real vector or matrix!\n"); return; } hd1=next_param(st); if (hd1) hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_matrix && hd1->type!=s_real) { error=11000; output("Wrong arguments for plotarea!\n"); return; } } getmatrix(hd,&rx,&cx,&x); getmatrix(hd1,&ry,&cy,&y); if (cx!=cy || (rx>1 && ry!=rx)) { error=22; output("Plot columns must agree!\n"); return; } if (scaling) { minmax(x,(long)cx*rx,&x_min,&x_max,&ix,&iy); minmax(y,(long)cy*ry,&y_min,&y_max,&ix,&iy); if (x_min==x_max) x_max=x_min+1; if (y_min==y_max) y_max=y_min+1; scaling=0; } if (keepsquare) { if (x_max-x_min>y_max-y_min) { h=(y_max+y_min)/2; y_max=h+(x_max-x_min)/2; y_min=h-(x_max-x_min)/2; } else { h=(x_max+x_min)/2; x_max=h+(y_max-y_min)/2; x_min=h-(y_max-y_min)/2; } } result=new_matrix(1,4,""); if (error) return; x=matrixof(result); *x++=x_min; *x++=x_max; *x++=y_min; *x++=y_max; moveresult(st,result); } void mpixel (header *hd) { double x,y; hd=new_matrix(1,2,""); if (error) return; getpixelsize(&x,&y); x*=(x_max-x_min)/(lowerc-upperc); y*=(y_max-y_min)/(lowerr-upperr); *(matrixof(hd))=x; *(matrixof(hd)+1)=y; } void mmark (header *hd) { header *hd1,*st=hd,*result; double *x; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix && hd->type!=s_real) { error=21; output("Mark needs a vector or matrix!\n"); return; } hd1=next_param(st); if (hd1) hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_matrix && hd->type!=s_real) { error=-1; output("Illegal arguments for mark!\n"); return; } do_plot(hd,hd1,1); result=new_matrix(1,4,""); if (error) return; x=matrixof(result); *x++=x_min; *x++=x_max; *x++=y_min; *x=y_max; moveresult(st,result); gflush(); } void ghold (void) /**** hold toggles holding of the current plot. ****/ { static int oldhold=-1; scan_space(); if (!strncmp(next,"off",3)) { oldhold=-1; holding=0; next+=3; } else if (!strncmp(next,"on",2)) { oldhold=-1; holding=1; next+=2; } else { if (oldhold!=-1) { holding=oldhold; oldhold=-1; } else { oldhold=holding; holding=1; } } scaling=!holding; } void show_graphics (void) { int scan; graphic_mode(); wait_key(&scan); text_mode(); } void mmesh (header *hd) { double *screen_col,*screen_row; long col,size; double *m,ymin,ymax,xxscale,xyscale,yxscale,yyscale; int imin,imax,c,r,i,j; double cc[8]; header *st=hd; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->c<2 || dimsof(hd)->r<2) { output("Illegal parameter for mesh!\n"); error=80; return; } getmatrix(hd,&r,&c,&m); col=r; minmax(m,(long)c*r,&ymin,&ymax,&imin,&imax); if (ymin==ymax) ymax=ymin+1; size=(long)c*r*sizeof(double); screen_col=(double *)newram; screen_row=(double *)(newram+size); if (!freeram(2*size)) { output("Out of memory in mesh!\n"); error=85; return; } xxscale=0.6*(lowerc-upperc)/c; xyscale=0.4*(lowerc-upperc)/r; yxscale=0.2*(lowerr-upperr)/r; yyscale=0.8*meshfactor*(lowerr-upperr)/(ymax-ymin); for (i=0; i=0; j--) { cc[4]=( screen_col[col*i+j] + screen_col[col*(i+1)+j] + screen_col[col*(i+1)+j+1] + screen_col[col*i+j+1])/4; cc[5]=( screen_row[col*i+j] + screen_row[col*(i+1)+j] + screen_row[col*(i+1)+j+1] + screen_row[col*i+j+1])/4; cc[0]=screen_col[col*(i+1)+j+1]; cc[1]=screen_row[col*(i+1)+j+1]; cc[2]=screen_col[col*i+j+1]; cc[3]=screen_row[col*i+1+j]; if (twosides && ((cc[2]-cc[0])*(cc[5]-cc[1])- (cc[3]-cc[1])*(cc[4]-cc[0]))>0 ) gfill(cc,fill_filled,3,tconnected); else gfill(cc,fill_blank,3,tconnected); cc[0]=screen_col[col*i+j+1]; cc[1]=screen_row[col*i+j+1]; cc[2]=screen_col[col*i+j]; cc[3]=screen_row[col*i+j]; if (twosides && ((cc[2]-cc[0])*(cc[5]-cc[1])- (cc[3]-cc[1])*(cc[4]-cc[0]))>0 ) gfill(cc,fill_filled,3,tconnected); else gfill(cc,fill_blank,3,tconnected); cc[0]=screen_col[col*(i+1)+j]; cc[1]=screen_row[col*(i+1)+j]; cc[2]=screen_col[col*(i+1)+j+1]; cc[3]=screen_row[col*(i+1)+j+1]; if (twosides && ((cc[2]-cc[0])*(cc[5]-cc[1])- (cc[3]-cc[1])*(cc[4]-cc[0]))>0 ) gfill(cc,fill_filled,3,tconnected); else gfill(cc,fill_blank,3,tconnected); cc[0]=screen_col[col*i+j]; cc[1]=screen_row[col*i+j]; cc[2]=screen_col[col*(i+1)+j]; cc[3]=screen_row[col*(i+1)+j]; if (twosides && ((cc[2]-cc[0])*(cc[5]-cc[1])- (cc[3]-cc[1])*(cc[4]-cc[0]))>0 ) gfill(cc,fill_filled,3,tconnected); else gfill(cc,fill_blank,3,tconnected); if (test_key()==escape) { output("User interrupted!\n"); error=1; gflush(); return; } } hd=new_matrix(1,2,""); *matrixof(hd)=ymin; *(matrixof(hd)+1)=ymax; moveresult(st,hd); gflush(); } void mmeshflat (header *hd) { double *m,ymin,ymax,xxscale,xyscale,yxscale,yyscale; int imin,imax,c,r,i,j,c1; double cc[8]; double sc,sr; header *st=hd; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->c<1 || dimsof(hd)->r<1) { output("Illegal parameter for meshbar!\n"); error=80; return; } getmatrix(hd,&r,&c,&m); minmax(m,(long)c*r,&ymin,&ymax,&imin,&imax); if (ymin==ymax) ymax=ymin+1; if (c>r) c1=c; else c1=r; xxscale=0.6*(lowerc-upperc)/c1; xyscale=0.4*(lowerc-upperc)/c1; yxscale=0.2*(lowerr-upperr)/c1; yyscale=0.8*meshfactor*(lowerr-upperr)/(ymax-ymin); graphic_mode(); if (!holding) gclear(); for (i=0; i=0; j--) { sc=upperc+(xxscale*i+xyscale*j); sr=lowerr-(yxscale*j+yyscale*(*mat(m,c,j,i)-ymin)); cc[0]=sc; cc[1]=sr; cc[2]=sc+xxscale; cc[3]=sr; cc[4]=sc+xxscale+xyscale; cc[5]=sr-yxscale; cc[6]=sc+xyscale; cc[7]=sr-yxscale; gfill(cc,fill_filled,4,connected); cc[0]=sc; cc[1]=sr; cc[2]=sc+xxscale; cc[3]=sr; cc[4]=sc+xxscale; cc[5]=lowerr-yxscale*j; cc[6]=sc; cc[7]=lowerr-yxscale*j; gfill(cc,fill_filled,4,connected); cc[0]=sc+xxscale; cc[1]=sr; cc[2]=sc+xxscale+xyscale; cc[3]=sr-yxscale; cc[4]=sc+xxscale+xyscale; cc[5]=lowerr-yxscale*(j+1); cc[6]=sc+xxscale; cc[7]=lowerr-yxscale*j; gfill(cc,fill_filled,4,connected); if (test_key()==escape) { output("User interrupted!\n"); error=1; gflush(); return; } } hd=new_matrix(1,2,""); *matrixof(hd)=ymin; *(matrixof(hd)+1)=ymax; moveresult(st,hd); gflush(); } static double cos_up,sin_up,cos_left,sin_left; static void turn (double *x, double *y, double cs, double sn) { double h; h=*x*cs-*y*sn; *y=*x*sn+*y*cs; *x=h; } static double project (double x, double y, double z, double *c, double *r) /***** project 3D-projection onto the screen. *****/ { turn(&y,&x,cos_left,sin_left); turn(&y,&z,cos_up,sin_up); if (y<-0.9*distance) y=-0.9*distance; x/=(y+distance); z/=(y+distance); *c=((upperc+lowerc)/2+(lowerc-upperc)/2*x*tele); // *r=1024-((upperr+lowerr)/2+(lowerr-upperr)/2*z*tele); //buggy *r=((upperr+lowerr)/2-(lowerr-upperr)/2*z*tele); return y; } void mproject (header *hd) { long col; double *mx,*my,*mz,*screen_col,*screen_row; int c,r,i,j; header *st=hd,*hd1,*hd2,*result1,*result2; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix) { output("Illegal parameter for project!\n"); error=82; return; } getmatrix(hd,&r,&c,&mx); col=c; hd1=next_param(st); hd2=next_param(hd1); hd1=getvalue(hd1); hd2=getvalue(hd2); if (error) return; if (hd1->type!=s_matrix || hd2->type!=s_matrix || dimsof(hd1)->r!=r || dimsof(hd2)->r!=r || dimsof(hd1)->c!=c || dimsof(hd2)->c!=c) { output("Matrix dimensions for project must agree!\n"); error=83; return; } my=matrixof(hd1); mz=matrixof(hd2); result1=new_matrix(r,c,""); if (error) return; result2=new_matrix(r,c,""); if (error) return; screen_col=matrixof(result1); screen_row=matrixof(result2); cos_left=cos(a_left); sin_left=sin(a_left); cos_up=cos(a_up); sin_up=sin(a_up); for (i=0; iz > (*r2)->z) return -1; else if ((*r1)->z < (*r2)->z) return 1; else return 0; } void mwire (header *hd) { double *screen_col,*screen_row; long col,size; double *mx,*my,*mz; int c,r,i,j,cx,cy,cz,rx,ry,rz; header *st=hd,*hd1,*hd2; hd1=next_param(st); hd2=next_param(hd1); hd=getvalue(hd); hd1=getvalue(hd1); hd2=getvalue(hd2); if (error) return; if (!isreal(hd) || !isreal(hd1) || !isreal(hd2)) wrong_arg_in("wire"); getmatrix(hd,&rx,&cx,&mx); getmatrix(hd1,&ry,&cy,&my); getmatrix(hd2,&rz,&cz,&mz); r=rx; if (ry>r) r=ry; if (rz>r) r=rz; c=cx; if (cy>c) c=cy; if (cz>c) r=rz; col=c; if (r<1 || c<1) wrong_arg_in("wire"); if ((rx>1 && rx!=r) || (ry>1 && ry!=r) || (rz>1 && rz!=r) || (cx>1 && cx!=c) || (cy>1 && cy!=c) || (cz>1 && cz!=c)) wrong_arg_in("wire"); size=(long)c*r*sizeof(double); screen_col=(double *)newram; screen_row=(double *)(newram+size); if (!freeram(2*size)) { output("Out of memory in wire!\n"); error=85; return; } cos_left=cos(a_left); sin_left=sin(a_left); cos_up=cos(a_up); sin_up=sin(a_up); for (i=0; i1) for (i=0; i2) for (j=0; jz > (*r2)->z) return -1; else if ((*r1)->z < (*r2)->z) return 1; else return 0; } void msolid (header *hd) { double *screen_col,*screen_row,*screen_z; unsigned long col,size,n,ind; double *mx,*my,*mz,z; int c,r,i,j,rx,cx,ry,cy,rz,cz; double cc[8]; int connect1[]={1,0,1}; header *st=hd,*hd1,*hd2; triangletyp *trp; triangletyp **trpp,**trps; hd=getvalue(hd); hd1=next_param(st); hd2=next_param(hd1); hd1=getvalue(hd1); hd2=getvalue(hd2); if (error) return; if (!isreal(hd) || !isreal(hd1) || !isreal(hd2)) wrong_arg_in("solid"); getmatrix(hd,&rx,&cx,&mx); getmatrix(hd1,&ry,&cy,&my); getmatrix(hd2,&rz,&cz,&mz); r=rx; if (ry>r) r=ry; if (rz>r) r=rz; c=cx; if (cy>c) c=cy; if (cz>c) r=rz; col=c; if (r<2 || c<2) wrong_arg_in("solid"); if ((rx>1 && rx!=r) || (ry>1 && ry!=r) || (rz>1 && rz!=r) || (cx>1 && cx!=c) || (cy>1 && cy!=c) || (cz>1 && cz!=c)) wrong_arg_in("solid"); size=(long)c*r*sizeof(double); n=(long)(r-1)*(c-1); screen_col=(double *)newram; screen_row=(double *)(newram+size); screen_z=(double *)(newram+2*size); trp=(triangletyp *)(newram+3*size); trpp=trps=(triangletyp **)(newram+3*size+2*n*sizeof(triangletyp)); if (!freeram(3*size+(sizeof(triangletyp)+sizeof(triangletyp *))*2*n)) { output("Out of memory in solid!\n"); error=85; return; } cos_left=cos(a_left); sin_left=sin(a_left); cos_up=cos(a_up); sin_up=sin(a_up); for (i=0; ii=i; trp->j=j; trp->type=0; trp->z=z; *trpp++=trp; trp++; z=(screen_z[col*(i+1)+(j+1)]+screen_z[col*(i+1)+j] +screen_z[col*i+j+1])/3; trp->i=i; trp->j=j; trp->type=1; trp->z=z; *trpp++=trp; trp++; if (test_key()==escape) { output("User interrupted"); error=1; return; } } qsort(trps,2*n,sizeof(triangletyp *), (int (*)(const void *, const void *))comparetriangle); graphic_mode(); if (!holding) gclear(); trpp=trps; for (ind=0; ind<2*n; ind++) { i=(*trpp)->i; j=(*trpp)->j; if ((*trpp)->type==0) { cc[0]=screen_col[col*i+j]; cc[1]=screen_row[col*i+j]; cc[2]=screen_col[col*(i+1)+j]; cc[3]=screen_row[col*(i+1)+j]; cc[4]=screen_col[col*i+(j+1)]; cc[5]=screen_row[col*i+(j+1)]; if (!twosides || ((cc[2]-cc[0])*(cc[5]-cc[1])-(cc[3]-cc[1])*(cc[4]-cc[0]))>0) gfill(cc,fill_blank,3,connect1); else gfill(cc,fill_filled,3,connect1); } else { cc[0]=screen_col[col*(i+1)+(j+1)]; cc[1]=screen_row[col*(i+1)+(j+1)]; cc[2]=screen_col[col*(i+1)+j]; cc[3]=screen_row[col*(i+1)+j]; cc[4]=screen_col[col*i+(j+1)]; cc[5]=screen_row[col*i+(j+1)]; if (!twosides || ((cc[2]-cc[0])*(cc[5]-cc[1])-(cc[3]-cc[1])*(cc[4]-cc[0]))<0) gfill(cc,fill_blank,3,connect1); else gfill(cc,fill_filled,3,connect1); } if (test_key()==escape) { output("User interrupted!\n"); error=1; gflush(); return; } trpp++; } hd=new_real(0.0,""); moveresult(st,hd); gflush(); } void msolidh (header *hd) { double *screen_col,*screen_row; unsigned long col,size,n,ind; double *mx,*my,*mz,*mh,z; int c,r,i,j,rx,cx,ry,cy,rz,cz,rh,ch; double cc[8]; header *st=hd,*hd1,*hd2,*hd3; recttyp *rectp; recttyp **rectpp,**rectps; hd=getvalue(hd); hd1=next_param(st); hd2=next_param(hd1); hd3=next_param(hd2); hd1=getvalue(hd1); hd2=getvalue(hd2); hd3=getvalue(hd3); if (!isreal(hd) || !isreal(hd1) || !isreal(hd2) || !isreal(hd3)) wrong_arg_in("solidhue"); getmatrix(hd,&rx,&cx,&mx); getmatrix(hd1,&ry,&cy,&my); getmatrix(hd2,&rz,&cz,&mz); getmatrix(hd3,&rh,&ch,&mh); r=rx; if (ry>r) r=ry; if (rz>r) r=rz; if (rh>r) r=rh; c=cx; if (cy>c) c=cy; if (cz>c) r=rz; if (ch>c) ch=c; col=c; if (r<2 || c<2) wrong_arg_in("solidhue"); if ((rx>1 && rx!=r) || (ry>1 && ry!=r) || (rz>1 && rz!=r) || (cx>1 && cx!=c) || (cy>1 && cy!=c) || (cz>1 && cz!=c) || (rh>1 && rh!=r) || (ch>1 && ch!=c)) wrong_arg_in("solidhue"); size=(long)c*r*sizeof(double); n=(long)(r-1)*(c-1); screen_col=(double *)newram; screen_row=(double *)(newram+size); rectp=(recttyp *)(newram+2*size); rectpp=rectps=(recttyp **)(newram+2*size+n*sizeof(recttyp)); if (!freeram(2*size+(sizeof(recttyp)+sizeof(recttyp *))*n)) { output("Out of memory in solidhue!\n"); error=85; return; } cos_left=cos(a_left); sin_left=sin(a_left); cos_up=cos(a_up); sin_up=sin(a_up); for (i=0; ii=i; rectp->j=j; rectp->z=z; *rectpp++=rectp; rectp++; } if (test_key()==escape) { output("User interrupted!\n"); error=1; return; } } qsort(rectps,n,sizeof(recttyp *), (int (*)(const void *,const void *))compare); graphic_mode(); if (!holding) gclear(); rectpp=rectps; for (ind=0; indi; j=(*rectpp)->j; cc[0]=screen_col[col*i+j]; cc[1]=screen_row[col*i+j]; cc[2]=screen_col[col*(i+1)+j]; cc[3]=screen_row[col*(i+1)+j]; cc[4]=screen_col[col*(i+1)+j+1]; cc[5]=screen_row[col*(i+1)+(j+1)]; cc[6]=screen_col[col*i+j+1]; cc[7]=screen_row[col*i+j+1]; gfillh(cc, *mat(mh,ch,(rh==1)?0:i,(ch==1)?0:j), densitycolor,dgrid); if (test_key()==escape) { output("User interrupted!\n"); error=1; gflush(); return; } rectpp++; } hd=new_real(0.0,""); moveresult(st,hd); gflush(); } void msolid1 (header *hd) { double *screen_col,*screen_row; unsigned long col,size,n,ind; double *mx,*my,*mz,z,*mult; int c,r,i,j,multc,multr,multi,multn,norectp=0; double cc[8]; header *st=hd,*hd1,*hd2,*hdmult; recttyp *rectp; recttyp **rectpp,**rectps; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r<2 || dimsof(hd)->c<2) { output("Illegal parameter for solid!\n"); error=82; return; } getmatrix(hd,&r,&c,&mx); col=c; hd1=next_param(st); hd2=next_param(hd1); hdmult=next_param(hd2); hd1=getvalue(hd1); hd2=getvalue(hd2); hdmult=getvalue(hdmult); if (error) return; if (hd1->type!=s_matrix || hd2->type!=s_matrix || dimsof(hd1)->r!=r || dimsof(hd2)->r!=r || dimsof(hd1)->c!=c || dimsof(hd2)->c!=c) { output("Matrix dimensions for solid must agree!\n"); error=83; return; } if (hdmult->type!=s_real && (hdmult->type!=s_matrix || dimsof(hdmult)->r!=1 || dimsof(hdmult)->c<1) ) { output("4th parameter for solid must be a real vector!\n"); error=83; return; } my=matrixof(hd1); mz=matrixof(hd2); getmatrix(hdmult,&multr,&multc,&mult); multn=0; multi=(int)(*mult)-1; size=(long)c*r*sizeof(double); n=(long)(r-1)*(c-1); screen_col=(double *)newram; screen_row=(double *)(newram+size); rectp=(recttyp *)(newram+2*size); rectpp=rectps=(recttyp **)(newram+2*size+n*sizeof(recttyp)); if (!freeram(2*size+(sizeof(recttyp)+sizeof(recttyp *))*n)) { output("Out of memory in solid!\n"); error=85; return; } cos_left=cos(a_left); sin_left=sin(a_left); cos_up=cos(a_up); sin_up=sin(a_up); for (i=0; i=multc) multi=-1; else multi=(int)(*mult)-1; n-=c-1; norectp=1; } for (j=0; ji=i; rectp->j=j; rectp->z=z; *rectpp++=rectp; rectp++; } if (test_key()==escape) { output("User interrupted!\n"); error=1; return; } } norectp=0; } qsort(rectps,n,sizeof(recttyp *), (int (*)(const void *,const void *))compare); graphic_mode(); if (!holding) gclear(); rectpp=rectps; for (ind=0; indi; j=(*rectpp)->j; cc[0]=screen_col[col*i+j]; cc[1]=screen_row[col*i+j]; cc[2]=screen_col[col*(i+1)+j]; cc[3]=screen_row[col*(i+1)+j]; cc[4]=screen_col[col*(i+1)+j+1]; cc[5]=screen_row[col*(i+1)+(j+1)]; cc[6]=screen_col[col*i+j+1]; cc[7]=screen_row[col*i+j+1]; if (!twosides || ((cc[2]-cc[0])*(cc[5]-cc[1])-(cc[3]-cc[1])*(cc[4]-cc[0]))>0) gfill(cc,fill_blank,4,connected); else gfill(cc,fill_filled,4,connected); if (test_key()==escape) { output("User interrupted!\n"); error=1; gflush(); return; } rectpp++; } hd=new_real(0.0,""); moveresult(st,hd); gflush(); } static void hcontour (double val, int n, int m, double x[], double r[], double c[]) /**** hcontour helping function to contour. ****/ { double f1,f2; if ((val>=x[n] && val<=x[n+1]) || (val>=x[n+1] && val<=x[n])) if ((val>=x[m] && val<=x[m+1]) || (val>=x[m+1] && val<=x[m])) { if (x[n+1]==x[n]) f1=0; else f1=(val-x[n])/(x[n+1]-x[n]); if (x[m+1]==x[m]) f2=0; else f2=(val-x[m])/(x[m+1]-x[m]); gline((c[n]+f1*(c[n+1]-c[n])), (r[n]+f1*(r[n+1]-r[n])), (c[m]+f2*(c[m+1]-c[m])), (r[m]+f2*(r[m+1]-r[m])), linecolor,line_solid,linewidth); } } static void contour (double x[], int i, int j, int rows, int cols, double v[], int nv) /***** contour x1 is lower left edge, x2 upper left, x3 upper right, x4 lower right value at a square. does contour plot of the nv values in v. r and c is needed to compute the position of the square. *****/ { int k,n,m; double sr[5],sc[5]; double val; sr[4]=sr[0]=sr[3]=(lowerr-((long)i*(lowerr-upperr))/cols); sr[1]=sr[2]=(lowerr-((long)(i+1)*(lowerr-upperr))/cols); sc[4]=sc[0]=sc[1]=(upperc+((long)j*(lowerc-upperc))/rows); sc[2]=sc[3]=(upperc+((long)(j+1)*(lowerc-upperc))/rows); for (k=0; ktype!=s_matrix || dimsof(hd)->c<2 || dimsof(hd)->r<2) { output("Contour needs a real matrix!\n"); error=81; return; } hd1=next_param(st); if (error) return; hd1=getvalue(hd1); if (error) return; if (hd1->type!=s_real) if (hd1->type!=s_matrix || dimsof(hd1)->r!=1) { output("Second parameter of contour must be a vector!\n"); error=82; return; } getmatrix(hd,&r,&c,&m); getmatrix(hd1,&dummy,&cv,&mv); graphic_mode(); if (!holding) gclear(); frame(); for (i=0; itype!=s_matrix || dimsof(hd)->c<2 || dimsof(hd)->r<2) { output("Density needs a real matrix!\n"); error=81; return; } getmatrix(hd,&r,&c,&m); graphic_mode(); if (!holding) gclear(); if (antialiasing) { deltax=(double)(lowerc-upperc)/(c-1); deltay=(double)(lowerr-upperr)/(r-1); for (i=0; itype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=4) { output("Arguments for view are [dist tele alpha beta]!\n"); error=90; return; } m=matrixof(hd); distance=*m++; tele=*m++; a_left=*m++; a_up=*m; } void mwindow (header *hd) { double *m; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=4) { output("Arguments for window are [c0 r0 c1 r1]!\n"); error=90; return; } m=matrixof(hd); upperc=(int)(*m++); upperr=(int)(*m++); lowerc=(int)(*m++); lowerr=(int)(*m); if (lowerrtype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=4) { output("Arguments for clip are [c0 r0 c1 r1]!\n"); error=90; return; } oldclip = new_matrix(1,4,""); if (error) return; m=matrixof(oldclip); *m++=upperclipc; *m++=upperclipr; *m++=lowerclipc; *m=lowerclipr; m=matrixof(hd); upperclipc=(int)(*m++); upperclipr=(int)(*m++); lowerclipc=(int)(*m++); lowerclipr=(int)(*m); if (upperclipc<0) upperclipc = 0; if (upperclipr<0) upperclipr = 0; if (lowerclipc>1023) lowerclipc = 1023; if (lowerclipc>1023) lowerclipc = 1023; if (lowercliprtype!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) { output("Arguments for pswindow are [c r]!\n"); error=90; return; } m=matrixof(hd); c=*m++; r=*m; if (c<1) c=1; if (r<1) r=1; pswindow(c,r); } void mcolor (header *hd) { header *st=hd; int old=linecolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for color must be real!\n"); error=90; return; } linecolor=(int)*realof(hd); moveresult(st,new_real(old,"")); } void mfcolor (header *hd) { header *st=hd; int old=framecolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for framecolor must be real!\n"); error=90; return; } framecolor=(int)*realof(hd); if (framecolor<0 || framecolor>=16) framecolor=1; moveresult(st,new_real(old,"")); } int fillcolor1=11, fillcolor2=3; void mfillcolor (header *hd) { header *st=hd,*res; int o1=fillcolor1,o2=fillcolor2; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=2) { output("Argument for fillcolor must be a 1x2 vector!\n"); error=90; return; } fillcolor1=(int)*matrixof(hd); fillcolor2=(int)*(matrixof(hd)+1); if (fillcolor1<0 || fillcolor1>15) fillcolor1=0; if (fillcolor2<0 || fillcolor2>15) fillcolor2=0; res=new_matrix(1,2,""); if (error) return; *matrixof(res)=o1; *(matrixof(res)+1)=o2; moveresult(st,res); } int markerfactor=100; void mmarkersize (header *hd) { header *st=hd; int old,markersize; if (markerfactor>0) old=1024/markerfactor; else old=0; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for markersize must be integer!\n"); error=90; return; } markersize=(int)*realof(hd); moveresult(st,new_real(old,"")); if (markersize>0) markerfactor=1024/markersize; else markerfactor=0; } void mwcolor (header *hd) { header *st=hd; int old=wirecolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for wirecolor must be integer!\n"); error=90; return; } wirecolor=(int)*realof(hd); if (wirecolor<0 || wirecolor>=16) wirecolor=1; moveresult(st,new_real(old,"")); } void mtcolor (header *hd) { header *st=hd; int old=textcolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for textcolor must be integer!\n"); error=90; return; } textcolor=(int)*realof(hd); if (textcolor<0 || textcolor>=16) textcolor=1; moveresult(st,new_real(old,"")); } void mdcolor (header *hd) { header *st=hd; int old=densitycolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for densitycolor must be integer!\n"); error=90; return; } densitycolor=(int)*realof(hd); if (densitycolor<0 || densitycolor>=16) densitycolor=1; moveresult(st,new_real(old,"")); } void mdgrid (header *hd) { header *st=hd; int old=dgrid; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for densitygrid must be integer!\n"); error=90; return; } dgrid=(int)*realof(hd); moveresult(st,new_real(old,"")); } void mstyle (header *hd) { hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Argument style must be a string!\n"); error=90; return; } if (!strcmp(stringof(hd),"i")) linetype=line_none; else if (!strcmp(stringof(hd),"-")) linetype=line_solid; else if (!strcmp(stringof(hd),".")) linetype=line_dotted; else if (!strcmp(stringof(hd),"--")) linetype=line_dashed; else if (!strcmp(stringof(hd),"->")) linetype=line_arrow; else if (!strcmp(stringof(hd),"mx")) markertype=marker_cross; else if (!strcmp(stringof(hd),"mo")) markertype=marker_circle; else if (!strcmp(stringof(hd),"m<>")) markertype=marker_diamond; else if (!strcmp(stringof(hd),"m.")) markertype=marker_dot; else if (!strcmp(stringof(hd),"m+")) markertype=marker_plus; else if (!strcmp(stringof(hd),"m[]")) markertype=marker_square; else if (!strcmp(stringof(hd),"m*")) markertype=marker_star; else if (!strcmp(stringof(hd),"b/")) bartype=bar_diagonal1; else if (!strcmp(stringof(hd),"b\\")) bartype=bar_diagonal2; else if (!strcmp(stringof(hd),"bO")) bartype=bar_frame; else if (!strcmp(stringof(hd),"b#")) bartype=bar_solid; else if (!strcmp(stringof(hd),"bO#")) bartype=bar_framed; else if (!strcmp(stringof(hd),"b#O")) bartype=bar_framed; else if (!strcmp(stringof(hd),"b|")) bartype=bar_vhatch; else if (!strcmp(stringof(hd),"b-")) bartype=bar_hhatch; else if (!strcmp(stringof(hd),"b\\/")) bartype=bar_cross; else if (!strcmp(stringof(hd),"b/\\")) bartype=bar_cross; else { markertype=marker_cross; linetype=line_solid; bartype=bar_framed; } } void mmstyle (header *hd) { header *st=hd,*res; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Argument for markerstyle must be a string!\n"); error=90; return; } switch (markertype) { case marker_cross : res=new_string("x",8,""); break; case marker_circle : res=new_string("o",8,""); break; case marker_diamond : res=new_string("<>",8,""); break; case marker_dot : res=new_string(".",8,""); break; case marker_plus : res=new_string("+",8,""); break; case marker_square : res=new_string("[]",8,""); break; case marker_star : res=new_string("*",8,""); break; default : res=new_string("",8,""); } if (!strcmp(stringof(hd),"x")) markertype=marker_cross; else if (!strcmp(stringof(hd),"o")) markertype=marker_circle; else if (!strcmp(stringof(hd),"<>")) markertype=marker_diamond; else if (!strcmp(stringof(hd),".")) markertype=marker_dot; else if (!strcmp(stringof(hd),"+")) markertype=marker_plus; else if (!strcmp(stringof(hd),"[]")) markertype=marker_square; else if (!strcmp(stringof(hd),"*")) markertype=marker_star; moveresult(st,res); } void mbarstyle (header *hd) { header *st=hd,*res; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Argument for barstyle must be a string!\n"); error=90; return; } switch (bartype) { case bar_solid : res=new_string("#",8,""); break; case bar_framed : res=new_string("#O",8,""); break; case bar_frame : res=new_string("O",8,""); break; case bar_vhatch : res=new_string("|",8,""); break; case bar_hhatch : res=new_string("-",8,""); break; case bar_diagonal1 : res=new_string("/",8,""); break; case bar_diagonal2 : res=new_string("\\",8,""); break; case bar_cross : res=new_string("\\/",8,""); break; default : res=new_string("",8,""); } if (!strcmp(stringof(hd),"/")) bartype=bar_diagonal1; else if (!strcmp(stringof(hd),"\\")) bartype=bar_diagonal2; else if (!strcmp(stringof(hd),"O")) bartype=bar_frame; else if (!strcmp(stringof(hd),"#")) bartype=bar_solid; else if (!strcmp(stringof(hd),"O#")) bartype=bar_framed; else if (!strcmp(stringof(hd),"#O")) bartype=bar_framed; else if (!strcmp(stringof(hd),"|")) bartype=bar_vhatch; else if (!strcmp(stringof(hd),"-")) bartype=bar_hhatch; else if (!strcmp(stringof(hd),"\\/")) bartype=bar_cross; else if (!strcmp(stringof(hd),"/\\")) bartype=bar_cross; moveresult(st,res); } void mlstyle (header *hd) { header *st=hd,*res; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) { output("Argument for linestyle must be string!\n"); error=90; return; } switch (linetype) { case line_none : res=new_string("i",8,""); break; case line_solid : res=new_string("-",8,""); break; case line_dotted : res=new_string(".",8,""); break; case line_dashed : res=new_string("--",8,""); break; case line_arrow : res=new_string("->",8,""); break; default : res=new_string("",8,""); } if (!strcmp(stringof(hd),"i")) linetype=line_none; else if (!strcmp(stringof(hd),"-")) linetype=line_solid; else if (!strcmp(stringof(hd),".")) linetype=line_dotted; else if (!strcmp(stringof(hd),"--")) linetype=line_dashed; else if (!strcmp(stringof(hd),"->")) linetype=line_arrow; moveresult(st,res); } void mlinew (header *hd) { header *st=hd,*res; int h,old=linewidth; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for linewidth must be a real!"); error=90; return; } if ((h=(int)*realof(hd))!=0) linewidth=h; res=new_real(old,""); moveresult(st,res); } static void mtext1 (header *hd, int flag) { header *hd1; hd1=next_param(hd); hd=getvalue(hd); if (error) return; if (hd1) hd1=getvalue(hd1); if (error) return; if (hd->type!=s_string || hd1->type!=s_matrix || dimsof(hd1)->r!=1 || dimsof(hd1)->c!=2) { output("Need a string and a vector [x y]!\n"); error=91; return; } graphic_mode(); gtext((int)*matrixof(hd1),(int)*(matrixof(hd1)+1), stringof(hd),textcolor,flag); gflush(); } void mctext (header *hd) { mtext1(hd,1); } void mrtext (header *hd) { mtext1(hd,2); } void mtext (header *hd) { mtext1(hd,0); } static void mvtext1 (header *hd, int flag) { header *hd1; hd1=next_param(hd); hd=getvalue(hd); if (error) return; if (hd1) hd1=getvalue(hd1); if (error) return; if (hd->type!=s_string || hd1->type!=s_matrix || dimsof(hd1)->r!=1 || dimsof(hd1)->c!=2) { output("Need a string and a vector [x y]!\n"); error=91; return; } graphic_mode(); gvtext((int)*matrixof(hd1),(int)*(matrixof(hd1)+1), stringof(hd),textcolor,flag); gflush(); } void mvtext (header *hd) { mvtext1(hd,0); } void mvctext (header *hd) { mvtext1(hd,1); } void mvrtext (header *hd) { mvtext1(hd,2); } static void mvutext1 (header *hd, int flag) { header *hd1; hd1=next_param(hd); hd=getvalue(hd); if (error) return; if (hd1) hd1=getvalue(hd1); if (error) return; if (hd->type!=s_string || hd1->type!=s_matrix || dimsof(hd1)->r!=1 || dimsof(hd1)->c!=2) { output("Need a string and a vector [x y]!\n"); error=91; return; } graphic_mode(); gvutext((int)*matrixof(hd1),(int)*(matrixof(hd1)+1), stringof(hd),textcolor,flag); gflush(); } void mvutext (header *hd) { mvutext1(hd,0); } void mvcutext (header *hd) { mvutext1(hd,1); } void mvrutext (header *hd) { mvutext1(hd,2); } void mbar (header *hd) { header *st=hd,*result; double *m,x,y,w,h; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=4) { output("Bar needs a 1x4 vector!\n"); error=1; return; } m=matrixof(hd); x=*m; y=*(m+1); w=*(m+2); h=*(m+3); w+=x; h+=y; graphic_mode(); gbar1(x,y,w,h,barcolor,bartype); result=new_string("",2,""); moveresult(st,result); } void mbarcolor (header *hd) { header *st=hd; int old=barcolor; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for textcolor must be integer!\n"); error=90; return; } barcolor=(int)*realof(hd); if (barcolor<0 || barcolor>=16) barcolor=3; moveresult(st,new_real(old,"")); } void msetplot (header *hd) { header *st=hd,*result; double *m; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || dimsof(hd)->c!=4) { output("Setplot needs a 1x4 vector!\n"); error=2200; return; } result=new_matrix(1,4,""); if (error) return; m=matrixof(result); *m++=x_min; *m++=x_max; *m++=y_min; *m=y_max; m=matrixof(hd); x_min=*m++; x_max=*m++; y_min=*m++; y_max=*m; if (x_max>DBL_MAX) x_max=DBL_MAX; if (x_min<-DBL_MAX) x_min=-DBL_MAX; if (y_max>DBL_MAX) y_max=DBL_MAX; if (y_min<-DBL_MAX) y_min=-DBL_MAX; if (x_min>=x_max) x_min=x_max+1; if (y_min>=y_max) y_min=y_max+1; moveresult(st,result); scaling=0; } void mholding (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Holding needs a 1 or 0!\n"); error=2201; return; } result=new_real(holding,""); holding=(*realof(hd)!=0.0); scaling=!holding; moveresult(st,result); } void mkeepsquare (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Keepsquare needs a 1 or 0!\n"); error=2201; return; } result=new_real(keepsquare,""); keepsquare=(*realof(hd)!=0.0); moveresult(st,result); } void mscaling (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Scaling needs a 1 or 0!\n"); error=2201; return; } result=new_real(scaling,""); scaling=(*realof(hd)!=0.0); moveresult(st,result); } void mtwosides (header *hd) { header *st=hd,*result; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Twosides needs a 1 or 0!\n"); error=2201; return; } result=new_real(twosides,""); twosides=(*realof(hd)!=0.0); moveresult(st,result); } void mscale (header *hd) { hd=getvalue(hd); if (hd->type!=s_real) { output("Scale needs a real!\n"); error=150; return; } gscale(*realof(hd)); } void mmeshfactor (header *hd) { double oldfactor=meshfactor; hd=getvalue(hd); if (hd->type!=s_real) { output("Meshfactor needs a real!\n"); error=150; return; } meshfactor=*realof(hd); if (meshfactor<0) meshfactor=0; if (meshfactor>1) meshfactor=1; *realof(hd)=oldfactor; } void mtextsize (header *hd) { header *result; result=new_matrix(1,2,""); if (error) return; *matrixof(result)=getmetacharwidth(); *(matrixof(result)+1)=getmetacharheight(); } void mmouse (header *hd) { header *result; double c,r; double *m; graphic_mode(); mouse(&c,&r); if (c<0 && r<0) new_real(0,""); else { result=new_matrix(1,2,""); if (error) return; m=matrixof(result); *m++=x_min+(c-upperc)/(double)(lowerc-upperc)*(x_max-x_min); *m=y_max-(r-upperr)/(double)(lowerr-upperr)*(y_max-y_min); } } void mholding0 (header *hd) { new_real(holding,""); } void mplot1 (header *hd) { header *result; double *x; result=new_matrix(1,4,""); if (error) return; x=matrixof(result); *x++=x_min; *x++=x_max; *x++=y_min; *x=y_max; } void mview0 (header *hd) { header *result; double *m; result=new_matrix(1,4,""); if (error) return; m=matrixof(result); *m++=distance; *m++=tele; *m++=a_left; *m=a_up; } void mwindow0 (header *hd) { double *m; hd=new_matrix(1,4,""); if (error) return; m=matrixof(hd); *m++=upperc; *m++=upperr; *m++=lowerc; *m=lowerr; } void mframe (header *hd) { graphic_mode(); frame(); new_real(0,""); } void mantialiasing (header *hd) { header *st=hd; int old=antialiasing; hd=getvalue(hd); if (error) return; if (hd->type!=s_real) { output("Argument for antialiasing must be real!\n"); error=90; return; } antialiasing=(int)*realof(hd); moveresult(st,new_real(old,"")); } void mantialiasing0 (header *hd) { new_real(antialiasing,""); } euler-1.61.0/src/graphics.h0000644000175000001440000000374107471436421014331 0ustar ericusers/* * Euler - a numerical lab * * platform : neutral * * file : graphics.h -- portable advanced graphics */ #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #include "stack.h" extern int fillcolor1,fillcolor2; extern int markerfactor; void ghold (void); void show_graphics (void); void mwindow (header *hd); void mwindow0 (header *hd); void mclip (header *hd); void mclip0 (header *hd); void mholding (header *hd); void mholding0 (header *hd); void mscale (header *hd); void mscaling (header *hd); void mkeepsquare (header *hd); void mpixel (header *hd); void mantialiasing (header *hd); void mantialiasing0 (header *hd); /* * 2d plots */ void mplotarea (header *hd); void mplot (header *hd); void mplot1 (header *hd); void msetplot (header *hd); void mstyle (header *hd); void mcolor (header *hd); void mlstyle (header *hd); void mlinew (header *hd); void mframe (header *hd); void mfcolor (header *hd); /* * 2d markers */ void mmark (header *hd); void mmarkersize (header *hd); void mmstyle (header *hd); /* * bars */ void mbar (header *hd); void mbarcolor (header *hd); void mbarstyle (header *hd); /* * 3d plots */ void mcontour (header *hd); void mdensity (header *hd); void mdcolor (header *hd); void mdgrid (header *hd); void mwire (header *hd); void mwcolor (header *hd); void msolid (header *hd); void msolid1 (header *hd); void msolidh (header *hd); void mmesh (header *); void mmeshflat (header *hd); void mmeshfactor (header *hd); void mfillcolor (header *hd); void mtwosides (header *hd); void mview (header *hd); void mview0 (header *hd); void mproject (header *hd); /* * text */ void mtext (header *hd); void mctext (header *hd); void mrtext (header *hd); void mvtext (header *hd); void mvctext (header *hd); void mvrtext (header *hd); void mvutext (header *hd); void mvcutext (header *hd); void mvrutext (header *hd); void mtextsize (header *hd); void mtcolor (header *hd); /* * events */ void mmouse (header *hd); /* * postscript */ void mpswindow (header *hd); #endif euler-1.61.0/src/linear.c0000644000175000001440000010027007453044574013775 0ustar ericusers#include #include #include #include #include #include "sysdep.h" #include "linear.h" #include "output.h" #include "mainloop.h" #include "interval.h" char *ram; static int *perm,*col,signdet,luflag=0; static double **lumat,*c,det; static complex **c_lumat,*c_c,c_det; static int rank; static long nmark; #define superalign(n) ((((n)-1)/ALIGNMENT+1)*ALIGNMENT) #define increase(r,n) nmark=superalign(n); if (!freeramfrom((r),(nmark))) outofram(); (r)+=nmark; /***************** real linear systems *******************/ static void lu (double *a, int n, int m) /***** lu lu decomposition of a *****/ { int i,j,k,mm,j0,kh,j1; double *d,piv,temp,*temp1; if (!luflag) { /* get place for result c and move a to c */ c=(double *)ram; increase(ram,(long)n*m*sizeof(double)); memmove((char *)c,(char *)a,(long)n*m*sizeof(double)); } else c=a; /* inititalize lumat */ lumat=(double **)ram; increase(ram,(long)n*sizeof(double *)); d=c; for (i=0; i=n) { kh++; break; } } } if (k=0; k--) { for (sum=0.0, j=k+1; j=0; k--) { for (sum=0.0, j=k+1; j=n) { kh++; break; } } if (k=0; k--) { sum[0]=0; sum[1]=0.0; for (j=k+1; j=0; k--) { sum[0]=0; sum[1]=0.0; for (j=k+1; jtype==s_matrix || hd->type==s_real) { getmatrix(hd,&r,&c,&m); if (hd1->type==s_cmatrix) { make_complex(st); msolve(st); return; } if (hd1->type!=s_matrix && hd1->type!=s_real) wrong_arg_in("\\"); getmatrix(hd1,&r1,&c1,&m1); if (c!=r || c<1 || r!=r1) wrong_arg_in("\\"); result=new_matrix(r,c1,""); if (error) return; solvesim(m,r,m1,c1,matrixof(result)); if (error) return; moveresult(st,result); } else if (hd->type==s_cmatrix || hd->type==s_complex) { getmatrix(hd,&r,&c,&m); if (hd1->type==s_matrix || hd1->type==s_real) { make_complex(next_param(st)); msolve(st); return; } if (hd1->type!=s_cmatrix && hd1->type!=s_complex) wrong_arg_in("\\"); getmatrix(hd1,&r1,&c1,&m1); if (c!=r || c<1 || r!=r1) wrong_arg_in("\\"); result=new_cmatrix(r,c1,""); if (error) return; c_solvesim(m,r,m1,c1,matrixof(result)); if (error) return; moveresult(st,result); } else if (hd->type==s_imatrix || hd->type==s_interval) { getmatrix(hd,&r,&c,&m); if (hd1->type==s_matrix || hd1->type==s_real) { make_interval(next_param(st)); msolve(st); return; } if (hd1->type!=s_imatrix && hd1->type!=s_interval) wrong_arg_in("\\"); getmatrix(hd1,&r1,&c1,&m1); if (c!=r || c<1 || r!=r1) wrong_arg_in("\\"); result=new_imatrix(r,c1,""); if (error) return; i_solvesim(m,r,m1,c1,matrixof(result)); if (error) return; moveresult(st,result); } else wrong_arg_in("\\"); } void mlu (header *hd) { header *st=hd,*result,*res1,*res2,*res3; double *m,*mr,*m1,*m2,det,deti; int r,c,*rows,*cols,rank,i; hd=getvalue(hd); if (error) return; if (hd->type==s_matrix || hd->type==s_real) { getmatrix(hd,&r,&c,&m); if (r<1) wrong_arg_in("lu"); result=new_matrix(r,c,""); if (error) return; mr=matrixof(result); memmove((char *)mr,(char *)m,(long)r*c*sizeof(double)); make_lu(mr,r,c,&rows,&cols,&rank,&det); if (error) return; res1=new_matrix(1,rank,""); if (error) return; res2=new_matrix(1,c,""); if (error) return; res3=new_real(det,""); if (error) return; m1=matrixof(res1); for (i=0; itype==s_cmatrix || hd->type==s_complex) { getmatrix(hd,&r,&c,&m); if (r<1) wrong_arg_in("lu"); result=new_cmatrix(r,c,""); if (error) return; mr=matrixof(result); memmove((char *)mr,(char *)m,(long)r*c*(long)2*sizeof(double)); cmake_lu(mr,r,c,&rows,&cols,&rank,&det,&deti); if (error) return; res1=new_matrix(1,rank,""); if (error) return; res2=new_matrix(1,c,""); if (error) return; res3=new_complex(det,deti,""); if (error) return; m1=matrixof(res1); for (i=0; itype==s_matrix || hd->type==s_real) { getmatrix(hd,&r,&c,&m); if (hd1->type==s_cmatrix) { make_complex(st); mlusolve(st); return; } if (hd1->type!=s_matrix && hd1->type!=s_real) wrong_arg_in("lu"); getmatrix(hd1,&r1,&c1,&m1); if (c!=r || c<1 || r!=r1) wrong_arg_in("lu"); result=new_matrix(r,c1,""); if (error) return; lu_solve(m,r,m1,c1,matrixof(result)); if (error) return; moveresult(st,result); } else if (hd->type==s_cmatrix || hd->type==s_complex) { getmatrix(hd,&r,&c,&m); if (hd1->type==s_matrix || hd1->type==s_real) { make_complex(next_param(st)); mlusolve(st); return; } if (hd1->type!=s_cmatrix && hd1->type!=s_complex) wrong_arg_in("lu"); getmatrix(hd1,&r1,&c1,&m1); if (c!=r || c<1 || r!=r1) wrong_arg_in("lu"); result=new_cmatrix(r,c1,""); if (error) return; clu_solve(m,r,m1,c1,matrixof(result)); if (error) return; moveresult(st,result); } else wrong_arg_in("lu"); } /**************** tridiagonalization *********************/ static double **mg; static void tridiag ( double *a, int n, int **rows) /***** tridiag tridiag. a with n rows and columns. r[] contains the new indices of the rows. *****/ { char *ram=newram,rh; double **m,maxi,*mh,lambda,h; int i,j,ipiv,ik,jk,k,*r; /* make a pointer array to the rows of m : */ m=(double **)ram; increase(ram,n*sizeof(double *)); for (i=0; imaxi) { maxi=h; ipiv=i; } } if (maximaxi) { maxi=h; ipiv=i; } } if (maxitype==s_matrix) { getmatrix(hd,&c,&r,&m); if (c!=r || c==0) wrong_arg(); result=new_matrix(c,c,""); if (error) return; result1=new_matrix(1,c,""); if (error) return; mr=matrixof(result); memmove(mr,m,(long)c*c*sizeof(double)); tridiag(mr,c,&rows); mr=matrixof(result1); for (i=0; itype==s_cmatrix) { getmatrix(hd,&c,&r,&m); if (c!=r || c==0) wrong_arg(); result=new_cmatrix(c,c,""); if (error) return; result1=new_matrix(1,c,""); if (error) return; mr=matrixof(result); memmove(mr,m,(long)c*c*(long)2*sizeof(double)); ctridiag(mr,c,&rows); mr=matrixof(result1); for (i=0; itype==s_matrix) { getmatrix(hd,&c,&r,&m); if (c!=r || c==0) wrong_arg(); result=new_matrix(c,c,""); if (error) return; result1=new_matrix(1,c+1,""); if (error) return; mr=matrixof(result); memmove(mr,m,(long)c*c*sizeof(double)); charpoly(mr,c,matrixof(result1)); } else if (hd->type==s_cmatrix) { getmatrix(hd,&c,&r,&m); if (c!=r || c==0) wrong_arg(); result=new_cmatrix(c,c,""); if (error) return; result1=new_cmatrix(1,c+1,""); if (error) return; mr=matrixof(result); memmove(mr,m,(long)c*c*(long)2*sizeof(double)); ccharpoly(mr,c,matrixof(result1)); } else wrong_arg(); moveresult(st,result1); } /***************** jacobi-givens eigenvalues **************/ static double rotate (double *m, int j, int k, int n) { double theta,t,s,c,tau,h,pivot; int l; pivot=*mat(m,n,j,k); if (fabs(pivot)type!=s_matrix) wrong_arg_in("jacobi"); getmatrix(hd,&r,&c,&m); if (r!=c) wrong_arg_in("jacobi"); if (r<2) { moveresult(st,hd); return; } hd1=new_matrix(r,r,""); if (error) return; m=matrixof(hd1); memmove(m,matrixof(hd),(long)r*r*sizeof(double)); while(1) { max=0.0; for (i=0; imax) max=neumax; if (max=0. iv[0]..iv[n-1] contain the variable indices of the rows, iv[n]..iv[n+m-1] contain the variable indices of the columns. a,b and c will be changed here. Results: -1 unfeasable, 1 unbounded, 0 solution found This procedure uses Bland's anticycling rule. */ { int i,i0,iv0,j,j0,jv0; double mi,h; /* Balance the lines */ for (i=0; iepsilon) { b[i]/=h; for (j=0; j=m) break; /* Search for a negative lambda */ for (j=0; j=n) return -1; /* Search for a possible column, take least variable index on tie */ jv0=iv[j]; j0=j; j++; for (; j=n) break; /* Search for a positive lambda */ for (i=0; iepsilon) break; if (i>=m) { for (j=0; jepsilon) { h=b[i]/a[i][j0]; if (htype!=s_matrix || hdb->type!=s_matrix || hdc->type!=s_matrix || dimsof(hdb)->c!=1 || dimsof(hdc)->r!=1) wrong_arg_in("simplex"); getmatrix(hda,&m,&n,&x); if (m!=dimsof(hdb)->r || n!=dimsof(hdc)->c) wrong_arg_in("simplex"); result=new_matrix(n,1,""); if (error) return; x=matrixof(result); for (i=0; i= 0.0 ? fabs(a) : -fabs(a)) static double maxarg1,maxarg2; #define FMAX(a,b) (maxarg1=(a),maxarg2=(b),(maxarg1) > (maxarg2) ?\ (maxarg1) : (maxarg2)) static int iminarg1,iminarg2; #define IMIN(a,b) (iminarg1=(a),iminarg2=(b),(iminarg1) < (iminarg2) ?\ (iminarg1) : (iminarg2)) static double sqrarg; #define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 : sqrarg*sqrarg) static double pythag (double a, double b) { double absa,absb; absa=fabs(a); absb=fabs(b); if (absa > absb) return absa*sqrt(1.0+SQR(absb/absa)); else return (absb == 0.0 ? 0.0 : absb*sqrt(1.0+SQR(absa/absb))); } static void svdcmp(double **a, int m, int n, double w[], double **v) { int flag,i,its,j,jj,k,l=0,nm=0; double anorm,c,f,g,h,s,scale,x,y,z,*rv1; rv1=(double *)malloc((n+1)*sizeof(double)); g=scale=anorm=0.0; for (i=1;i<=n;i++) { l=i+1; rv1[i]=scale*g; g=s=scale=0.0; if (i <= m) { for (k=i;k<=m;k++) scale += fabs(a[k][i]); if (scale) { for (k=i;k<=m;k++) { a[k][i] /= scale; s += a[k][i]*a[k][i]; } f=a[i][i]; g = -SIGN(sqrt(s),f); h=f*g-s; a[i][i]=f-g; for (j=l;j<=n;j++) { for (s=0.0,k=i;k<=m;k++) s += a[k][i]*a[k][j]; f=s/h; for (k=i;k<=m;k++) a[k][j] += f*a[k][i]; } for (k=i;k<=m;k++) a[k][i] *= scale; } } w[i]=scale *g; g=s=scale=0.0; if (i <= m && i != n) { for (k=l;k<=n;k++) scale += fabs(a[i][k]); if (scale) { for (k=l;k<=n;k++) { a[i][k] /= scale; s += a[i][k]*a[i][k]; } f=a[i][l]; g = -SIGN(sqrt(s),f); h=f*g-s; a[i][l]=f-g; for (k=l;k<=n;k++) rv1[k]=a[i][k]/h; for (j=l;j<=m;j++) { for (s=0.0,k=l;k<=n;k++) s += a[j][k]*a[i][k]; for (k=l;k<=n;k++) a[j][k] += s*rv1[k]; } for (k=l;k<=n;k++) a[i][k] *= scale; } } anorm=FMAX(anorm,(fabs(w[i])+fabs(rv1[i]))); } for (i=n;i>=1;i--) { if (i < n) { if (g) { for (j=l;j<=n;j++) v[j][i]=(a[i][j]/a[i][l])/g; for (j=l;j<=n;j++) { for (s=0.0,k=l;k<=n;k++) s += a[i][k]*v[k][j]; for (k=l;k<=n;k++) v[k][j] += s*v[k][i]; } } for (j=l;j<=n;j++) v[i][j]=v[j][i]=0.0; } v[i][i]=1.0; g=rv1[i]; l=i; } for (i=IMIN(m,n);i>=1;i--) { l=i+1; g=w[i]; for (j=l;j<=n;j++) a[i][j]=0.0; if (g) { g=1.0/g; for (j=l;j<=n;j++) { for (s=0.0,k=l;k<=m;k++) s += a[k][i]*a[k][j]; f=(s/a[i][i])*g; for (k=i;k<=m;k++) a[k][j] += f*a[k][i]; } for (j=i;j<=m;j++) a[j][i] *= g; } else for (j=i;j<=m;j++) a[j][i]=0.0; ++a[i][i]; } for (k=n;k>=1;k--) { for (its=1;its<=30;its++) { flag=1; for (l=k;l>=1;l--) { nm=l-1; if ((double)(fabs(rv1[l])+anorm) == anorm) { flag=0; break; } if ((double)(fabs(w[nm])+anorm) == anorm) break; } if (flag) { c=0.0; s=1.0; for (i=l;i<=k;i++) { f=s*rv1[i]; rv1[i]=c*rv1[i]; if ((double)(fabs(f)+anorm) == anorm) break; g=w[i]; h=pythag(f,g); w[i]=h; h=1.0/h; c=g*h; s = -f*h; for (j=1;j<=m;j++) { y=a[j][nm]; z=a[j][i]; a[j][nm]=y*c+z*s; a[j][i]=z*c-y*s; } } } z=w[k]; if (l == k) { if (z < 0.0) { w[k] = -z; for (j=1;j<=n;j++) v[j][k] = -v[j][k]; } break; } if (its == 30) { output("No convergence in svd\n"); error=1; return; } x=w[l]; nm=k-1; y=w[nm]; g=rv1[nm]; h=rv1[k]; f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y); g=pythag(f,1.0); f=((x-z)*(x+z)+h*((y/(f+SIGN(g,f)))-h))/x; c=s=1.0; for (j=l;j<=nm;j++) { i=j+1; g=rv1[i]; y=w[i]; h=s*g; g=c*g; z=pythag(f,h); rv1[j]=z; c=f/z; s=h/z; f=x*c+g*s; g = g*c-x*s; h=y*s; y *= c; for (jj=1;jj<=n;jj++) { x=v[jj][j]; z=v[jj][i]; v[jj][j]=x*c+z*s; v[jj][i]=z*c-x*s; } z=pythag(f,h); w[j]=z; if (z) { z=1.0/z; c=f*z; s=h*z; } f=c*g+s*y; x=c*y-s*g; for (jj=1;jj<=m;jj++) { y=a[jj][j]; z=a[jj][i]; a[jj][j]=y*c+z*s; a[jj][i]=z*c-y*s; } } rv1[l]=0.0; rv1[k]=f; w[k]=x; } } free(rv1); } void msvd (header *hd) { header *st=hd,*hda,*hdw,*hdv; int m,n,i; double *mm; double **ma,**mv; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix) wrong_arg_in("svd"); getmatrix(hd,&m,&n,&mm); if (m<2 || n<2) wrong_arg_in("svd"); hda=new_matrix(m,n,""); if (error) return; hdw=new_matrix(1,n,""); if (error) return; hdv=new_matrix(n,n,""); if (error) return; memmove((char *)matrixof(hda),(char *)mm, n*sizeof(double)*m); ma=(double **)malloc(m*sizeof(double *)); for (i=0; i> 1; pp=g[m1]; qq=h[m1]; for (j=1;j<=m2;j++) { pt1=g[j]; pt2=g[k]; qt1=h[j]; qt2=h[k]; g[j]=pt1-pp*qt2; g[k]=pt2-pp*qt1; h[j]=qt1-qq*pt2; h[k--]=qt2-qq*pt1; } } output("Toeplitz failed.\n"); error=1; stop : free(g1); free(h1); } void msolvetoeplitz (header *hd) { header *st=hd,*hdb,*result; int n,i; double *m,*r; hdb=nextof(hd); hd=getvalue(hd); if (error) return; hdb=getvalue(hdb); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1 || hdb->type!=s_matrix || dimsof(hdb)->c!=1) wrong_arg_in("toeplitzsolve"); n=dimsof(hdb)->r; if (n<2 || dimsof(hd)->c!=2*n-1) wrong_arg_in("toeplitzsolve"); result=new_matrix(n,1,""); if (error) return; r=(double *)malloc((2*n-1)*sizeof(double)); m=matrixof(hd); for (i=0; i<2*n-1; i++) r[i]=m[2*n-2-i]; toeplitz(r-1,matrixof(result)-1, matrixof(hdb)-1,n); free(r); if (error) return; moveresult(st,result); } void mtoeplitz (header *hd) { header *st=hd,*result; int i,n; double *m,*r; hd=getvalue(hd); if (error) return; if (hd->type!=s_matrix || dimsof(hd)->r!=1) wrong_arg_in("toeplitz"); n=dimsof(hd)->c; if (n<2 || n%2!=1) wrong_arg_in("toeplitz"); n=n/2+1; result=new_matrix(n,n,""); if (error) return; m=matrixof(result); r=matrixof(hd); for (i=0; in2. # !bandmult bandmult(A,B) computes A.B and is a bit faster for sparse matrices A and B. # !bar,barcolor,barstyle bar([xl,yu,w,h]) : draws a rectangle with upper left coordinates (xl,yu), and lower right coordinates (xl+w,yu+h) in screen coordinates. barcolor(n) : sets the color index (See: color) for the bar. barstyle(string) : sets the style for the bar. Available are "#" for solid bars, "#O" for solid filled bars, "O" for rectangles, "\", "/" "\/" for hatched bars. See: plotbar # !bin,fak,logbin,logfak bin(n,m) : computes the binomial coeeficient "m chosen from n". logbin(n,m) : computes the logarithm of the above (for large n,m) fak(n) : computes the faculty n! of n. logfak(n) : computes the logarithm of the above (for large n) # !ceil,floor,round,mod ceil(x) : returns the interger above x. floor(x) : returns the integer below x. round(x,n) : returns x rounded to n digits. mod(x,y) : returns x modulo y. # !changedir,cd,path,load changedir(string) : is a function changing the direcory and returning the new directory. If the string is empty, it returns the active directory. cd string : is a command doing the same. path(string) : contains a path to look for EULER files. The load command will look through this path and choose the first available file. The path items must be separated by a semicolon. An example is ".;myspecial". load filename : loads the file. The name may be included in double quotes, or in round brackets (if it is a string expression. # !charpoly charpoly(A) : returns the characteristic polynomial of A. # !normaldis,chidis,fdis,tdis,invnormaldis,invtdis normaldis(x) : returns the probability that a normally distributed (mean 0, st.dev. 1) is less than x. invnormaldis(p) : is the inverse. chidis(x,n) : chi-distribution with n degrees of freedom. tdis(x,n) : Student's t-distribution with n degrees of freedom. invtdis(p,n) : the inverse. fdis(x,n,m) : f-distribution with n and m degrees of freedom. # !open,close,eof open(filename,type) : opens a file with the specified name for reading (type is "r") or writing (type is "w"). Binary mode can be achieved with "rb" or "wb". close() : closes the opened file. eof() : returns 1, if the file is read completely. See: putchar, putword, putlongword, getchar, getword, getlongword getstring, write, getvector # !putchar,putword,putlongword,getchar,getword,getlongword,getuchar,getuword,getulongword,putuchar,putuword,putulong putchar(c) : puts a character to a previous opened file, c is the ascii code of the character. putuchar(c) put c as unsigned charactar. putword(x) : puts x a s two bytes to the file. putuword(x) : put x as unsigned word. putlongword(x) : puts x as four bytes to the file. The format is the internal format. putulongword(x) : the unsigned thing. getchar() : reads one character from the file. getuchar() : for unsigned characters. getchar(n) : reads n characters, and returns in a 1xn vector. getword() : reads a word. getuword() : reads an unsigned word. getword(n) : reads n words. getlongword() : reads a long word. getulongword() : reads an unsigned long word. getlongword(n) : reads n long words. See: write, getstring, open, close # !getstring,write getstring(n) : reads a string of length from an opened file. write(string) : writes a string to the file. See: open, close # !getvector getvector(n) : reads n numbers in redable form from an opened file. The function returns a vector and the actual number of read numbers. The numbers may be separated by any non-digit characters. See: open, close # !cols,rows,size cols(A) : returns the number of columns of a matrix A. rows(A) : returns the number of rows of A. size(A,B,C,...) : returns the maximal size of A,B,C,... This is used to get a matrix, which can hold the result of any operation between A,B,C,... # !complex,re,im re(x) : returns the real part of x. im(x) : returns the imaginary part of x. complex(x) : makes the real argument x complex. See: conj, arg # !conj,arg Function of a complex variable. Works for a real argument. # !I,E,Pi,pi I : is the imaginary unit. E : is exp(1). Pi : is pi(). # !contour contour(A,v) : draws contour lines of a(i,j) at heights v(k). a(i,j) is interpreted as the values of a function f at (i,j). Note, that i and j are always scaled to a square grid, unless you specify a non-square plot window. The function does not set the plot coordinates, so they must be set manually to overlay the contours with xplot coordinates. See: density # !count count(v,n) : counts the numbers of v(i) in the intervals (0,1) to (n-1,n). Returns a 1xn vector. # !ctext,rtext,text,textheight,textwidth,textcolor text(string,[n,m]) : draws the string to screen coordinates n,m aligned at the upper left edge. The plot is not erased. ctext(string,[n,m]) : draws the string horizontally centered. rtext(string,[n,m]) : draws it right aligned. textheight() : returns the maximal text height. textwidth() : returns the average text character width. textcolor(n) : sets the color index for text (0..15). See: label # !prod,sum,cumprod,cumsum prod(A) : returns a matrix with one column containing the products of rows of A. sum(A) : returns a matrix containing the sums of rows of A. cumprod(A) : a matrix with the same size as A and the cumulative products of the rows of A. cumsum(A) : the same for the cumulative sum. # !antialiasing antialiasing(a) : enables or disables the antialiasing scheme for density plots See: density # !density density(A) : represents the elements a(i,j) by darker and lighter values in a square grid seen from above. You should scale the matrix to [0,1] since only the fractional part is used. antialiasing(a) : enables or disables the antialiasing scheme. See: contour # !diag,setdiag diag(A,k) : returns the k-th diagonal of A. diag([n,m],k,v) : returns a nxm matrix with the vector (or scalar) v on its k-th diagonal. setdiag(A,k,x) : returns A, but sets the k-th diagonal of A to x. # !diameter,middle,left,right Function for intervals. Works for real numbers too. Group: diameter, middle, left, right # !interpol,interpval,polytrans Interpolation with polynomials. interpol(x,y) : returns the divided differences of the polynomial interpolating y(i) in x(i). interpval(x,d,t) : evaluates the interpolation in x(i) (with divided differences d) in the points t. polytrans(x,d) : transfer the divided differences into a polynomial. See: polycons # !dll dll(name,function,n) : loads the function f (a string) from the dll with the name, assuming it has n arguments. Read DLL.DOC for more information. # !dup,_,| dup(v,n) : duplicates the vector v n times vertically or horizontally depending, if it is a 1xn or an nx1 vector. v_w : sets v atop of w. v|w : sets v aside of w. # !epsilon,setepsilon,localepsilon epsilon() : returns the internal epsilon used for various purposes, like solving equations and the ~= operator. setepsilon(x) : sets the internal epsilon. localepsilon() : sets the epsilon locally for a function. # !error,errorlevel error(string) : issues an error and prints the message string. errorlevel(string) : evaluate the string and return 0 and the result, if no error, else the error number. # !eval eval("f",v,...) : calls the function f with parameters v,... This is obsolete, because f(v,...) will work for strings f. See: evaluate # !evaluate,interpret evaluate(expression) : evaluates the expression string. interpret(expression) : does the same, but will return the string "error", if the expression contains an error. See: eval # !expand expand(x,d) : returns the interval [x-d,x+d], if x is real, and an interval of d times the diameter of x, if x is an interval. # !format,goodformat,expformat,fixedformat,iformat,fracformat format([n,m]) : sets the format for printing numbers to width m and fixed decimal places m. fixedformat([n,m]) : the same. expformat([n,m]) : uses the exponential format. goodformat([n,m]) : uses format or expformat, whatever look nicer. fracformat([n,eps]) : sets output as fractions with width n and an accuracy of eps. The above formats deactivate this. iformat(n) : sets the total length for interval output. Used by: longformat, shortformat # !extrema,max,min extrema(A) : returns a matrix with four columns containing the miminal value, its position, the maximal value and its position of each row of A. max(A) : returns the maxima of the columns of A. min(A) : returns the minima of the columns of A. max(x,y) : returns the bigger of x and y. min(x,y) : returns the lesser of x and y. # !fft,ifft fft(v) : returns the Fast Fourier Transform of v. v must have one row and should have a number of columns with many low prime factors, like 2^n. This is the same as evaluating a polynomial with coeffcients v in the 2^n-the roots of unity. ifft(v) : is the inverse operation. fft(V) : if V is a matrix, this will return the two dimentional FFT of V. In this case, the number columns and rows must be a power of 2. ifft(V) : is the inverse operation. # !find find(v,x) : finds x in the sorted vector v. Returns the index i such that v(i) <= x < v(i+1). x may be a vector as usual. # !flipx,flipy,shiftleft,shiftright,rotleft,rotright flipx(A) : mirrors the matrix A vertically. flipy(A) : mirrors the matrix A horizontally. rotleft(A) : rotates the rows of A to the left (last column copied to first column). rotright(A) : The same to the right. shiftleft(A),shiftright(A) : Similar to rot, but sets the right (left) element to 0. # !frame frame() : Draws the frame around the plot. See: framecolor # !free,hexdump,memorydump,list,listvar,forget free() : returns the free space on the stack. list : lists all built-in functions, commands and all functions. listvar : lists all variables, their types and sizes. clear var,... : removes the variables. forget function,... : removes the functions. memorydump : shows all elements on the stack. hexdump var : dumps the variable or uder defined function var in hexadecimal form. # !hold,holding,clg hold : toggles holding of the graphics on or off. This applies to the fact that plot clears the graphics normally. hold on : toggles holding on. hold off : toggles holding off. holding() : returns the holding state. holding(f) : sets the holding state. f should be 1 or 0. Returns the old state clg : clears the graphics screen. See: plot, cls # !huecolor,huegrid,solidhue solidhue(x,y,z,h) : works like solid basically, but colors the plot with a shading 0<=h<1. huegrid(f) : turns the grid on or off. It returns the previous state. huecolor(n) : sets the color index (See: color) for the shading. See: solid # !input,lineinput input(prompt) : prompts the user for an expression. Returns the value of this expression. In case of an error, the prompt will be repeated. lineinput(prompt) : prompts for a string, which is not interpreted. See: interpret # !intersects intersects(a,b) : tests two intervals on non-empty intersection See: &&,|| # !help help text : displays the help text for the user function text. Then it will look, if text is a builtin function and tell so. Finally it will seek the help data base (loaded from help.txt) to see, if there is an entry for the text. It may happen that the help is displayed twice for a user function and a builtin function of the same name. In this case, the user function contains a simpler or extended interface for the internal function. # !interval,~ interval(a,b) : returns the interval [a,b]. ~a,b~ : does the same. ~a~ : returns an interval [a-eps,a+eps]. # !&&,|| a&&b : returns a and-connected with b in case of reals. I.e., the result will be 1, if both a and b are non-zeros. I&&J : returns the interval intersection of I and J. a||b : returns a or-connected with b in case of reals. I.e., the result will be 1, if both a and b are non-zeros. I||J : returns the interval union of I and J. # !iscomplex,isfunction,isinterval,isreal,typeof isreal(x) : tests, if x is real. iscomplex(x) : tests, if x is complex. isinterval(x) : tests, if x is an interval scalar or matrix. isfunction(x) : tests, if x is a function. typeof(var) : returns the type of the variable (internal enum). # !jacobi jacobi(A) : computes the eigenvalues of a symmetric real matrix A, using the Jacobi procedure. See: charpoly, eigenvalues # !keepsquare keepsquare(f) : sets a flag to determine the autoscaling. If the flag is on, autoscaling will keep the y coordinates the same range as the x coordinates. See: plot # !plot,linestyle,setplot,linewidth,color plot(x,y) : connects the points x(i),y(i) with lines. The coordinates are plot coordinates, which are set before the plot from the range of x and y, unless setplot has not been called before, or scaling is turned off. y can contain more rows as x. This will plot x,y[r] for all rows of y simultanuously. plot() : returns the x and y plot range (1x4 vector [x1,x2,y1,y2]). setplot([x1,x2,y1,y2]) : sets the plot coordinates. scaling(f) : sets the scaling flag. Returns the previous value. linestyle(string) : sets the linestyle to "-" solid, "--" dashed, "." dotted, "i" white, or "->" arrowed. Returns the previous value. linewidth(n) : Sets the width of the line. color(n) : Sets the color index for the plot (0..15). Returns the old value. See: xplot, xgrid, ygrid, fplot, cplot, pixel, plotarea, clg # !\,lu,lusolve \ : A\b solves the linear system A.x=b. lu(A) : returns an LU-decomposition of A. In fact, it returns {B,r,c,det}. B is the result of the Gauss algorithm with the factors written below the diagonal, r is the index re-arrangement of the rows of A, that was necessary, c is 1 for each linear independet column and det is the determinant of A. To get a real LU-decomposition for a non-singular square A, take the lower part of B (plus the identity-matrix) as L and the upper part as U. Then A[r] is L.U, i.e. A[r] is (band(B,-n,-1)+id(n)).band(B,0,n) To solve A.x=b for an x quickly, use lusolve(A[r],b[r]). # !mark,markersize,markerstyle mark(x,y) : works like plot, but does not connect the points. markerstyle(string) : sets the style for the markers. Style is "<>", "[]", ".", "+" or "*". markersize(n) : sets the markersize in screen coordinates (0..1024). See: plot # !zeros,ones,matrix matrix([n,m],x) : returns an nxm matrix set to x. zeros([n,m]) : with x=0. ones([n,m]) : with x=1. [n,m] can be taken from the size of another matrix, as in B=zeros(size(A)). See: size # !mesh,meshbar,meshfactor mesh(A) : plots a simple 3D plot of a(i,j) over a grid of points (i,j). meshbar(A) : does something similar. However, the plot consists of columns of height a(i,j). Works for 1xn vectors too. meshfactor(f) : dumps the mesh with the factor (0 to 1) in height. See: solid, wired # !solid,wire,fillcolor,project,view,twosides solid(x,y,z) : plots a solid 3D plots of points x(i,j), y(i,j), z(i,j). I.e., a retangular grid (x,y) is mapped to these points. The two sided may have different colors, unless the twosides flag is off. Take care that the mapping is one-to-one and the plot does not self-intersect. wire(x,y,z) : works like solid, but does not fill the plot. fillcolor([n,m]) : sets the fill colors for both sides. n,m are color indices (0..15). wirecolor(n) : sets the color of the wires. project(x,y,z) : projects the coordinates to the screen, just in a solid or wired plot. Returns {vx,vy}. solid(x,y,z,i) : Works like solid(x,y,z), but does not connect the i-th row to the i+1-th row. This produces disconnected solid plots. view([f,d,a,b]) : sets the viewpoint of the camera. f is the zooom factor, d the camera distance to 0, a the angle from the negative x axis and b the angle in height (measured in radial coordinates). twosides(f) : Turns the different colors for solid plots on or off. See: solidhue # !searchfile,dir,cd dir pattern : Lists a directory of the files matching the pattern. searchfile(pattern) : Searches for the file pattern. searchfile() : Searches the next file with this pattern. See: cd # !mouse mouse() : Waits until the user has clicked into the plot window. Returns the x,y-coordinates in plot coordinates. If the user pressed escape, the function will return 0, not an 1x2 vector. See: setplotm # !name name(var) : returns the name of the variable var. See: varwrite # !pixel pixel() : returns the width and height of a screen pixel in plot coordinates. This helps avoiding unnecessary computations. # !playwave playwave(string) : On some systems, it is possible to play a wave file with this function. # !plotarea plotarea(x,y) : works like plot, but is only used to determine and set the plot coordinates. # !polyadd,polycons,polydiv,polymult,polytrunc,polyval polynomials are stored in vectors with the constant coefficient first. polyval(p,x) : evaluates p at x. polycons(v) : returns a polynomial with zeros v(i). polydiv(p,q) : returns {h,r}, where h is the result of a polynomial p/q and r the remainder. polymult(p,q) : returns p*q. polytrunc(p) : truncates zero coefficients. See: polysolve, polyroot # !polysolve,polyroot polysolve(p) : computes all roots of p. polyroot(p,x) : computes the root near x. See: polyval, polycons # !printf printf(format,x) : prints x in the format, where the format string is a C type format, as in printf("x=%15.10f",x). # !setkey setkey(n,text) : sets the function key n to the text. # !simplex This is a simplex algorithm. It takes three parameters: simplex(A,b,c). The return value is {x,r}, where x minimizes c'.x under all x with A.x<=c. If r is 0, the minimum is found. If r is 1 the problem is unbounded, and if r is -1 it is infeasable. # !resize resize(A,[n,m]) : resizes A to an nxm matrix. # !time,wait time() : returns the time in seconds. wait(n) : waits for n seconds. # !repeat,break,end,for,loop,#,index repeat; ...; end; This is an eternal loop. It may be ended with return or break (usually in an if statement). for i=n to m; ...; end; for i=n to m step i; ...; end; This is the for loop. loop 1 to n; ...; end; A faster loop. The loop index may be called with index() or #. # !if,elseif,endif,else if condition; ...; endif; if condition; ...; else; ...; endif; if condition; ...; elseif condition; ...; endif; if condition; ...; elseif condition; ...; else; ...; endif; These are the three forms of the if statement. # !function,endfunction,return function name (parameter names) ... return ... ... endfunction This is the general form of a function definition. There may be more than one return statement. See: {, }, parameter # !comment,endcomment comment .... endcomment Brackets for a comment in a file. The load command will show the comment, unless this is turned off. comments on : turns comments on. connents off : turns comments off. # !dump dump "filename" : Turns dumping to the file on. All output will appear in the file. dump : turns it off. # !exec exec "command" : executes a command on some systems. # !notebook notebook "filename" : allows to load notebooks on non-notebook interfaces. The user has to press return before any command, unless this is turned off. prompt on : turns the prompting on. prompt off : turns the prompting off. # !{,},multiple return {a,b,c} : returns multiple values from a function. {a,b,c}=f(...) : assigns these values to variables. See: = # !=,assignment variable=value : Is the general assignment statement. The variable may be a variable name or a submatrix of a matrix. See: submatrix # !submatrix,[,] A[i,j] : defines a single element of a matrix or a submatrix (if i or j are vectors of integers). If an index in i or j is out of range, it is neglected. Thus A[i,j] may be an empty matrix (0x0 size). A[i] : defines the i-th element of a 1xn vector or the i-th row of a matrix with more than one row. A[:,j] : The : denotes all rows here. This is the j-th column of A. A[i,:] : The i-th row of A. See: = # !parameter Parameters of functions are passed by reference, unless they are submatrices. Be careful not to change the value of a parameter! If more parameters are passed than in the definition of the function, the function name these parameters argX, where X is the position number of the parameter. If the parameter has a default value in the function definition as in f(x,n=3), this value is used, unless two arguments are passed to f. If a paramter is missing as in h(x,,4), the default value for the second parameter is taken. If the call contains a ; instead of the , to separate parameters as in f(x,y;4,5), parameters 4,5 are extra parameters, which may be passed from f to other functions using the args() function. See: args, argn # !(,) Round brackets are used to group operations as in (3+4)*5, to call functions as in sin(pi), or may be used instead of v[5], if there is no function with the name v (else v(5) is a function call with parameter 5). # !: i:n : returns the vector [i,(i+1),...,n] for integers i,n. x1:d:x2 : returns the vector [x1,x1+d,...,x1+kd], if d is positive, where kn is maximal such that x1+kn<=x2. If d is negative, we get the vector [x1,x1+d,...,x1+kd], where k is maximal such that x1+kd>=x1. For the comparison with the bound, the internal epsilon is used. See: epsilon # !gamma,gammaln,betai gammaln(x) : return the logarithm of the gamma function at x. gamma(x) : return the gamma function at x. gamma(x,a) : returns the incomplete gamma function. This function is not scaled between 0 and 1 (divide by gamma(a) to do scale it). betai1(x,a,b) : returns the incomplete beta function for non-matrix arguments. Used by: beta,betai See: fak # !map map("f",X,Y,...) maps the function f to the elements of X,Y. If X,Y,... need not have the same sizes. But there may be only a single column number different from 1, which will be the column number of the results (same with rows). # !nelder,brent brent("f",a,d,eps) returns a minimum close to a. The function goes away from a with step size d until it finds a good interval to start a fast iteration. Additional parameters are passed to f. nelder("f",v,d,eps) for multidimenional functions f(v), accepting 1xn vectors. d is the initial simplex size. eps is the final accuracy. Used by: neldermin, brentmin # !runge1,runge2 runge1("f",a,b,n,y) does n steps of the Runge-Kutta method to solve y'=f(x,y). y may be a 1xn vector or a real (the initial value), (a,b) is the x-interval. runge2("f",a,b,y,eps,step) does the same with adaptive step sizes. The initial size is step, and the accuracy is eps. Used by; runge,adaptiverunge # !besselj,bessely,besseli,besselk,besselallr,besselmodallr besselj(x,a) the BesselJ function of the first kind at x with order a. bessely(x,a) the Bessel function of the second kind. besseli(x,a) the modified Bessel function of the first kind. besselk(x,a) the modified Bessel function of the second kind. besselallr(x,a) returns besselj(x,a), bessely(x,a) and their derivatives simultanously (works only for real arguments). besselmodallr(x,a) the same for the modified Bessel functions. # !toeplitz,toeplitzsolve toeplitz(v) returns the Toeplitz matrix T to v. v must be a 1xn vector with odd n=2m+1, i.e. T(i,j)=v(m+i-1-j) toeplitzsolve(v,b) solves T\b fast, where T is the Toeplitz matrix to v. # !shuffle shuffle(v) shuffles the 1xn vector v randomly. # !<,>,<=,>=,<>,~= a #include #include "cyacas.h" #include "sysdep.h" #include "stack.h" #include "express.h" #include "output.h" #include "yacas2e.h" void do_yacas (void) { char s[270]; scan_space(); char *p=s; strcpy(p,"PrettyForm("); p+=strlen(p); while (*next!=0 && *next!=1) { *p++=*next++; if (p-s>255) { error=1; return; } } strcpy(p,")"); header *hd=new_string(s,strlen(s),""); myacas(hd); } void * YacasHandle; int YacasStarted; typedef void (*VoidFunction) (); typedef void (*CharFunction) (char *); typedef char * (*ResFunction) (); void init_yacas () { yacas_init(); YacasStarted=1; } void yacas_test () { if (!YacasHandle) { error=1; output("Yacas not found!\n"); } } void myacas (header *hd) { header *st=hd,*result; char *arg; char *res; yacas_test(); if (error) return; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("dir"); arg=stringof(hd); yacas_eval(arg); res=yacas_error(); if (res) { output("Yacas Error:\n"); output(res); error=1; return; } // Print output: res=yacas_output(); output(res); res=yacas_result(); int n=strlen(res); if (n>0 && res[n-1]==';') res[n-1]=0; result=new_string(res,strlen(res),""); if (error) return; moveresult(st,result); } void myacaseval (header *hd) { header *st=hd,*result; char *arg; char *res; yacas_test(); if (error) return; hd=getvalue(hd); if (error) return; if (hd->type!=s_string) wrong_arg_in("dir"); arg=stringof(hd); yacas_eval(arg); res=yacas_error(); if (res) { output("Yacas Error:\n"); output(res); error=1; return; } res=yacas_result(); int n=strlen(res); if (n>0 && res[n-1]==';') res[n-1]=0; result=new_string(res,strlen(res),""); if (error) return; moveresult(st,result); } char *call_yacas (char *s) { char *res; yacas_eval(s); res=yacas_error(); if (res) { error=1; return res; } res=yacas_result(); int n=strlen(res); if (n>0 && res[n-1]==';') res[n-1]=0; return res; } void interrupt_yacas () { yacas_test(); if (error) return; yacas_interrupt(); } void start_yacas () { if (YacasStarted) return; yacas_test(); if (error) return; yacas_init(); YacasStarted=1; } void end_yacas () { if (!YacasStarted) return; yacas_test(); if (error) return; yacas_exit(); YacasStarted=0; } void exit_yacas () { end_yacas(); } void myacasclear (header *hd) { yacas_test(); if (error) return; if (YacasStarted) end_yacas(); if (error) return; start_yacas(); new_real(0,""); } euler-1.61.0/src/yacas2e.h0000644000175000001440000000042710331174452014046 0ustar ericusers#ifndef _YACAS_H_ #define _YACAS_H_ #include "stack.h" #define YACAS 1 void init_yacas (); void exit_yacas (); void interrupt_yacas(); char * call_yacas (char *); void myacas (header *hd); void myacaseval (header *hd); void myacasclear (header *hd); #endif euler-1.61.0/NEWS0000644000175000001440000000000010263641122012236 0ustar ericuserseuler-1.61.0/TODO0000644000175000001440000000152010263422471012243 0ustar ericusersLet we know the features you would like to be supported by Euler for Linux bouchare.eric@wanadoo.fr pujj@plasa.com TODO ---- * urgent * interface - review preference box to let the user choose fonts * general - add support for dlls (functions and new meta drivers) - add parameter control via a cursor widget (for interactive graph change) - add support for sound io via OSS / arts ? - direct graphic printing via gs | lp ? - interactive view change for 3d graphics ? - toolboxes (signal, control, ...) ? - improve events management : use a thread for calculation and pipes for communication with the user interface. * meta - improve the postscript output if possible (hatch is very slow) - add support for pixmap output ? * future - rewrite the kernel to get rid of the fixed stack size and have more modular code euler-1.61.0/docs/0000755000175000001440000000000010331246762012510 5ustar ericuserseuler-1.61.0/docs/screenshots.html0000644000175000001440000000352307522242710015736 0ustar ericusers Euler - screenshots
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Screenshots

The main window

The graphic window

Others graphic screenshots :

euler-1.61.0/docs/links.html0000644000175000001440000000414107522242735014522 0ustar ericusers Euler - links
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Links

Euler links

  • Dr Grothmann's Euler main page,
  • my home page with a package to download and some examples.

Others

euler-1.61.0/docs/style.css0000644000175000001440000000037707471446174014403 0ustar ericusers a:link {color:#993300;text-decoration:none} a:visited {color:#993300;text-decoration:none} a:hover {color:#663300;text-decoration:underline} a:active {color:green;text-decoration:none} body {font-family:Helvetica,Arial} td {font-family:Helvetica,Arial} euler-1.61.0/docs/index.html0000644000175000001440000001246707522242761014522 0ustar ericusers Welcome to Euler
english deutsch
français
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Welcome to Euler for GTK+ ...

This is the GTK+ based version of EULER for Unix / Linux systems. It has been ported to GTK+ by Eric Boucharé on the base of Dr Rene Grothmann's X11 version. Euler was started by Dr Grothmann. He also maintains a version for Windows systems.

EULER is a program for quickly and interactively computing with real and complex numbers and matrices, or with intervals, in the style of MatLab, Octave,... It can draw and animate your functions in two and three dimensions.

Euler features :

  • real, complex and interval scalars and matrices,
  • a programming language, with local variables, default values for parameters, variable parameter number, passing of functions,
  • two and three dimensional graphs,
  • marker plots,
  • density and contour plots,
  • animations,
  • numerical integration and differentiation,
  • statistical functions and tests,
  • differential equations,
  • interval methods with guaranteed inclusions,
  • function minimizers (Brent, Nelder-Mean),
  • Simplex algorithm,
  • interpolation and approximation,
  • finding roots of polynomials,
  • Fast Fourier transform (FFT),
  • an exact scalar product using a long accumulator,
  • Postscript graphics export

and lots more. To meet the Windows version, it still needs some work around the following items :

  • calling of functions in external DLLs,
  • sound playing.

So, what is it for ?

Suppose you have a non-trivial function and you want to discuss it. You could use one of the plot commands of EULER to get a sketch of the function. Then there are tools to determine zeros or local extrema of the function. You could compute its integral. You could even produce plots of this function with a varying parameter (as a set of plots or as a three dimensional plot).

As another example, suppose you have data contained in a file. EULER can read these data form the file and produce plots of these data, fit polynomials to it, do further computations etc.

In a last example, we assume you have a numerical algorithm to test. You could provide a prototype of this algorithm in the EULER programming language. This is usually done much quicker than using a classical programming language. Furthermore it is interactive and you can use graphics to verify the algorithm.

EULER is an ideal tool for the tasks such as:

  • Inspecting and discussing functions of one real or complex variable.
  • Viewing surfaces in parameter representation.
  • Linear algebra and eigenvalue computation.
  • Testing numerical algorithms.
  • Solving differential equations numerically.
  • Computing polynomials.
  • Studying interval arithmetic.
  • Examining and generating sound files.

The drawback is that you will have to learn a language. It is not a difficult language. However, there is some learning involved.

euler-1.61.0/docs/german/0000755000175000001440000000000010331246762013761 5ustar ericuserseuler-1.61.0/docs/german/screenshots.html0000644000175000001440000000424107522245064017212 0ustar ericusers Euler - Screenshots
Über Euler...
Neuigkeiten
Screenshots
Dokumentation
Referenz
Beispiele
Download
Message Board
Links
Kontakt
 

Screenshots

Das Hauptfenster

Das Grafikfenster

Einige grafische Screenshots:

euler-1.61.0/docs/german/links.html0000644000175000001440000000566307522245036016002 0ustar ericusers Euler - Links
Über Euler...
Neuigkeiten
Screenshots
Dokumentation
Referenz
Beispiele
Download
Message Board
Links
Kontakt
 

Links

Euler Links

  • Dr Grothmann's Euler Einstiegsseite,
  • meine Homepage mit einem Paket zum downloaden und einigen Beispielen.

Weitere

  • die gtk Seite,
  • die gtk/gnome - Liste der Anwendungen,
  • dillo, ein sehr kleiner Web-Browser,
  • rox, ein sehr netter und schneller Dateimanager.
  • lout, ein hervorragender Textformatierer (ähnlich LaTeX, aber kleiner und einfacher zu erlernen).
euler-1.61.0/docs/german/examples.html0000644000175000001440000004572207522222432016473 0ustar ericusers Euler, Deutsche Einführung

Deutsche Einführung

Grundsätzliches

Euler ist ein numerisches Laboratorium. Numerisch deswegen, weil Euler keine symbolischen Termumformungen vornimmt, wie z.B. Maple. Die Stärken des Programms liegen daher in der viel höheren Geschwindigkeit und in der einfachen Handhabung von großen Datenmengen.

Am stärksten verwandt ist Euler mit MatLab und seinen Nachahmern, wie SciLab. Als 1988 die erste Version von Euler entstand, steckte allerdings auch MatLab noch in den Kinderschuhen. Daher hat Euler zwar den gleichen Ansatz wie MatLab, ist aber nicht voll kompatibel. Ich habe in vielen Fällen die Syntax genommen, die ich für besser und einfacher hielt.

Im Prinzip ist Euler eine Matrixsprache. Es existieren sehr mächtige Funktionen, um Matrizen und Vektoren zu verwalten und modifizieren. Natürlich kann man das für lineare Algebra und Geometrie benutzen. Der Haupteinsatz liegt jedoch in der Erstellung von Daten- und Funktionstabellen.

Bevor wir aber dazu kommen, wollen wir kurz die Befehlszeile von Euler vorstellen. In der Befehlszeile können Sie Kommandos eingeben, die Euler berechnen oder ausführen soll. Die Zeile dient außerdem zur Eingabe von Funktionen, sofern diese nicht aus externen Dateien gelesen werden. Geben Sie zunächst ein

>(5*4+3/2)/4^2
      1.34375 

Geben Sie diesen Befehl in der Kommandozeile ein und drücken Sie anschließend die Eingabetaste. Falls Sie einen Fehler gemacht haben, so können Sie mit Cursor-Hoch in diese Zeile zurückwechseln und den Fehler korrigieren. Euler berechnet das Ergebnis sofort. Deswegen nennt man solche Systeme interaktiv. Natürlich werden die üblichen Rechenregeln (die Operatorpriorität) beachtet. Beispielsweise wird 4^2 (steht für 4 hoch 2) vor der Division berechnet. Euler kennt auch die üblichen mathematischen Funktionen. Außerdem kennt es komplexe Zahlen.

>longformat; sin(1+1i)
                1.298457581416+0.6349639147847i 

Hier wurde außerdem noch auf ein längeres Ausgabeformat umgeschaltet. Das Semikolon hinter dem longformat-Befehl verhindert die Ausgabe des Befehlsergebnisses. Man schaltet übrigens mit shortformat zurück.

>longestformat; 1/3
            0.33333333333333331 

Dieses Format ist so lang, dass die interne Rundung deutlich wird. Auf Wunsch gibt Euler auch Brüche aus.

>fracformat; 1+1/2+1/3+1/4+1/5
             137/60 

Intern wird jedoch immer mit double-Zahlen gerechnet.

Wie man Vektoren eingibt, wird weiter unten im Abschnitt über lineare Algebra besprochen. Wir erzeugen hier als Beispiel für die Verwendung von Euler anstelle eine Programmiersprache eine Reihe von Zufallszahlen.

>z=random(1,1000);

Falls Sie das Semikolon vergessen haben, werden die 1000 Zahlen ausgegeben. Dies können Sie mit der Escape-Taste abbrechen.

Mit dem obigen Befehl wird eine 1x1000-Matrix (also einen Zeilenvektor) mit gleichverteilten Zufallszahlen zwischen 0 und 1 erzeugt. Dieser Vektor wird als Variable z festgehalten. Es ist nun einfach, mit diesen Zahlen zu hantieren. Z.B. berechnet man den Mittelwert mit

>shortformat; m=sum(z)/length(z)
     0.509271

Statt length(z) kann natürlich auch einfach 1000 eingesetzt werden, oder cols(z), was die Anzahl der Spalten von z ergibt. sum(z) berechnet die Zeilensumme von Matrizen, in diesem Fall also einfach die Summe der 1000 Zahlen.

Damit ist es nun nicht schwer, die Stichprobenstreuung zu berechnen.

>sqrt(sum((z-m)^2)/(length(z)-1))
     0.285003

Euler enthält auch eine Programmiersprache, mit der sich neue Funktionen schreiben lassen. Diese Funktionen befinden sich in externen Dateien, die geladen werden müssen. Daher läßt sich derselbe Effekt wie oben auch mit den folgenden Befehlen erreichen.

>load statist
Statistical Functions
>mean(z)
     0.509271 
>dev(z)
     0.285003 

Um etwas Komplizierteres vorzuführen, zählen wir, wie oft eine Zufallszahl größer ist als die beiden benachbarten. Die beiden Randelemente sollen nicht mitgezählt werden. Das geht so

>sum(z[2:999]>z[1:998] && z[2:999]>z[3:1000])
          323 

Wie funktioniert das? Der Vektor 2:999 ist einfach der Vektor der Zahlen 2,3,4,...,999. Setzt man diesen Vektor als Index für z ein, so werden alle Elemente mit diesen Indizes aus z ausgewählt und in einen neuen Vektor eingetragen. Anschließen werden zwei solche Vektoren miteinander verglichen. Dies ergibt 1 an allen Stellen, an denen der Vergleich zutrifft und 0 sonst. Dann werden noch die beiden Vergleichsresultate gliedweise mit und verknüpft. Die Summe der vorhanden Einser zählt genau das, was wir wollen.

Dieses Beispiel demonstriert recht gut, was man mit Euler anfangen kann. Es ersetzt in vielen Fällen eine Programmiersprache. Dabei stehen zudem noch mächtige Funktionen in einfacher Weise zur Verfügung, für die man sonst eine Bibliothek bräuchte. Euler ist quasi ein interaktives Laboratorium der Numerik.

Einfache Plots

Da Funktionen auf Vektoren gleidweise wirken, könnte man einen einfachen 2D-Plot folgendermaßen erzeugen

>t=-5:0.01:5; xplot(t,sin(2*t)*t);

Dies erzeugt einen Plot der Funktion sin(2*t)*t zwischen -5 und 5, weil t ein Vektor ist, der die Werte -5,...,5 enthält mit einer Schrittweite von 0.01. Das Ganze sieht dann so aus

Als Parameter für xplot werden zwei Vektoren erwartet mit x- und y-Koordinaten der Punkte. Die Punkte werden durch Linien verbunden. Daher kann man auch andere Kurven in der Ebene plotten, z.B. erhält man den Einheitskreis durch

>t=linspace(0,2*pi,1000); xplot(cos(t),sin(t));

Allerdings muss man das Ausgabefenster in die richtigen Proportionen bringen, sonst ist der Kreis eine Ellipse. Die Ausgabe wird dabei angepasst. Der Vektor t wird hier nicht mit Hilfe der Schrittweite wie oben erzeugt, sondern mit der Funktion linspace, die die beiden Grenzen und die Anzahl der Teilintervalle erwartet.

Hier ein Beispiel für eine hübsche Figur.

>clg; hold; plot(sin(4*t),cos(5*t)); hold;

Der Trick mit dem hold sorgt dafür, dass kein Rahmen gezeichnet wird. Im Prinzip dient dies dazu, Plots mit anderen zu übermalen. Das Kommando clg löscht die alte Grafik.

Einfacher als dies alles ist die Verwendung von Funktionen in Strings. Die obige Funktion läßt sich wesentlich einfacher mittels

>fplot("sin(2*x)*x",-5,5);

plotten. Der String kann dabei entweder eine Funktion in der Variablen x enthalten oder den Namen einer selbstprogrammierten Funktion.

Solche selbstdefinierten Funktionen lassen sich entweder direkt in der Kommandozeile eingeben, oder von externen Dateien laden. Wir geben eine Funktion ein, die durch eine Fallunterscheidung definiert ist. Sie soll x^2 rechts von 0 und -x^3 links von 0 sein.

>function f(x)
$if x>0; return x^2;
$else return -x^3;
$endif;
$endfunction

Dies definiert die verlangte Funktion. Die Eingabe erfolgt interaktiv, wobei durch die Änderung des Cursors signalisiert wird, dass Euler sich im Eingabemodus befindet. Die verwendete Programmiersprache sollte ziemlich einleuchtend sein. Man beachte, dass x keinen Datentyp hat. Die Funktion funktioniert daher für alle Datentypen, die Euler verwenden kann und die in der Funktion Sinn machen, insbesondere für reelle und komplexe Zahlen. Für Intervalle, die 0 enthalten arbeitet die Funktion übrigens ebenfalls nicht korrekt.

Für Vektoren von Zahlen arbeitet die Funktion ebenfalls nicht richtig. Daher gibt es die möglichkeit eine gegebene Funktion auf alle Elemente eines Vektors anzuwenden.

>function fvec(x)
$return map("f",x);
$endfunction

Nun kann die Funktion auch geplottet werden.

>fplot("fvec",-1,1);

Mit einem Trick geht das ganze auch in einer Zeile.

>fplot("(x>=0)*x^2+(x<0)*(-x^3)",-1,1);

Natürlich kann man auch einzelne Punkte zeichnen, oder Balken. Als Beispiel erzeugen wir ein Bild der Binomialverteilung und legen die entsprechende Normalverteilung darüber.

>n=20; b=bin(n,0:n)/2^n;
>setplot(-0.5,n+0.5,0,0.2); xplotbar((0:n)-0.5,0,1,b);
>color(10); style("m[]"); hold on; mark(0:n,b); hold off;
>color(4); linewidth(2); t=linspace(0,n,300); m=10; s=sqrt(20/4);
>hold on; plot(t,1/(sqrt(2*pi)*s)*exp(-(t-m)^2/(2*s^2))); hold off;

Hier werden verschiedene Stile und Farben gesetzt. Diese können alle mit reset() zurückgesetzt werden. Barplots sehen etwas kompliziert aus, weil sie die x-y-Koordinaten der Balken, sowie deren Weiten und Höhen als Parameter erwarten. Einfacher ist ein mark-Plot, den wir als zweites über die Zeichnung legen. Beachten Sie, dass alle Plots gemäß den in setplot eingestellten Grenzen skaliert werden.

Kurvendiskussion

Kurvendiskussionen kann man mit Funktionstabellen durchführen, genau wie die Grundfunktionen des Plottens. Es existieren aber genau wie dort Funktionen, die direkt mit Ausdrücken oder benutzerprogrammierten Funktionen arbeiten. Als Beispiel betrachten wir die Funktion sin(t)/t.

Zuerst verschaffen wir uns einen Überblick durch Plotten.

>f="sin(x)/x";
>fplot(f,epsilon,4*pi);

Dieses Mal haben wir darauf verzichtet, eine Fallunterscheidung zu machen, und speichern die Funktion einfach als Ausdruck in einem String. Deswegen werden wir im Punkt 0 immer eine Fehlermeldung erhalten. Um das zu vermeiden, plotten wir von einem kleinen positiven Wert epsilon aus. Dieser Wert wird auch dazu verwendet, Zahlen auf ungefähre Gleichheit zu testen (a~=b).

Nun berechnen wir die erste Nullstelle, die natürlich Pi ist.

>longformat; secant(f,3,4)
3.14159265359

Von Interesse ist vielleicht auch das Integral, die wir sowohl mit Gauß als auch mit Romberg berechnen, und die Ableitung.

>romberg(f,epsilon,pi)
          1.85193705198 
>gauss(f,epsilon,pi)
          1.85193705198 
>dif(f,pi)
       -0.3183098551892

Wo ist nun das Minimum zwischen 2 und 6?

>m=fmin(f,2,6)
         4.493409448108 
>dif(f,m)
    -2.457683194734e-08 

Wir wollen zum Abschluß das Integral von f von 0 bis t als Funktion definieren. Dazu verwenden wir eine Funktiondefinition. Die Gaußintegration funktioniert schon korrekt mit Vektoren, so dass auch unsere Funktion mit Vektoren arbeiten wird.

>function g(t)
$return gauss("sin(x)/x",0,t);
$endfunction
>fplot("g",epsilon,3*pi);

Plots von Funktionen mit zwei Variablen

Neben den im vorigen Kapitel erwähnten Plots, die praktisch eindimensional sind, kann man auch Funktionen von zwei Variablen zeichnen. Die einfachste Art und Weise ist ein mesh-Plot, der die Funktion in drei Dimensionen zeigt.

Dieser Plot wird mit

>x=-1:0.1:1; y=x'; mesh(x^2+y^2);

erzeugt. Dabei laufen beide Variablen von -1 bis 1. x ist dabei ein Zeilenvektor und y ein Spaltenvektor. Werden solche Vektoren verknüpft (hier durch +), so entsteht eine Matrix aus Werten die alle möglichen Kombinationen enthält, hier also die Elemente x[i]^2+y[j]^2 für alle i und j. Diese Matrix wird bei der obigen Zeichnung als Niveauhöhe benutzt.

Wie im vorigen Paragraphen kann man auch mit

>f3dplot("x^2+y^2",-1,1,-1,1);

die Funktion gezeichnet werden.

Interessant sind auch Höhenlinien einer Funktion, die sich mit

>fcontour("x^2+x*y^3",50);

erzeugen lassen.

Dabei wird 50 als zusätzlicher Parameter übergeben, der für die Feinheit des Plots sorgt. Es sind weitere zusätzliche Parameter (der x- und y-Bereich, und die Anzahl der Höhenlinien) möglich, über die man mit

>help fcontour

Auskunft erhält. Einen guten Überblick über eine Funktion verschaffte ein kombinierter Dichte und Höhenlinien-Plot mit

>color(5); fcd("x^2+x*y^3);

Die Abbildung leidet etwas unter der Reduktion auf 256 Farben.

3 Variablen

Euler kann auf sowohl einfache Weise, als auch auf flexiblere Weise Plots von dreidimensionalen Oberflächen erzeugen. Über die Variationsbreite der möglichen Plots gibt die Demo Auskunft, die man mit

>load demo

(oder dem Menü) startet. Wir zeigen hier deswegen nur ein Beispiel.

Um dieses Bild zu erzeugen, muss man offenbar eine Karte der Oberfläche anfertigen. Dies geschieht mit Hilfe der folgenden Befehle

>x=linspace(0,pi,80); y=linspace(-pi,pi,40)';
>X=cos(x)*(1+0.5*cos(y)); Y=sin(x)*(1+0.5*cos(y)); Z=0.5*sin(y);
>framedsolid(X,Y,Z,3);

Der zusätzliche Parameter 3 ist ein Streckungsfaktor, der dafür sorgt, dass alles schön im Bild ist. Der Blickwinkel kann mit Hilfe von view eingestellt werden.

>view(7,1.5,-1,-0.5); framedsolid(X,Y,Z,3);

Lineare Algebra

Es existieren die üblichen Funktionen der linearen Algebra, einschließlich mehrere Funktionen zur Berechnung von Eigenwerten, und zur Lösung von Optimierungsproblemen. Damit es nicht zu leicht wird, verwenden wir gleich eine schlecht konditionierte Matrix.

>a=0.34567; d=0.87654; c=round(sqrt(a*d),5);
>A=[a,c;c,d]
      0.34567       0.55045 
      0.55045       0.87654 

Diese Matrix wurde so erzeugt, dass die Determinante sehr klein ist. Die Eingabe einer Matrix erfolgt zeilenweise, wobei die Spalten durch Kommas und die Zeilen durch Semikolon getrennt werden.

>det(A)
  -1.6207e-06 

In der Tat ist die Determinante klein. Wie lösen nun ein künstliches Gleichungssystem, dessen Lösung der Vektor (1,1) sein muss.

>b=A.[1;1]
      0.89612 
      1.42699 
>A\b
            1 
            1

Der Punkt steht für die Matrizenmultiplikation und der Schrägstrich A\b für die Lösung von Ax=b. Es treten hier keinerlei numerische Probleme auf. Verändert man aber A ein klein wenig, so ensteht eine komplett andere Lösung.

>[a,c;c,d+0.00001]\b
      3.99809 
    -0.882734 

Dies spricht für eine schlechte Kondition der Matrix. Wir berechnen die Eigenwerte und den Quotient aus dem Betrag des größten und des kleinsten Eigenwertes.

>l=eigenvalues(A), max(abs(l))/min(abs(l))
            -1.32604e-06+0i                  1.22221+0i 
       921701 

Man kann auch alle Eigenwerte und Eigenvektoren auf einmal berechnen. Die Eigenvektoren werden dabei normiert, so dass wir sofort eine Diagonaldarstellung bekommen.

>{l,v}=eigen(A); v
               -0.846862+0i                 0.531812+0i 
                0.531812+0i                 0.846862+0i 
>D=diag([2,2],0,l)
            -1.32604e-06+0i                        0+0i 
                       0+0i                  1.22221+0i 
>v'.D.v
                 0.34567+0i                  0.55045+0i 
                 0.55045+0i                  0.87654+0i

Wir wollen nun annehmen, dass A auf 5 Stellen genau sei, wie das aufgrund der Zahlenwerte zu vermuten ist. In Euler können wir dazu die Intervallrechnung verwenden.

>B=A+~-0.000005,0.000005~
Column 1 to 1:
                      ~0.345665,0.345675~ 
                      ~0.550445,0.550455~ 
Column 2 to 2:
                      ~0.550445,0.550455~ 
                      ~0.876535,0.876545~ 
>B\b
Determinant may be 0

Wie man sieht, läßt sich das Gleichungssystem nicht mehr lösen. Nimmt man eine Genauigkeit von 6 Stellen an, so wird ein Lösungsintervall berechnet. Die Funktion ilgs tut dies in etwas optimalerer Form, so dass die Intervalleinschließung kleiner wird. Am genauesten Wäre der Schnitt zwischen beiden Lösungsintervallen.

>(A+~-0.0000005,0.0000005~)\b
                         ~-7.057,2.32962~ 
                               ~0.17,6.1~ 
>ilgs((A+~-0.0000005,0.0000005~),b)
                       ~-2.10793,4.10793~ 
                      ~-0.951715,2.95171~ 

Weitere Beispiele dieser Art finden sich in der Demo.

Weitere Hilfe

In dieser Einführung konnten wir lediglich einen kleinen Einblick in Euler geben. Als weitere Experimente sollte man die mitgelieferten Notebooks laden und ausführen. Interessant ist hier die deutsche Einführung in Form eines Notebooks. Unter Windows werden Notebooks mit der Kommandozeile geladen. In Unix verwendet man das notebook Kommando.

Eine Demo wird mittels

>load demo

gestartet, oder in Windows über das Menü. Alternativ gibt es eine selbstablaufende Demo.

>load autodemo

Beide werden, wie alle Euler-Kommandos mit der Excape-Taste abgebrochen. Sie können ruhig auch andere Euler-Files laden, die mitgeliefert wurden, ebenso wie die anderen Notebooks.

Die Dokumentation von Euler befindet sich in HTML-Form im Unterverzeichnis doc. Bei der Installation der Windows-Version erhalten Sie Links darauf im Startmenü. Falls Sie unter Linux mit RPM installiert haben, so finden Sie die Hilfe an der üblichen Stelle.

Außerdem steht eine Online-Hilfe zur Verfügung, die sie mit dem Kommando

>help fplot

aufrufen können. Es wird entweder ein eingebauter Befehl erklärt, oder die Hilfezeilen einer Programmdefinition ausgedruckt.

Die Hilfe im Help-Menü von Windows erklärt lediglich die Besonderheiten der Windows-Oberfläche.

Abschließend bleibt mir noch, Ihnen viel Erfolg mit Euler zu wünschen.

Dr. R. Grothmann
euler-1.61.0/docs/german/index.html0000644000175000001440000002354207522436512015766 0ustar ericusers Willkommen bei Euler
english deutsch
français
Über Euler...
Neuigkeiten
Screenshots
Dokumentation
Referenz
Beispiele
Download
Message Board
Links
Kontakt
 

Willkommen bei Euler für GTK+ ...

*Übersetzung von Thomas Meyer.

Dies ist die GTK+ basierte Version von EULER für Unix / Linux Systeme. Sie wurde von Eric Boucharé auf Basis der X11 Version von Dr Rene Grothmann nach GTK+ portiert. Dr Grothmann begann mit der Entwicklung von EULER. Er betreut auch eine Version für Windows Systeme.

EULER ist ein Programm zum schnellen und interaktiven computergestützten Rechnen mit realen und komplexen Zahlen und Matrizen oder auch Intervallen im Stil von MatLab, Octave... Es kann Ihre Funktionen in zwei und drei Dimensionen zeichnen und animieren.

Euler Features:

  • Reale, komplexe und Intervall-Skalare und Matrizen,
  • eine Programmiersprache mit lokalen Variablen, Standardwerten für Parameter, Funktionen mit variabler Anzahl von Parametern,
  • zwei- und dreidimensionale Graphen,
  • gekennzeichneten Plots,
  • gefüllte und Gitterlinien-Plots,
  • Animationen,
  • numerische Integration und Differentiation,
  • statistische Funktionen und Tests,
  • Differentialgleichungen,
  • Intervallmethoden mit garantiertem Einschluß,
  • Funktions-Minimierer (Brent, Nelder-Mean),
  • Simplex Algorithmus,
  • Interpolation und Approximation,
  • lösen der Wurzeln von Polynomen,
  • schnelle Fourier Transformation (FFT),
  • ein exaktes Skalarprodukt durch Benutzung eines langen Akkumulators,
  • Export von Grafiken nach Postscript

und eine Menge mehr. Für die Windows-Version ist noch einige Arbeit an folgenden Punkten nötig:

  • Aufruf von Funktionen aus externen DLLs,
  • Sound-Ausgabe.

So, was ist's nun eigentlich ?

Nehmen Sie an, Sie hätten eine nichttriviale Funktion und möchten eine Kurvendiskussion durchführen. Dann könnten Sie eines der Plotkommandos von EULER benutzen, um eine Skizze der Funktion zu erzeugen. Es gibt auch Tools um Nullpunkte oder lokale Extrema zu bestimmen. Sie könnten das Integral bilden. Sie könnten sogar Plots der Funktion mit verschiedenen Parametern (als ein Set von Plots oder als dreidimensionalem Plot) erzeugen.

Ein anderes Beispiel: Stellen Sie sich vor, Sie haben Daten in einer Datei gespeichert. EULER kann diese Daten aus der Datei lesen und zeichnet daraus Plots, erzeugt Polynome, führt weitere Berechnungen durch etc.

Als letztes Beispiel lassen Sie uns annehmen, Sie müssen einen numerischen Algorithmus überprüfen. Sie könnten einen Prototyp dieses Algorithmus in der EULER-Programmiersprache schreiben. Dies ist gewöhnlich schneller erledigt als bei Benutzung einer klassischen Programmiersprache. Und es ist interaktiv und Sie können Grafiken benutzen, um den Algorithmus zu testen.

EULER ist ein ideales Werkzeug für Aufgaben wie:

  • Untersuchung und Diskussion von Funktionen mit einer realen oder komplexen Variablen.
  • Veranschaulichung von Flächen durch Parametrisierung.
  • Lineare Algebra und Eigenwert-Berechnung.
  • Überprüfung numerischer Algorithmen.
  • Numerische Lösung von Differentialgleichungen
  • Berechnung von Polynomen
  • Studium der Intervall-Arithmetik
  • Generieren und Überprüfen von Sound-Dateien

Der Haken daran ist, eine Sprache lernen zu müssen. Keine schwere Sprache. Trotzdem, ein wenig Aufwand ist doch damit verbunden.

euler-1.61.0/docs/german/Makefile.am0000644000175000001440000000017610263642513016017 0ustar ericusersSUBDIRS = images germandocdir = $(prefix)/share/doc/euler/german germandoc_DATA = \ *.html EXTRA_DIST = $(germandoc_DATA) euler-1.61.0/docs/german/Makefile.in0000644000175000001440000003545110331246752016035 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/german DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(germandocdir)" germandocDATA_INSTALL = $(INSTALL_DATA) DATA = $(germandoc_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = images germandocdir = $(prefix)/share/doc/euler/german germandoc_DATA = \ *.html EXTRA_DIST = $(germandoc_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/german/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/german/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-germandocDATA: $(germandoc_DATA) @$(NORMAL_INSTALL) test -z "$(germandocdir)" || $(mkdir_p) "$(DESTDIR)$(germandocdir)" @list='$(germandoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(germandocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(germandocdir)/$$f'"; \ $(germandocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(germandocdir)/$$f"; \ done uninstall-germandocDATA: @$(NORMAL_UNINSTALL) @list='$(germandoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(germandocdir)/$$f'"; \ rm -f "$(DESTDIR)$(germandocdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(germandocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-germandocDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-germandocDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am \ install-germandocDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-germandocDATA uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/german/download.html0000644000175000001440000000666007522522026016464 0ustar ericusers Euler - Download
Über Euler...
Neuigkeiten
Screenshots
Dokumentation
Referenz
Beispiele
Download
Message Board
Links
Kontakt
 

Download-Bereich

Erfordernisse

Um dieses Paket zu kompilieren, brauchen Sie

  • ein Unix / Linux System,
  • ein X11 Display
  • das GTK+ Toolkit Version 1.2.x

Download

Das neueste ist 1.60.6 : ChangeLog

Es enthält:

  • die Quelldateien,
  • die Dokumentation (html) und
  • viele Beispiele.

Sie können fernladen :

Euler kompilieren

Das devel-Paket und Kompilator C muß installiert werden (XFree86-devel.xxx.rpm, glib1.2-devel.xxx.rpm, gtk+1.2-devel.xxx.rpm). Offnen Sie einen Terminal, wo das Archiv sich befindet.

tar xvfz euler-1.60.6.tar.gz

cd euler-1.60

make

su (für root sein)

make install

Sie könnendas Verzeichnis jetzt entfernen. Euler laufen lassen :

euler

Für eine kurze Einführung tippen Sie

load demo

sobald das Textfenster erschienen ist.

Sie können auch  make clean  und  make uninstall  eingeben, um Objekt- und Binärdateien zu löschen sowie die installierte Version zu entfernen.

euler-1.61.0/docs/german/images/0000755000175000001440000000000010331246762015226 5ustar ericuserseuler-1.61.0/docs/german/images/Halfpipe.gif0000644000175000001440000002032007522222432017436 0ustar ericusersGIF89a‰ě˘˙˙˙ö˙ööööJŢJbb!ů ,‰ěţ˛Ę+ ľH§uX溯ţč…ähv¨–멾,ěĆôl·¸ś×»­ü 0H‹ČŁ2É\:›Đ§4JťZ«Ř«6ËÝz»ŕko¬+óĚ74ůĚN·×î8|®®żírôwîó˙~€‚…„‡†‰bxtwŽyŹŤ“’•Ś—‘”š’žŠ ź˘ˇ¤Ł¦Ą¨„–™¬›­«®±°łśµŻ¶˛2§»©˝ĽżľÁŔä´·ÇąČĆÉĚËθĎĘÂÓÄŐÔ×ÖŮŘ ŃÍĐßŇáŢâÝĺŕă&Úę‚ííëđŰńó×ćäçî îţ÷ŃŮŻŕ#z“č“ŔO‰ż… #Ę›(ńČŔ‹µţ](Ŕţćá;‚1†4’Yʼnî 4ôă±Ĺ—'cNY’LĘ+aµ¬I’¦Ďž@e»™…c°ťBa*MúäçČDmň¬°ÓéÔ«V­25äŹ]B¤KĂnMµgJ\9Ć©Ş¶ěS¬$dž¨Č¨\°róŠĺâ¶ŮYiüúÂiř­ŕ¶Űčuřq—Ý˝Z.†Ląibż.Ő¦5ܶ*çĎpAOV ŃÚĘŃ,=˘^]첤ł®!M…çÚ±AĂÚJ4ŢéĘ0%gýé0ŐĚą7ęN>ç¶qܢ÷Ţű›¸<ÂĂł«b˘ëó~ßąg~9˛yt“V×Î~ ŢöđÍ/,ŻşýźäĹßÇŁ.}ţ|ëaŔ€h ¨ŕ‚ đ ďYÇ‹HóéÇ‚$Ř`"`†vâ†$¸`Y¨bżř·#’8âŚ"–hc4†âŤ"á­ˇř}p(â‘7z衎Jć¸ä“Úء’6®K~ć]5Ęt1Á8Ą—L~iŕ‘a’٤™4B‰ćš;Łöar2AKTV.`d› ˛ąăŚIzćźlRéć”bĆH ‘Ǩbp©QމˇźPn¸¦šeZ 'i‚Řiźź¤±FžËáç›Q:i©‘rZë¦NâŠäˇmćZ)¬ fiŹŁyŠ€Ş¤ęhţŞč:ňɬ§ˇ"-ˇÔŢ*­®¤č®Ún[©§˛ŁpcüÝĄ.++·¶:-‚‚&ym§˘ž™í“†2ű-¸ĹDl–N¸¸ şÝţJ¦ł`¶‹¦”ĐV‹íľĎîęn¬énŰ­«Ą.Zç±­“«XŚoÁ$':o™öٰµ+ĎË2»úZ‹đĹřľš1Ї]7“&°) S©®·¤6˲› Ëlo´/Ó{­˝‡*̧·c 1Îáňň#8ŐŹwŇ€:tĹS;jÄ(7MhÓK»ě¶ĂS÷J¶ˇ°VŤń†'ćí[1 lČv!¶ÉD—ść¬j+ívĽ¶˝¶®3›‰xÝ4˙Ýŕƨlm' ł}\a YďČÎ]*䊗řřÓ‹+ëřëÜJn1É5+ęŐ>š7Řé¨ÔEÇI„^¶ĺëžř»Żľ:´m3_ăĄl/ńěµ§[ąĐbĚßgĆHWĚ˝¤í”{I»ńŠ;őĂô6˙¶ű5Â|kŇw×ôčăă^`Îü›°Yď˛'ŠĐp±Cťüŕ·<¦5nđ‹ čRć«?ÝŹzŠZé‚•5j„_ćŇ—něĺ/w3řSST 'a4że.Ť†îŚ3]%CBBÍeĤc>“g*ímł–kA#+éËo‚ś]ă¶â8Á–­S[5ţ„'3•™L‰nq…™bɲi0ůRdî€!ú Ü%+ąŇ]¶±ĄăĽ †ś4@‰ÎyÉ´ Eß)-Oí±!]ćQƤJnŤëç,µŇÍ™IäeT˝iɕƴŞáŞ9Ý<Ć3§WTÝO)HV‹j±‡(L Ąč)ÇWÚÍ|"i8\R+Č› %ç]zŐKľ‘“Ôf:?IJÄaq§=M¬+š#Bâđ`­´Ř«ŮÖ°bÍźsjęĘLFUŻ—ÄęACËW`‚RIçLěWE QÄęt˘ŻÝŁĘT[Ö穲jhMëeeµfáîS×ô ¤¤ŔÍ#R5śS˙-B1©\–ú*SÝě3§{:‹Őµ…%kY#ĆÓyNo“‘5*ŃyJň°CK…$z–ĎR5Ż}ŐeiE[SÜ"©„ď%®~Ú]ţĆ6LŮ-ťÍ|2ńn˛ˇčě§đ§ş_ Hw6q$·©ŇŃörľ¤ĹđK%iT{.nDçÔ/ca›ÝÚú·ż˙eĄ¨•kŐćň•žTĄuCb¤ýWÓĎ~ßł]ő~>ô}´ůÍÎţηž‚o>0ŰŢúĂKö¸RPe›˛VÓ^f24Ł"·wPť'u•|aćMm¶x«wz¸zvöu‚un¸·>řz&řdřTTÔäQ7ctr¦‚ćCyK§oVî×~Xµwš‡mž‡­µs÷gv?¨XťVs ÷fÓ'lŘe·]zf6pgdSF>ąmES7ĎŁ!1Ń€#׸C†9čoś·r„uč`¬÷uA؆8@„7‚©v‚nxnž–…o5<ׂÂó‚zX)$eyL÷€Ëu|1E|š×wTçm{őg‚u€LČ„{Dx¦ö„]m…Ňţ”@Źg€r¸vű—j '…ć€`ž§*§Ů–rŮv]AW„JŚc„pČUÝĄ†oXx©dBP†€˛‡jJ8™n„Ł{ŇoĂöˇd«ŔG˘Ű™f(—w¸‰'Ů”ýç -ĘOľ¬î¶§çŞ.¬ĺ‰ăXjŐc/ÉZźhłˇeŮšq‹Z‰ ‘awŕIp ž¶d~JĄz©žy°!ĺ Ą¨€:oh9›”z‡•˝¤řsއăJ©€¦}` Âgk˙eč¦˙蓪›Č€ j°1Ş— +Ż`){ňéa¶W§]Dµ."˝†.GeµÍšŚ}[ą Y­…P´F|({˘•™«˙ęYyú˘SK® k„QčlúäśY[“ Ci‰1!Řlb™±¤jő%[ …0 °µ:kÖŻŰzf†š Ę©Ż/,K¦{‹¸śÄ_ëx03—˘´Uí ŻÄłźĹ]g !şk K  µş~rۤń‘+›·r¶§ şq)ź«JM»‡ŽaDI돹td€‰¸ôzŚ@ęBşÖ{ @Ź\c %G«%»­Ii™”‹’ µćęk‹§ćişZc˙Ä:{t)go i•ËrŞ»şÔ7Ô›¨Ż+‘ßđ±ŽZN§ŕ«»¨­I«|⪰vűąś›fçvW6Ş‚VÎëŻGľ×&}XřżTYÁH~!«ŻŘy ŢS˛&K«Jůc ěWˇj—ٲ™Š·Ŕ‹©2ěr2żzV’qŠşö›~󕿥ںZÁ?+~:Ḷ˛¸Ä%°Q,†WżYe· jÉjQKÁ.&±…đŮ­ěťQŚş¤ŞŽFĽgčĘ}‡ ´Ýű Ĺ—ë¶×°cřŹ{[°čk ăšľÝxĂé8Lµ§‘YL˛y †•zo«ś«‰ř)SrĂp˛P» »˝A€W˙ĽY’Ą…ČnşŔëĹź9[R«xO;żo5?5»˛˘«Š™LZP*ŞPîĘŞGĽĂ¶w»‘9˘ŕ0ĎľmZĹ,f»”Ą{ÜŔÂy·ĺFâĘlđY¶Ą+f{mSÜžĚRČ\mĺÁe nAÇ ÍxÉo Ü~׌\˝{w÷´<ĂRë˘ćٲ1ç·|l+ Bk˙ ZčL ĐűÂYĹ$ă6M,±ĹŔPβܭ-<Í·ęĽí<żXĽ]ś6z‘ÜÇĚ‹ieÚlŔI9Ä|ΊLu1ëÁ§Xä7L,ÎLÚĐv̦ąúâLüŔTI—§lŁâ±}ŰťgLĚŐČc˙0­˘>ĽĐ˙ś[D\Ža¬˝¨bЉ€¶"!ÍÉBLÍÉç»=ѬüÎż…x;ś¦ĂÖC©@ť»ú|Ćz©HÝÉđ÷}4"Žg7¤u'ať€ÉCŕбȔŽöĘÝo7<Şî„2BşzdŞĽ·_YűĽ MĆF-ĹxÔŘśÔ:>âhd@Ž{ĐÇ aJZͱHĚ}ÍÂZ˝Ő¨<ŁĆËn‡MŃ:­ŚÁKťIŠÔCťČ±|˛ze™ČŐs9;ˇrM×vШ&A Ě( ÓV˝ĎĐÔµř,ĂkŃ–Žę;Č®ýQ·VÔ ýŘţÜ»9haIüB2“$ŚŐk’KÜ@śÖâôFĽŘ˙Čü˛q ‡-Ý›h­¬Éă»Đ“Ű2=—ŹýŇT˝Ű][5ŔĂ^+}ˇR.Ö‘}Ü}Ű>\µŕżńý “˝˝’F(‡«‹ß-ĚßzśÝRlµŞQůKa&lhČj©×ýÍÂA­´±(~ˇ{Áü‰䴸Ćhgݤتß朢žŔ˘Ýc‰(ŕ;9z a.0ŢMśŕ? ´źMĆg˘>^娽ŘŁIłĆŐyî5ÔWăU d ľáXť*V:SiŔC˛ÁŮăđ9 -©ÇŕŹ6UÇ%Nܧ“łeşb­áa>ćŕ›~çͤ+Ľ»w|˝‰ź+đ"[ň{®Hĺ˙.üŇJ‹W§ÄA¬5‡LÚ~č?ŽwĄîÖ‘í–Ö¬™%ţ.łIDpü¸AçE˛m —j]˘µÜöFy"č ăî÷Ëb~غȓTęoú^řü»ŮwŽŘ˛± Ăđ3‰vŢWMÔ‡>ŁŮ“^Jş„î㊨ç;î|˝č Ýh}kP8ONÝ!: "BJzçÂ>Ú?^"ľţ l%_7ęažďŚ˝Ő­Ő8٨ŘV>ŇëN~¦¦öNî_uřMî âí‚컩ë$}ńjňmĆRÇě÷۶­žź™ .切Íhî?ě˛Lń˙® €®÷śĎ÷ľŢ§>ĹßŃ˙ÇÎŘÉ®î#˙ŻćS†ŕÜÔ>Ź"7Íö.đwžçÝŽYY°!H ômŤńS/·ę—çP,Ô/eÎş]¬‹4)±ËŞX)aÇR?ó¤Îá‹ro‘$ać"?ő߯DĎăt,ŰC¬w’&c75»`É”Ní÷3oóV5uX˙ ˘ŹÓč¶{ď÷rż»1^΢-âoß6őîB`l_ŹAt”6/ěB¶ 9˙Ď­ßâţőlîź˙ődXô܆υEÜř1›ŤLŃřĺ˙ĺň8ů\p#Ĺ×ńß2żęÇ~rhFŇĽoňÖgÓ+ďćP-ďűŢ_8uy/ř‹d÷ĺpĎxŻŔ?Ďúţłżůţ=ýśoňÎćÚď?.üńţyďőWŻńꀦkĂßn.ۜšrżu!čUT“ťćj‘-JÄF,× ŕşPđůż ‡Â˘ŕCĘ&ó™„.ŁÔ©Ő™,\X› ă*Ĺ‚«ârřLFŹ×ćŰ;jaâ§ČŢ1ŃYśžëLJ"§bA3#3ŁH`VĐŁf–VedI„y©™É¤µĄń°9ÚYJzjšzúĆÚĺć «g·'R§B×EXř1H’ˇp¸€ŮÓŞĚ&ŮLÉü<ÉSđiě Ť-­}˝} ×úVňQ˘|—ű‡7ň‹›îR8ČhożŔč„ĚÝ_© p™ţ@NÔ’<80!Â…–‘CQĐą9ńfk—׹{0ľXKc=a÷„5ňI!ŞnŮüµôVĄŕË™,kş´ s‰8{ŠkµŃ–Pt„t•ŰĹK˘,y$ďácd ¦ś3U2Ľ:P¦Ő­X»&tĺs\„^cçmąčÎ\˘~ ů1—bOˇć5Ő˝7űĆÄË7g`š~±…u8n-yˇţdÜXîqĆŐ-eś.ŘÓbv™<Š$¸0×Ńy/Q#Ťş´jb[´xG‚ٵh[vuôč;ŚĽÉŢ©UŃ~©Ť >^gÁĐĚ 7G3\¨ĆĘR„{=·ä‹!·ąöĺµţ/€CeDŮs—ĹW»/˛ü˝üö›ŕPwÍłµu>’ç-ę–cěüŇN ä90 >'ĺđ}C@ç\„"ß„É]¸^`í(˛ńÇE˛x¨–bÚyÇLůś"ŤüŔŹ…Ď8Hă{ńŐc^‡5vbęŠeşEÖRćŘ‹\\€pČ" ¦ôČ|Č(!†UBrÚ•ZRŮMOÓqDŹOuXYe°ŤÉËY­0 xßx$‚ç)`V%eŽ4âĄgžXý”XŠs]Zc9˘™Ľµ9dŠJĹĄ™ úŕ@śźwriĄ…Zm™i§iĘ!ŹÔ}9 -‹­¨á 8`QÝ­ů¦˙’ľ —˛gi®5nÚgŻDxi߆â†Ö‡mť:’Ó 0!‚×,ÄŘEi”}bzk¶śÖÉç¶ŢB&O=ţ,Č&%Ş˘ę®Óhl°.9˘‚”NĺéľŢ+%Żşî»_ŢBwH˝‚®©ńü·jÂ(ľ[ ´)Č`Jűbűm˝ČmJqĆPp.=¤‚éѸç&›”żh˛ WĂeęr1GŘYńŚüÎÜg–ř:Č‘‰„ş&đ˛†whŞ‚´¨nĎB‹ň.cIsĚNk|©LOí Çä…šŮklj(Ł ·+$<"Ą™K1µF uÓ7Ó|ŁÚ«ĺ ň°´¬ćĘIšk¨Ş «ŚÝÁţjŮ&+T>”cÚ†SM“ÔÚ®a}\ý±qśűsĐ•őwć%=·´‚†¸kŹÎoۤ/÷ăbrG÷Á\3v(‘© ÝuHŇF’ 6ÍřÓˇ'§¸ď‹çŕqĹG°;”Íü™ż ý-ľőm’î> źÓénŹŢ­öŁ 9~yp ¸Čú5_·ŢîĆĘňšă_×ýÄżc/|ýJH=•˙ËzuhĹĆą»afd‘[×ÉÜ…8U/K˝óŢö¨/ö+|ÂťGeŞ‚b?¬rL>MÎE×ă]ţz‡B—ŕŹ~ÇÉĚŕ–µë|$™ Śô8uô-iJł^(A Â˙(~Ţűßţ*⍨|°ŕ‡śĺ‘ÉiN‹ÚĎŁ¨ăYĽv^9™Î©^ćŹćĺ@GËҡ›o[@íČfˇ ]˛¨ĆLIPÓzÔÄ&u'şÇŞÚXÎ9Ö1…+Ë ö¶•ÖłŽ4µű±©‰×ĹňŰŞkČŕđ.¨‹Ö.¶ąŤM ­řµM7ć- ŕ÷9%?ľvąk]í*ɇ›Ţµ7ÉY=o-Mo­ĎŤpt—˘ lÔ ŽÉ‹ľB‡PłŤµ˝ń}ń|oÎeö·í<2¦ŢÁÖN¸Éţžnńbŕ ą‰Ak‰2ŻMăŻů˝÷Âń;ołÄĚFćě4 rĺD?9ŽŞákű:⨽)=í›ŰăRĎ,Ňéüp&ă¸3ÍXqŐ‹vŁłŤPK‡î¦ËäôtC˝ŃS§ů×ÝžŤś'ąě`†r-öĽ‡= xQ:Ďü¤H[{p/|Ű˙—gÝËÔҒб»w˝K^đ fĹŃuŞkŢđoç˘ÁSčuÍO~ô‘§<ćŹ.MÎoń«§‘çÇÎa—žô´_HĹsuúĚ«~÷¬ç}/í§RŃĎ~řµżbG#s€úľőĚ_~`&}1ćźřÔ?Ýń˛vÝ÷~űťďľ{c¦'=—ĽúäźţÚ¸ ÜžűÍgżó/dÔ¸{źŔ寿ů…ţ­űýówż˙µű ewhy‘Ů·~ýÇ€í×€†'W02uH|§€Ú÷€˙瀨Y2|xg#XŢ“|AÄČ)Č‚jP‚$/¸-¸5¨‚6y2;h€4x?čAČC¨=¸‚GH„VR„Dč„“—;euler-1.61.0/docs/german/images/fcd.gif0000644000175000001440000004675007522222432016461 0ustar ericusersGIF89a\ŐöňöćććŢÚŢŐŇŐÍÎÍĹĆĹĹÂĹ˝ľ˝˝ş˝´¶´´˛´¬®¬¬Ş¬¤Ą¤¤ˇ¤śťśś™ś”•””‘”‹Ť‹‹‰‹…{}{{y{sussqsjmjjijbebbabZ]ZZYZRURRPRJLJJHJADAA@Aebe9<9989141101),))() $  !ů ,\ţŔpH,ŹČ¤rÉl:źĐ¨tJ­ZŻŘ¬vËízżŕ°xL.›Ďč´zÍn»ßđ¸|NŻŰďřĽŢŚęŁN€'~„…‚…‰Š‹ŚŤŽŹ‘’Š•Ť—”Ś™ť}źš†‰ť€„§¨Ş«~źR(0±±11‡12¸ą3»Ľ34ż4‡556ĆÇČÇ7ËĚÍÎÎ8ŃŇÓÔŐÔĎŘŘÉŰĆÄŢ'Ţá5ŔŔ˝Ľ¸'ą´ë´˛˛'.ńň-ôő-,,'ř,*ýţ*&Lśh˘„Á%FśÁa‡O|HńC‡'.vŘŔ‘#  CZ8aˇdI (O ¤ˇe„Čśy‚Í› N$ŘąÓŔţ @  pbčP€(ŕD€§@ŠWî`°Ł(— s»Č w˛lh™Y[Ë6ZÚ´f“}'ΛX`g S·5FV.ŕÉsaŻ>}řţů#8° B 6„QbE‹3něŘńDH%™\IA%K—/gŞ®y“ÁNť<jĐQĄ'–>ô´ę‰ŞWŁŔr×÷–Ś®yďҨk¬ě¶·hŰJż][ÜcÄčÖµ+6ďqŻĹ˙L¸đ˝Ă‰ Řř1d… GP~řÁ2EŤ7sŢÁłH“$Y@Zi§ˇv‚j21NŻĹÔOF UÔRH)USQůFUpPţ"Kq^H/Ę1—Śs6T‡Ít,â â3×a§ÝvÄÜĺ]:|m%Ţxó·bę­ÇžcŹ5$™|óŐw~íÇQź™š€„ZL€¨vk<ĺÔSP>E(!…H9uáoUI%V0bĽŚX˘8× ó˘Z-Jwg316GŁ86‚ő]Žěě(X<杇^±ç^BF:”¤’÷1y‚“ ů—”ˇ Ň•4ÍÔZM]z ¦lbE&R6•憯yőŐ•WyuWvĂl×çŻŔ+×\Ű)—«9â^V/ĽpBłÍ’Ď>ů°°ÂµŘ®Â¶Ű6Ö¨ $„î $`îą˙ ¤{Bş xŕî»'p ďĽÔ{B˝ä«o€śNpÂO``K\0kŁ–šÓ©Ba…ş™ ‡O PX<‡¸Pk_č w,/»Š#Ś7–l˛YßüiěÇ»$+òî4ű,´Ňş@m>ŮbË-·Ţ$î¸ĺžk.» ¬Űî»îrďĽÔkŻúFÍŻI˙ đŔ|pk[–ęÓ©> 1SN«=Ňzř!Ç!ŽřqČ sÂÉt—\ Ž(Ë.Ă,‹ĚĐľPóÍ'ä|íÎÝ~ îĎ$ś ôĐěŤtŇJ3í´˝Që;RżU_=°Ö[síĄ?U›QKĺFvSfRě„ĹhK‹‡ţoÂ9ŰşŠ•w8ÇČ=wÝŔ#÷î+󍣲}ýíĚ‚K{3Î9#ž‚@ß2>îăD}4Ňň.-ďĺg>%Ő˙{ĺK ;  čŁ'đ é§@an­:ĺz€ÄN«;€°m{ś€0ÜvW§@ďd€°Áîj´·Źő-yĚ\´śG8ĂIŹzŤ˛^ă°—˝LÎóňř4p‚Ěa@ä+ßůЧ5› Ě5 rßű„ˇ ÍŻUMąP ‚@¨ŕy,0O`ĺ‚ŔAkcn2®XĺčÎwĂ[ŕG6#@9±;L| Ž"č,šIË<+(\¶ÔÓ­ť= > yśąŚĆ.¤y„LkÚ˝.ţ'µ|UŕŽx´ZŔ&@ŕŹ0Ř ¶€B.ŕ @€"9›S٦†«ŇáxčŹ@ÜL›•›µ±ub‰LĽ"9ňć»)ĘMŠÜĺ/¨—ă˝ ‚1“`óČĆ0ŽQ1<ăÖŃ85Š@{mtŁ÷čEB:ÖŹxô×ůŘG@j 0d!O°Čj–LDyę–"I%P҇AL/Fž@±“ěčX:Xé U.•Ľ‚báiEw˛R‹…âbg9ZŠńZdĚe v‰F_Ş+“fÓž†ŻĚť™wě\ŔéÇ@‚‘ŇĘK–QĆ«e/ Ř*SŰy¦:ÎĹNyšOź.Ȇ© ‡Aź1îČH˘ Ą*Ĺdg ĘQľc‘ +?·˘Zn‡»ěĺj˙ŕa @ć"t·QÝJń¶Ňü#}°yĄË{Vz•(çu†ňθľbž÷ÂăžŢ÷Ç´ÜŻ łŢBřĐGžO&b`K9úŃ ‰ô©Lá\ąŞ™Ö4§łşQŹx%B©Iý­ť‚Ő'-k=¤…Ö´Ş6ťěőŠ0Ž•ëz7đXôe-nMKDD {؇» ±Ť+šŮŚFđĄś˙H{Ę“®@…­-ç^8Űšž,eą˝ČşD÷¸‡€‚řŚŕQR_Ĺř<6ĎŞčMŻĽ÷ÜZvÖY•6çŰŽ{Ýçżđo“ú•U΂$Đ>ćgä šĐf4%3Y#űąÔg@łąŃ¬D%˙V®6‚°e-+ŕë'řş@öśŕaţtF.„źÜ=Ţ%ĘĹŰrŃ´>ź1ŤŰ›săĽďąÚ9Ď×ásĺ1o‚ýă?W@ô2nË=H—™ž.§çęś‘úÔÇw’«S ëZWŤ–9¬a±+ ěc/űŮÓţi¶ŕGzc2÷śŤ7Ąf˝{ŕňçZóđoý;đ‘%oöâÖçűôbâůşřĆ;ň‘ź<ĺ-ů&{dę›â|•@/h&Ł÷şéĂ^v˛<í®/9eŹâÚg+â|őYťĹ<ŢĂ;Ţ"~đE©âëŮř=VxɇxĽŐ[BĹxŔ•)}âB.ŇÇt˙Ôwy Ć`Ů7>žBqV&ßÇuáצvĺg~¬—~Frě×(źő†ł?‚ňř%k2‡zćVú‡gýw˙€ľVxą5€Ag€~•€ xtŚă8K‚`áh &%â)€*~‚ĺ§vaF‚ńʎ8ýp*nđ÷‚0‡_ö÷R4ř{¸x8z±ú€Č„ÁĆW×ň[ ¨€ tI¨„ —Ϧ)śBR8…*‡zxv[Č…"–~ó±†ěń]Ňłbu—{ş÷f>8 ˝W4Wcrh[ńVŠÇ§<˛„†+^vFfPl¤Tî˘P˙ßĂP&45ťG (q%¸\çgzŞWv”H_Čp‡‚ކf9-ć‰nĆIˇ(Š÷G_ĄXs§Šůo«ČEĚăŠôpRý5h;cl»t$HĹF…Ą‹őTľH¦!Ś[÷ëÓ`'vĺ‰Ë&†hf›8Ťj†{ôPZ±vZ٨Łč{¬őŤě„Ý8Ž~63ć¨(‡‹Ô3íFŇŹT9–ă4÷ňTU÷‹Ŕx>Ă űhb‡z!xv®Ěhr a‚ˇ8& €Ń^Ůjv71řz—ŠsFgé@rFůkű´‘§3ç-FĹ%9%©PŕSB&¤}öX ˙.á}˛%71~©÷Ź”x©“Á“%ŕ“Eg†?BNm†^©ŠIIŻŐ”:׆uŘ_»U˙ö#CFhCB$ьĵ.Će’»\âcUr>¨%hiŚă‚d—~÷Ę‘2Ť?‰8AR-kV”0H¦…ŤÄQŮ1‚9‘ŕč—mh›„ůËs‰BV†ă| 8=Ej4Ćhša}üA‘aT¶XËTUtQŃ$M°Q*˘‰pĄŮŚ©i¬© ‰†i(›1W›ľ©^J™›L‰oąŮŤČÓž~ÁŠÁI•7s€CETeä“GčKĚ©dK&űńd eÔIeĘDU˙XfUłťÜ©0ßÉláů…ăIžÜŇš-žhµžďć›m¸”‚ąk©(öŮřůgydűąx蟉“śĘ)4ĘÖśš`Š  m×XztiŮyUŐ>;QˇZ‰i=t”z—°™ž Š!j›óIźżç”#Š˘)z‡řĄźÔ˛‡·$Ł  Ś#Hx.ʶha)ĐŮp :ť Ú Ź…e‘Ąq `¤ €¤¤‰“oŤ“táB—Çą-OJ”Ö8›őgí ź"ŇŤ&Ž˝ŮĄ+*3`şbŠ-Ć9Łt¦ij.kÚśLŇ$;Š ÷ŁŽeq}t§Ej¤|ZÚ (.„Z¨‡ę‚˙-p‰Ş¨´YĄkźźdŠç¨PI©úĢřŠš©1úY=gЦ6:)ÍćlĄúd·XµGÎĄŞŃ%]ÇÝ™~“S€@šJj‰¨É¤(^ęŃWŘ’(E c1–Ť)ęžÜH˘Ä SđyŻ^jhçŘ‚é8¦‹ÁŽERpZ™„$™PLuü±y+I%WÇ}Íô\]ç3ůu7Y®—á–éj$ĘŇó®+·ňŠ—qxiŻ÷*·˛Ż.ĂĄöůŻK€ÉĘ‘±‚ęŃáÍŘKČ•“S}Ö§yQ"– zša]÷ ~oä. ˛±*˛ŚŁ8@ą3&ë[)kŤôÚ˛˙|ů˛ŔŞŻ#ŠĄŮž6śĘ·|ĘZ-<«ł÷ł «°HXd´NBČ/Č´ë´šVzŹH®SK !`µ¦©“Ť“µĺćx)е^űµ¤Ĺnô™˘2+ ůж<¨¶•złË‘p[śrëł@ ™X\y[}(±IŠhiM›i–…Qű ąHµJWË@C«Źëx’Żşúµ 8{Ż´&łŹ*"Î Ćęgş…łţć˘'·˙€‚tűy·ęRXLťŃ™´(”T(¤mŽhzéBPX‘“.ĘKě:{%kž®‰«žXNx‡”š˝,˝5‹ąl;ş@ŁÍÚ˙ć¶-4Ú€:yŁęFpG •XRĂ)ŕX30[÷B6ńľ!$żó[żhtż$[žc…ü»n5ăżő:¶ö9Ŕ4Ěgľ‰ąŔ©‘ćŔ¦ë¬ üŔĄ‰ŁG•éT˝Č9t*Ś1q– ,Â#<9”gÂđÂ)ĽˇúËÂQĘna+¶>H¶5˝ţjŔůąĂĎĂź ¬“b@.ÉŞ—‘PFĽPĹ„ÁQ3±Üę9˛u1ÂŻG0µîŇAT¬V…j¨YŚ[ś—É·ĽĆÎ;Ći|Ć0Ú‡¶8‡6`ĄÉ¦đAň’v¬9S“ÇŚŹśůBP,/»ű.ŮS4Š»¸Kú3˙„Ť·z†ýëČűÉ3,É“<˝ˇl-:°űÉźš `¤°‰vpÖ•l™—É/͕ʨa–˘âB7‘~ű1ľđAĹ.ľtd'¨‰Ň8Ťă…ž++Ą^üĹ‘ ĚřGÉŮX˝F¤źăŐĂ˙0‹©ëŽ#I4N÷śMyŘף’eË´¶ľČÍśáÍŕśT 0ÎĽTÎ|Ťl^ *ĂŤ ĎĹZŔ•LĎm{˝Ř+NřĽ ™şő€ldy˝·Ř§ vĐYW» - ×řˇťT}‰I=*Ćj­˛/1ĚŃ"ęŃń,Ě>řˇő\ĚĆlŇC׳)]·GĹŇěâŇřÓS'Ó˙ŕ)Ą¸Ćľ µ ˝Óß,ĹóŃjtš'ČC=”ˇÎmvx8 ĆLť¶7LĆ7;҉˝®yŇý€ş*-XwŰtKčş*ť2-Öł{mĆľh­ÓjÝÓŔ$Ń×1×ďס}VxíË˝×|m›8ĚoQí¶ĘşłU}şXyŘ ™•·Řω)Ž-eM…÷ ŤČÍ9=Ş€ŔÖó«Ů‘ÁŮŢuÎź ĄFý²”×ďlÚ„Ň×!-ŇÂé#čHŘB҇=\ŕ».¨Ł Ç`> Ů‘ÝŰX†qšö Ą`F«dłüŹ#¨?ăąĹ{{-Ľ–;€I]xĚŰ—ąŕ M˝˛d˝Ă™Ý˙ŻíĂeô(G¨“Íś¸ËÇđB9'YÇĄě‹%ÁÁĽué×ŢNňŢđ­ljDßábßë~{؉.ĚË,KĄîLŕřşŻ2NÝ~ŕ—Ú‘ î ěŕnrLánĤÜP¬Äz¤ĘňáOăŢŐ‡¸ł¬FŤ[ߏQt*΂·Ą˝{\ăb\ăÇÇ«€ťŕŮ»ă ln>ţ36ÄBľ»D^äa鋨¬äŞÁäĹääĎ ĺó!ĺ&ŽâÄ[Ľ,¸ż YąĽěß˝ă2ţĺ`ţ›ł™|9®ăšJ„i..kä!Ęo΋â#çŽĺ’ÎŢ(éä—‡¸R>ĺ'^ĺ |ĺ;čÉ;Ą0ŕ`®č˙‹NxˇË¶×ťÚ|šü‡nüĆIňĚ~áO–xśÇšů’é'5#¤đż}‹oÍĚĎżů Z,<čhčߤ]ë3ŢÔŢ®˘óÜŠR-Ż‚ľ©eú-ű¶H4ńG‹}śG±)ńy5ťĐ°ěĚ>L/$ěÓŹsšo‡Š”XŚíZLą„>Łí˛áţíâřđ÷9î?Uî .NčľÉ*ÍĎÔ°KĹ4^mľ~»}5¸ůţ 5BýíÄÍFÓ®°Ő~Ĺ\»Â Oą–ŰđJíí.ń~=•ŹÝ߇ĆćďÁKďP?/!˙+IÓW–Đú®/^/q$ȰÜÖ/żŮA-óŠŚđţڬđý˝¨˙đ;˙đ=ßEyńű€îCżń"ɰé2™Ţóşć[ubÍŰŘyň‘9Sďěýţď™đÍó\Źß^_- żđ±ůČ]Nö4îgź_¬ť˛Ëöë˝v«Ő¸H9sżôh÷NŹŢőůrÁ~˙÷Ä}PYÜ[ŹČżČ‡‘řýÝËŤîeůŐŤ¬9kî,lůW}AKŰ“i’NX÷›łŰ´ű ¤ŹE~úób´0â{>ßÖó(÷ čatI°iݱľ†˙ý=÷ÔÜ?şŠâÚfîłD_G¨tÓę»:ľĹ§RVťtjÍV˛üÍoÄĐ_µÓOýT%ˇ0•:‹*ĺrŐţt®N,©´Uµ¶\Yí‹Ë=uÁ/Ř\&ÇĐiőšÝvżájó|ö†µů«uĘŠ>ť––LOM††HOHD #EB()O>03?:8;N:6BE722NJ3.TWO*\_+&&Nd'"noO"Pz}}O0‰5Ž5NŽ9›9?;53O*)%#I‡Ž’U›üúöŞň˛ěľěčćâŕăĺßÜÍě^ػҳÎ[úţĆ…SqČ!n%´5ş©ZKŇ6uú4JT©SĄV±‚őJ-Y¸rí 6ذb%[ÖŚŮłN ~pXmˇŮ,á ‰Ŕq+ĘMé·ď^ľ.őĘţĚSş4R2÷đŮç˘_??2Qđ`›5:„řŇĹP¨.fÔ¸±–Gąx‘”‹Â¤±”ĘX¶tÉ)ćĚJ5ojÓ‰Ä8A?ĄDˇrŽčşvNa0•< dPŤN­úk8­\ąyýz-ěCMdO%eŁÚ ­ŘvüřöD\ą#éfDĹÚ¬ÄhAś1DÍ'F$ˇó3!ÂEe1tj:Ł\,SÖ®Ô2f©ű6O9ŃYáoZ ‰F®0 “ř䣏»đË öëĎ‚˙¤`@ Ä-AU4ĄÁ˝bN¸á&\oąĐ3C ă°C˘DÉdŁ»˘ľK'<ń §Ĺ^ŤBöÂŞQsĚ‹G Ň?"<Ҷ$}Ađ›Lm”— ‰2B*Rn= 2aËqÄ[lŹ/·;ČĘ UK|A3­oE7Í=9­ś±;5ÁÓůô´ŻÇü€rH@ŤpPB@pÉ&ť\”ŃĄ!nĘ ç¤” Kůg:Ć8ÓS1@UÔ3ŃäâÔ=R„bŐňZŚÓ«äb­“ÖńÄţ•Ą”’á“??TPb1öĐ UTÔŐÄYHŻa9i ˇö k˝ě°‹|Ćô–Lp÷Dr­2÷ Ó}uÝ9e­mĺ@Ţú×?ő–ßBďĺŹĎűÉk>[=8„°BPxŃ^ü†0ÄqbĽŻ˝bމˇâÖ)‹ż%5źqŻ(WŐ@X ůťŘeo!)‰!ĺ•9 č˘k†@ ŕŽ[‚a EˇżýřT)gťy.[8 …&:K ‘D1«°MŚëŽę–ę‹I k>:ö¸ ˝6č °•›ěáRV™%µ‘˝Űm N;nş“´»ćĽqÖ€ľú>p…ühźžţ8ÜśM»ăžŠß\v&Ż˘\ËWŔÜ<ôŔć|Ď5OfV6kmTLçŹH@Uź{ć^\ż7o˝eźÝÖ˛»]ŇÜ?{®pĂSL<Ź0—©â!wjqS7–µĘYÎyHŘŠV˘G2ę=*t˘c†öš$¤ }ďmŞcťĘ¤óáLG´Ăű¨áD/˛”ŃR0żŢŐxŠűßc¦Ćżaě ÉóÇ·VŔ"đk›“ާÔ@y™ĹlëQľ Ţ&u9É18¨>ěÜŐIđeyŁfmŤŃrăŔžąlä%ˇy ńfˇtUbsnťŰĐa;$/U,¨˙Żx’@łµĘb ­o EdÜĚW‹†1żd\U°6QO’(„ŞG^«JËާ«F$ş2KŢVžµ0_Aąk…YµBŤâWK$Ö˛>´~j˝hÔöëŔî5E–^ź'ÂĂnóŤÝ%d[’btfvłďüRR§ęÔ*hŐµG# ÷lűÝÖ­…HŹŚ»Pĺćő}ݨf}ŽÝ<^ó6Ţ]ě %S‹ĺg¶”mď{Ă÷ŮűćŚQÍ€ź Ő®ÎYP ÓDĎŚ«ô.§€ÚH+ŞO9ŞÍ®sĹą˝ńÂĆâĘĎ›ŇîQ*Oý,đ!É ßđwćNxÔěĐD0ˇŽ˙ ĐE&!Hf±lx¦·ŹWńűliq76€Ě&ź%ý&eýŘO~˙¡Ôŕó–)L:±Î>QcB‘rřŽSÎţORq‰Ł QÖ`đtp)¨QáńtQE@ +±a€Q„1™6ŃE. C𣭠§m«Í˘‘¦1,¬Đ ± e‘)¨{,`ťb§ť°‡Ʊ'Đ”ć/Q '7­ŮÁ2čôâńő°yř0a˘ł/ _ń$ş/ńO ˛mŇŁRgň %‘“#"Ů0Č–†ă°3R#Í€#óŤ™ Ď ťQę ńő±]řQýQ% ˛H`ň{ !éĹ&r{ń%ŇŁw,’ČâĎĄ˙†’(Ď`é’Ú•“>)ˇ9ăĂó“ö3©ó?Xs&ź¨&łs@Ž t"“f<´7Í3~s#ݲ#•ń#÷Î='>›ň3/Ł’ů?M“%QD7* G@W˘bs;}f ¸SJ†J”"K4FŁĆAźÉKݦ=ű Lu9ad>ô$«MW†^ę…űŽ”öŢÔ?_†IRtPÔżS,Ă37›ŕ'ýFµĺŮšéóÜ‹P=r5Q;SQÉ´QEóQĎć9'ő4Ą3/µ:˙˙ó:”Seóg¬(pĽâ6÷´EGu7‹đTeT<°FŹň’Ŕt˙Ä4>“S—3Cmőz"ŐŮÔűĄWE4N‹}šT@‡•¤Â~Đ‘E+’<- U;ĐÔ“˘¦P—1GŐZő.IŔ$kÍ WsÉC+u\ł NUN±“N’])Ä]Dz ůôJ/2KµAąT¦XőF]$§V)TVő긕`o•*í#\]ŇMSDSJ?Gb‘bCŐJ—U^çYU“>3ĄÍÔü5VV`™ł[q$M‰tM)uW-5f}5S5]…Őfg‡ćXu^ű4c˙ÔYµcôţ˙ľÔPGöhK6i·ŐL™6>śVRöG@Č•–ôj7őIíÔg¸Vg«ôb{öEË“l9VUkh«ő ź±G-T[ËôLWVMsŐHĄVa“Tf[ÓaŐoá;×kă'YăŐpçhÍvPŃV_q”ôúŐq™rłő)'7nácnÁ5jŰ´@6·jg–oköoo¶XáHpM7lŃ2uËVq!‹qŐֲؖGýď%—V—Ve˝Ő`]‰|7ĆÖj=kA·g×xŰ•t-‘,yÖ\|Ö…čuFßAZ-łTw)ŹÓmoW{›ö[[†wĹo©¶\ö\Mb×}'V}ß•} ×}Q÷g˙›—‘±u[5.EVze7­×v±7e«±rźörőónaöw X| xNŐUk§dtYÁc—W‚—‚“ z÷v×vÇôdU‘q×t÷uµwóvoÇ·oë4tĎw‘Ś5†żÖ•‚Kőpˇć†Łuä,d1_{řGQnůWný·eřeż×Â7x—xxť¸xˇřx¸bďIT­XlM5‹·Ôy»´‹‰–I–z+´vńrCx{YjŹ8€O|9—DWřa[xɆKhŠ-¶ŠI•Ź±Řź~ ‡7L‡_—i ůq«×GŻ·Ś)—‘-·n?tjQXoÍŐř’ç8“˙8gďxgř“k~U=Vď÷=Uů•ŚŘQĎ8wÓŘ‘1‰Ř– —Y8k19B4™dŠO÷Š™W‹í•~…Ó~Ł×h}[›ą•źy`ąąwŤ˝7‰o%r™›wŮ›{ąkĄ¸tg¸pÉن˙”W™×9•gw•#×]y‹XŤ™Ťń9›őy›Ë„µŽÓ7 ×·“Ç”Ëů ·§ŐŹ“yG—Ůdťą %zšIa3W€kY‰+ůs›Ř|mçź‘w ÷x%Óśi”‹SŚVúZi÷ť!:žłwžŃ¸ž+úžŻ§µŮ’ů™§yŮŁ¤X¤•—7C9~ˇőś˙Ťş~Ăe_uz[Z?ŘŚˇZšĄşš!ąŤ‰….&™fO'ý™«}Ů«ńŘ'™éD9Uzqz‡Q™­š™g5˘Ł™eZ–MŘ®ëćŤ;7§Éw§9ú›!śÁš†Ĺş¤ač°ź7±OYkÚy©Ű©AtDn»—W«:źŃ•‰#±Ż+6ZśĂşYý¸´OÚQ;dÁXĹŘť[¦#{˘©ą„k:’Ý8Ż…wݵV·)Š7Y }[´»°ëµ¨Q­3F­3ť“›µąăZ˛çş­ů¦m{źU&·˙Ƨyp« Ţw¨MÚ¬Ç;ťÓ:©˙µů­_™žy¦í6ş-»u˙0›’Ż:X뛯ďŰŻz»C:ŹŰ—ż#'x¸+ř¨ÓV±U;˝‘öm<Şś˛ü˘Ux±¶ÂŻűÂw[»Á™“9ü=Ľ Aś¨ç÷¬ĽĽ i |Ŷay„a<ľ%x3›Ć7ŐĆ»dzێ÷{’FŰ …Ŕ‰›Ä]׸yą•ą±]žŮ›É<–g›–Ł<…áXł«ÜnĽŁs\Ë5ü«{ĽËű[KĂ\ĽÇśĽńç‚3óĽšYą©Ű|]Îí™¶ĺŁo[ŠňÜłI´˙\’}c˙›ĐGÜĐ©uˇ›ŃúŔ!»˝ť›ÁgYsç›g%ĐÓŻ\ĎłüŁ˙ű<°Ĺ“‹>Ľă7hÇČ”Í|±W;Ĺ™ZŐ]®Ý<Ňť<Îa}şĄ\Âi=vl˝ź±¦‹ľÁţŹâ©ű‰^ŢIcŢâŃ#ę;ť~~çžă‡Ýă}ľëÝ9zŔ~čY˝á']Α^Öë\—ě˝éńťíµÂí1>îÍ3çM;yŢ‹?ţÜ>ďż>޶‰čáýďŁÝě§]â­ťâ˙éw]ń{}ę_ăç^çY=UÚÔŹť™őó%ĺÝ{óWđ=?é©ÝŰjÜđµ»ő]×ůýL_Źś¤żhő˙]©aáuöO‰ď›=ĺźťóĺ=đéÝ÷ď|íIżřťcř˙ćźůEśÜźżÄS›ëcú/żú3żďÇţŐ·÷e˝W@żđÁź« H¡©hLťRJĄŞé\AŁ'µÚşţb[®-×őúľNŕń f>ŁĎ±5»í~Ăăňxşn‡Ĺß.7{­®śD­8.-™ś•8>–ŚŚśHŽ\bŠ€€śl‚x€†zpśprh¤Şž`´şbXÄžÄRÔÚž  čîňöŘRÄĎľ¶¦ž¨jśžž‚znv†T[WVž m3!!¦6BM˛ř]ńmŤé‘•ݡÍÍÓ×ĂĹăç­»¤źS "$® ¸ŠşAz$‰’¤L¦y‚ŠTłeÉŽµ*FK\ľ>ö&Ś, “-kfę4iś@X»†mŇ6"Ýľ!HNĐżtZÖµ{÷ź{FŹÖ#jFßžuţţ±ţ0Ge Š‚%t´°’ĂK7IôĐáD‡˛6 M{"۶.Ŕ=—cÇ\ EŇ‚±c(U©$%Ń%µ!fҬI˘› śKt’“j%ż B•Â@ŞyłĚL_đ{úO2U«‹°fÝÚ°ë×OÇš=›íZ·lá^{®Ç» óÖÚŰ÷ŐßTYŠ" Ó0bmŠ;f"n§d*>+&™3wÍžż¸ íjT@ĄÁ]5’5Ň$®¬_‚}MÖělÚ¶oǝ˱·o_(:ęEŇp®¬Řq-fŘa39WtIä4uç\”eÚ)Őť†ö|^S|6Zç!’^#©µ·šCžtâţ4eÍ'[}µą…›ntuÔßG˙ś€&ůU\`‚%— s *¶ŘM>&adRfav`l·ˇ•rtƇ]„xŽT$&ršz(2dÉ{đ…#}őm@c[6ęÇ‘]:ňÂc€ť$äEJs‚‚Í%ů 8= H…|áÎU^ŮhYę!^ä•7Ő@¦!D¦{+~•&le±Ůć}pîFלtęb§Źx©2ĆíĘłŇęç‘Ř4ČÍ’:IHu‡v‘če:Zl nهOăUĘÂN+`ŠZBŞ™É)šŻ}*ălnâ—\€n§˘Şę0?ćéŞ*! ­µţ‰äs»FhČłżFţ‰č…‹klŁČ‚ćÔ˛“6űl´cN›bµ™°ߋنĘí[ů] n¸äŇi®p@§'»ĐĽ;«­1:/#Ń…Ó«PúÝ”Cő믕K:p THe0zbžp™]iŇ)¶1F<*Ĺ‹±Ž˙x®€éľĘL¬î†<˛Lňęzrt„úĘr.{řŁ2oĄ–5\…9:—hâz٨ČpĂž~jÜâć-Ňă˘Zg-=îĹÔë6Ó®!`u5%–ő[«\Ž×X€­ĄŘ1“ÝťŮb ˝¬Úíd•Ű(¦tź.ŠbÖ|vă çŢJ÷‡Âś0{଴ő1–…¸â!ť«Yţ)ÁdĘöNhhľÁîK%ć™s¶yŔüp)ÚÚ; TĎë áśé #ţę ˛y·myËőzßżĚ^ű·+»±uໂÁ+F<äČ:YËR† CD^Ů”",ęČz #GöF—î á{ ßř´•óŐČuHťodG;Ű '~R›_l§8üŐDĆăÚĘ”÷?}˝ $ ć VŹY•zV·—’@‚/ˇ š, ľIă ^ÚÂvě/CĘVýěnCŽa!š…Žĺqኂ٠i=¶‡ĘŇayx(#‰{b'X·ňµÎFę[ß<čľŔ .Šţęa3¨hBĂŤÂÓ"“¸¸/+ŚÂ >ĚČł…AŤ[đ ¦ŕFCŔa؆6č;®ŹçCß×çÇ'>MŻš"ďyĹ®(2… YB##÷HÉD’“äW-‰Lž@“ý‘'±÷Fí‰ň¤ ♆¸ ˛n•zÜ űčÄ ěM7¸qKmBeH+Z#‘‹LH(‹ŕHH‚‘zc”a%Ťé4ćA™śüÜ'ťĐNČQĄěJLü„JňՉ݊K+űöJp"Mśp!'[ĚYKtVCťş„Ä?ß Ěxňcžcł'‡đ }2ÓYÎ%4{6Ę9´ v„ŤÝš·Ü4´\łţűŕŢĽ5NŠš3[á Ő™Ë!d…§ygł‚Y™1Ž”¤ôŔd&Ő¸Oµőł Ju©4I 4Ăś`¦d©©›nŠÓ%vӶв–uĺN3ËÖÍľµ>q |64jŤ ©í,Čłp†ZĘ©öŻ­u-–LŔ}$ŤQˇ-" ´XE2NAa 4JĄ#łŘ˙ łSÚi6ośÍ@P?ĹÜć>WaŃ-íU¨»“Ď}ń…8\-ëÉÝ×z—ÁÉZ¦xË@q”W çEďLÔ‹¸ö ľoŕ껣űVö¸úMîl*řß Ŕe0G§ ŽęZ7Á©UŁ„Łúŕ7 öďx/|^j·¤DڇŮ+ ÷ŞDÄ$¦oZQÜÓ¶ŢÇ·Ę-â‹=`…I7”&‚űŞ/EůřÇŹŠ°„‡L°N"– ŢđŚ%ŃäwIʧXĆ«0Â*_öľřµĹ.ĺţÂćżđůr™Â Í1˘“:Ć.Źśf5ŻŞmď›±jd'€# đ”8'?ů˝đőó|ţ‰ab˙:Ĺâ*ôˇá:>E·Ń•pôA I›™yh,¦3Íć1ş ىsUć¬ä!ÚÔëĄUžUýVÚ•Řö¶{4’?Çâ>wcSá8–†Ĺ¸+p“ŻQŞřę‘=‰çw/ŤiM#›ÓĘöł Â3#(&Ú†i®ĂBˇgSđ9ľÇ·«ÓĘínÓE#·–ÓRîsĺË)âµ"Ţ͵A@%ź±·š5Íŕd˙á†CÍ\Ŕ j ę&rp‹(ĂĎ ·Ŕ«Cňp xűNóĄ8ą ‡qhś!7žtTVëĐ;€$˙±É…ň›©ÜÂP¸”żóĎśŕˇHEţ®óVóÜáoÚťţ,î6ŐçciĆŰĂńŽ×‹’›·‚…¶©?Řä«˝ú?ĘÁň#»Ľ1WXŘ›;v˛#ç:gxĎëôs¶ŻĘí÷űläŽ ¤«W4~ÄË™ď®ń}Ç’ü;±‹-řđč;ĺXůÖ[žxF,ľLŤ‡ńăőlWMľŐ•˙EŠ_|Ě;íĎÁŔ G$Őę ZÜL¦T^9=äQ˙.1·[lcĺ3(%dB×őLAbÝ óJkË»˘e°­ĂO•ńŹŹy()j„\‰DŞ6}Ť€őÁ ±ĐÓMš:Ŕ÷5}ßš…SŚßľ 9„Aü锎µŔÇc˙A ›ä‘OÍßś@ýEŔß|[1,_qěßóÉĘ»üőezFÎÓ‰\ó,`<4 áS¤Ä–ĺ  W±‡jTS‹p Ńx 6`7Ť`ý™`ŰRţĄ„çµ ĽÄ ®Č`cĐ Ţíť ©žß) =1ŕ‹IqÎľYB¶ŠŢúÍW$áš$TYˇĎ„ 0@a&ź,P`x€á`Ôâ`ŤMÜÄq‘ nßË`Ff!HOĘŢ !z8B^5YÓ»@B͆Mĺá>ˇý±üäŽó™!úß­Ä @‡"FŽŕO0>b$J˘wVauÚő´ˇč¤¶'˙Öoa“*%úbýˇŘěD”YQmŮEąŕýtĹ:啜^¤áKßyÁ0±–÷}2 Ęy‰Jâ1Éłĺ’nYĂ´ŃJou@5ź|ía”â3BÔ¬I”ˇµE9Uc ÍŐ eăFŐŘUtăŻÁ8 …v‘ŁëEXľĹ^:2[łO’˝TneÂťÍă'ÚcÔ,_>îă3ŞŘŠ$5¶Řr$"áR®¬‡^qQŽAťCŠ%•áŮtβ}¨!Y ¸Ł"Ác<"#dŮă ŤdZßĆZ?†KˇdJÚšPÍ]ĄÓKâ-ÂBvMŢ 8’ˇęâ>ŕM‚WEúd€É7 ĺ ˙e5ČŁřôVRöFäŁ>ź  Ú¬µŐTdUú×U†–]ŤVL†’WĘ[S5âľäbYV]ZćÂŮ:%’ %Qv¤´y"ýŚ…µ©ËR^@Ŕ ćĎ]Äí\­už3ÂÜÁXş9µ ćŁyś! X-‚”Ą^=ČŔogpç•Ű@9DA…ŔA"Z4_*ěa˘"ę˘îĺ9ęvŚî”i!â+˙"¤# Ś¦¦‘ޢ§ć ¨Ň©¨Žę=M$ Şu©jPž\ĺ\ÎĘ'‘ Ţ*®ęj|Óűŕ߯Şâ*Š‚°Â`ălĺ#«/1"§†ăŽĄłv´Fë1áOÖ'ż]¤ł=Gn¦Qr š°‰…k˘ęĄ3~ áNÍ’ ¶‹-‘Ě!’$dd“xá^—-ޢ„}ę•č+|’jżJć&uI‘Y¦śe$ťĹ%·zfĹŃjq„ŕ ŕę4¬ńWŻú*2H‘ â^Ł+.ÄĄjěţ<Á}#†®ŢÚÉ–¬pž,› ŢżlËbdńlh+&pfgöV}$śÜlÎ6ĄĂ: a@Ä˙-J ( hmj#Ľnl›ŽÓNČ>­ČŢ«ÔNípJ+“˘eµVíŐ^‰ríŔnĂ%|­Ú©}äŘÎΙ­6Ŕćn®ŚžćĂh-ü%`Ž›­}âślb©…7ú-î&ŢkřćŕÚ®‡NNéiâš_‰\`¤h F„|Ć’"ç6€çÎ(·….H%gő×|t™—ͦ€9ÚR˝nC:­* ŕÝnř.„nú˘˛a0/úýéĎoÁ……Jňr®—šfó:/]DŻônŮ`† Í…ŢŚeŻ;mďGŃ+Zvß‘ÎřŠoRđ"%bÝ^b"d"•V©Ü˙ÍĂ(a}ěaś@ýÚ/ţnň‘ é–îJŞ ®Yo&¨_»™S1ć‹ĺě¦Aí2°í:°ážÔůV"0Ş/Łđn…1Ö($#§•°Ś˘& Óšmp^Z|˘ ;×ő‚ ó•z>$NŢ ßđÔćp>Y/RŹa©ă+Á?#%1ݤ_0Ŕ ĐqÎ** ’+ŻÂŇ|AŞEX!Ń®W¦ ž€é}ÜW‚a÷öXëµA‡qI= ěńp ň?D)„x]Mr‡UlÜ3 ÉŇq3ç±Ú6ęĆäI¤ňḠô-%l!"÷Ęa%«˛ Ó°Eä#C2K2˙‡ůň®?$'ă.§âŘÍ(X`2Ű1*ëjĎöŞŰľ-°6ĂĐ®k,ňŃÂ"˝4ť‚\ßúíz&đÓĂ/óÇC˘@0Ö‘čeňŇ&×µLÍU›JDł4ŁňÎîńâ"xĚ)p3ŃŠĚ73"žL.­,ćÇžóČ92°s»ó‘®áž"ž”A’ŕsŘA'‹\?ű3Ú.*?Bl« ’ĐVl!2ŽđĽ\Ţ*ćĽr*E÷˛E_ôíó;S«'zňéóŚH«F>·Ć žJź2ÎâjÚîjϲ­Űb®Đ4Ý^ 6Ś–’$b/É«9śVô„ń!Ł5Z‹qF˙ŰÁ9 5Ö~NQDz őV(u‡‚kšÂÍ*@_÷őć~đß/ŤâHI„˙˘đ§`Üđ®µ.ż®çt ĺ ®ZĂgZňŕ˛uäAŞě…jÝâ˛c2+s÷¤WAqë“=)úµpn`//6G)ŽŇăbŻ0 _1Wľ°G-˛.׫˝Ňî:Űîf_vZ‹jg§A˘Ľő^Á!kííá'3™G~@žą¶_Çöc'Ö¨aŹibĂĆŃĺZʞŰ+¦Ľm±MRvqĎĂqC2r›lîępU­Ń…iÓsńŘ3´ur%LĺÎJX졜ww÷l(x۶FŚ·÷–yW±˙ű(źŔzec.|/pÉŇ÷|ź@}“Ż0ó¤Cw HÁ ´Ąő=Ź´a µIÄ#ř_+ď{)iňĺ…i1Ľ]{ćXěh' im‘×ädË®‡ËAOß.fǧ}›8xőbŠGF‹˙ÓâĄČ€Ďxv×xZ%Ŕź@,Ŕ™Łů 8Ŕšł9Ź{©5CeüŁ[aEŃO+ş$&ʬ)î­ámj÷zŞ“ÇľŽ8´Î@˘+ú˘+z’JůrSů|¶Pěn~G7&—č!ĎuuwOťŮY:‰ –gËnOóGű÷i/™'ďÖ»Ś:©źŔ©§ąŞŻ:«CŔSžäO—¬K¸5ÚzVfž JŢń:OärH]Ž< »Ł—,˛űÔ†8ŐFúRĚpOF”Jű´Ü2[»5ř¬d»¶sű8@ŞŻy‡{¬Ť;ť×ôšâ`ĄşcBW{őă8ôź{ěÇ>•[vfß;ľ/úq»ť–¸¤‹‘Őˇ#‚ɵ‰ 53ÇÄ—+Ľ“z©7üĂ«şÄóe_‚ËţfUžî»l|FŮMµ»‹üČ`ɧóÉ gË»Ę7z”c=[Sú0O…QfyÔ<]瞀˸ÎţßlĎ›ů¶źúšCüŽ›ćĐËZŃ?19 &őć­_Â]1´7Ř4˛7vđrQÄwťb}ťjýÖ‡/f{ý×3ŔwRŮ_E]O%L®Č„)@ç@_'¸_—˛źrÎŽk ťŤţq‚§îö%´°o7†ŻýRß~:G­{‡.~ďűţʧr×é=(Ĺ!Sk}^˛ďNđ!ż\V8ÚÔŔ xľ_‡ľ”˛)Słű!+Sˇó•B‘Wřę®› W ßľ”°çó ~’ţţű/~‡î»Ë; ˙„íSňłM=łŻBŕ<„„!ÔŔxD&ʍĂáÔTD§(Ăj==´ŰGäţ)”ÓbA§Ov[ó>˝5zýäÁçA{Đi/ 9,AL4Y\<1IŚLYˇ¬da9ąĽláětůuy=}AMUMŤiu•Ť•=‘­ťąĹÍŐÝĺíÍ­­=ˇv-^=F5}~ ýě„ÖÄ<©¬–„4f4Iě/R*Gbjz’Š˘şşĘâęň ‹0+;KSkc“Ó›«c'>{üD¨Đn¶5ş©ĄK™4Aăä쓲R§­*Ö X¬a#eřB™ĄÉY%a…lőq•2R1r’V‘šµkŚ´qkXBˇ!qCČ™3‡.Ý:vî¬<€·%Ě1öđĺłţ€aŤ›~qÖńpGOÁ>'ŠPř-čC×&®Đd‘ĹMŤ˘Lu”© &K—ŔTţGţˇOÁł€N€=sŠ×T\Ç^‰2]ŤG%Fµ×dÉŔ*iśGź}y_…Ë8ŚŚń¨ş7ăZ|‹]żŁ‡A "ä¨Ď’m4ŇN‚ )Zc͵×M6Ú̸-·Ýtë 8ߊ#θäŽ[ŽŹćD áąč¦«Ný®«f'©đ`ţ—ŘCI=ĎñX„a)ľc8jĚ&Śr&żUȆżEüű@<â pAvT­Áâ*ÂŘȨí*Ü,¸7 ®ĂA „KŚŽ„é¨SqĹ)y1”=J¬Ć`dé±—u,t—–Fr¦‹ĹľČ(ŁdI&áJB„™’ĘP°r´tNŰ2ŠÖVs0žÄ$ł¶|pKS· 2ü­¸á<ü?äl:í *’SXr"júĺĎť…ĐDu9T˝g!ĚĄFUYěa"=2˛’¬tÉËNĐTˇN©Ő@ÓJ;@ OEĚ0#cÂWŃŚuV mîMĺ ţúŁW:Ą ’a‹ÝŮŤb\6¤‘úš6—hÓ‹řľ†ąV1šBŮVŇś´ŁĆR¶˛i(­AΰŽ00T^Fŕ ąfaŕm‚ ŕ e« č O¸ hŁ/ŔđÂ5;´5ą>č,„M©3şmř‹č-arzLŁŽ”A†Y“›¸lłĎFĄÂúb4¤cQ¦>h űř-ę†ĺĎČf€+­„ůĺj&ŐSyޙ煑@hˇ‰>é¤eÝ—iá>䬳ˇF¨ş«Éú-L¤éÚ™ŻM Űamů m×_ßńŻŮ–&ůŕnĆČh¦Ńä­„­.oO D"Ô–śpšţ»<qĹĹ<Áń /€Üč O ¸6›v:ęÍ;'á˛GÜ]®ą>ý»cÄf›lŘß]v’h‡Ďí!ç“{wť$ł[’ÂŇh’`ĽŃČ,p Fá§šžéĚgb’@ôW´ęIŽ7XÓöŠó¦Ě‰#-żŞ“řB7‘Š\Da.H_ꊱ:Ö™~/4›üZŇŰÝď.ŰrL·¤Q‰X¦IŚ 9V†Ň\)f¤Ůŕ–Ç 6pU” ĐŚV˝XŃŞVÄrBĐA! „ž»Ě«QÂMś0…ëS]łZ¶1Z2´ęg šB[ň4&CbĘA,¨XÄŃf„S˙"ĽXÓ@ÄA°Q¬ŔŃ « X‘M|“¸h˛YŤ-Ă’čČX:ťN…ŻÔsäFVRL%ď‘ÁÚč訸˘0yěČ~דËR (Ŕ 0LóĹ$€”ye"OfĘC ¤9M6p8Á5' ˝číĂ ˙xĂWNŔ`CČ7‚˘<éI;+ ĄźL‰ĆŁuf«A>őąO~öÓź˙č?ĎÖa†ö[îr猛ĐM–ň%†)L “ÇL¦2 ŔLäĹ šŃś¦ś×3mfs›Üô&?ü!‡Żp@,)Č®š3µCě`› żÖ“$Ă]ĺ`z‚¬-±=ěÚ–ë‹¶­M>3ť0třĐëFŘ] °áLT»µ¨F™©Ě”ř%N€;NŔ€Ž–`@ëYď••}€łv C9ßK–ć|Ś>‰Č$Śýňô·¬.-‚šž˘ÚŔÂpr”Ąd@KC¬‰ł>]h,Ă:·Ę›<ŹS56;ţ7t‹39;9§hż.xżzż«¨7ú«?íÁ"Ň?uŞ«nř°=Ô« @á°[ؑӧŕ“@čŔ$tľ#Ś>LË'{:‹©a‰cč@Ä%DđCăË4ŁS0ŕ…¶aĽÂX…pCG„ÄH”ÄI¤ÄJ´ÄKÄÄLÔÄMäÄNôÄOĹPĹQ$ERä”R„ÄîSĹUdĹVtĹW„ĹX”ĹY¤ĹZ´Ĺ[ÄĹ\ÔĹ]äĹ^ôĹ_Ć`Ća$Ćb4ĆcDĆdTĆe)dĆftĆg„Ćh”Ći¤Ćj´ĆkÄĆlÔĆmäĆnôĆoÇpÇq$Ç#;euler-1.61.0/docs/german/images/SincI.gif0000644000175000001440000000632307522222432016722 0ustar ericusersGIF89a_‘˙˙˙bb!ů ,_˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦S%0˘RDŕŠÍj·Ü®÷ ‹ż˛ů|«×ě¶ű ŹË玪Bj7JS˙cfđ×pf1(r’¨Č×±×— ůd¸8QvÉYcą@i€—đÉ踑™éˇÚáĘ{Š(QŠ@u`—kŐ)± ě;Śr›aě!‹š!Ľ ĽęúŚ!}A]Mk |±=lÍL>Ň]ŃgpžŽľ®ŢÎţîĎľ)ß^?oŽoźŹľďĎ/`ľěWˇÂ„ :lGŽBD'ß’‰»Ča˘-lţŮ"X«íČ_•´řčF%Í^´ÄóÁJm'Q¶2Dâ% šŻx.Kéa¦‘‘9c•©ŇçĎUÓř}đŞĄŕ€v:$ęÔŁ\`mđ•¤O˘Z *‹­ł­#Ô*vA\n©v˝4—”ݦ ˘ÖM›@í_‘lkµš‘ÓŕÂwĂĺíu8rŕY’Ej]Ľn/ÎĘ`“>ÁŚtcŹ˝jŢ ¸'çÔ|Ű26ąZ®g&˘UÔý˘´žÓĺ&Ű4ĚôZěß‹wÚäö 帡AŁ»o ęb–VńúëťĐ Eľ„9 ťÍc°š°-J$IŃßný«ťş¦éó‡So ·ÎŮ,Ĺ˙‰/yčéŠząÖČ`ńőv“}”!xź2ůE˛{Iü'†Gť7۰ˇ»9Ęb ˘Ö}bA47WĂá8‹8Ţ—"‰ś–_YÔP‘id’H.™äAJ>Éd”Pę3%’ѵç[[@ć¸a>VŢ[^cs3!ŕ WŞ(Ő–Ü%S› j©ŕdq&yöć k~É ›Ä©&č ”ŞŚAě©'Ł6ôŮÂź:Ş–Ů¤ov¨p%&‚č‰ á衎7Ş’÷[§?:©‹–ţ‹Ş#Ţ D©µÚŠj§î¨©—ŻRškĄ]ŰĘ3˛J§(ź˙şš\«7ěĘĺŞîeĘl´g=řk(ňš(­Ę.Ű+šI@{©´Ykhş×¶–­łk}I.¸^8Ż3îęzٵáúŠ.°Üůc÷—­§`ů/¸ŰŇP#ńú»/ż Ů/!Ćú1đŠŚK(˘ú­ÂÝiŘ0^‚2µÓöX°ąË2ś1űˇlˇž"‡–1¬ő’ĐŤÇĽ¦2k1OĚ.Ň> ˛éŃúŞŰ­‡»tµĽ;»đś„ĎŤö0¶ ź«ô×Pw™µwŐ–űtĘŢŢđóŐnGWeÜH:)%=r§C÷“y×ČÝ|˙í·=]ĂжŰWî˛|sľLqŘgŁ ůŘDŻÍ°áţ–ď€xăĚxŇi{í¸â-Ďú飗źŽCćž/.UŃ›>lčőŤŽ,墎;iůFnÖěť× 1ďÁK®9ާPxîË/vďŻ ;ô‰Ëţ<ńµ—>CňĘČüăN·N;đ K?=ů«ŰŚ˝yŰŻźŰîÖ [ýđňŹ˙ľřŃ[ß˝ëěďĎŤűóí;ęyDNśű]óč§¶ôą„ ,†˙Ŕ®|őóŢ˙(xAŇ,{ ě` ň'Áwđ~<_ MAVŤjĘá<Cídś Yč<Z0…äa qAĂëa-†DLÖ$¦@ „IL„#ěˇ źčD(뙚(D$˙Äńq‹4"ôžBł&Nń„ö‹âWxŚrqŤý#ŕ´7{ÄQJs,Rá8€Ľ1Ź|Ü#ÉČĆ@ţq€9,ăĄBD&ŇŚ‹ü!”Čş@JŇŚäĹŘČLR“›ě$&+yČIŠ”Ś &=ąCF˘2•ˇleÓŘí‰ň"¤,ä%O‰KVrR—»]çjéËY ŤŹ, ZÂČË\S€–¤˘·3La“‰L«ŕ2Í·ĘbS™ÚL`mÍpr –:żgÍnňšÎ´ťţÄŮÁi®¬šéŚź{©Î{fÓžă,&8á)NyžË:ç¤ć]‰O~2R ¶č,ż‚ĹWţ¦Š™ŕÓ!;×yQ}~Iü§CŁ–ŽF>ť'EKyĐ„ňEé důŃN@‹ĚLťŢYŃ“6t›ÉÔ%CMÓ‡>đ'7 7ŠĐ}®ô—;écßöU§FuŞR­*UŻjŽź2ÍD%[J•şTť˘Ó›¨)=:L­ľĂ¨=ͨ"ŹŠT•6“¬äÄ)Z٧֞Ŭ9ý*\ĂęWźő­w…a^‘éVUţµŻM¬+óZŘpB¶«¦¬'`yÚÖ|.t°IŤ¬µŞ×˝.Ą–ť+FE+ŘgjÔłźĺ,N@XÍvÖ±ł•m& SÖ>·đ«A1k[ľ2¶´ĂĄ«?}«[Ô1˙tfĐ<íe‰KZčî´„ËMnZ]«8ŘRö–Î5íji»ÉôDD4µ¨uů—áŚŇŇ®]§űÝŕ ľLŻĐŚ[ŰóîĎľëí'ÜËVđŽ–ľ„pj[¨ ]”¸úÝ/v— `ó˘ÖŔ®đ„m+ĎÜ6x p‹ęőĆÇĎ-Ä$ĆŞ‰­ijxĂJP±W+ßĚ^xĆ4öîfU;`źÎĹ••îXă[ăâvWČő}0‘uÜZ/3ÂČ}±ŹËŕçR×ČFr<©ě4&Ă8ČŃ2—«|[,ŐĘ[¬e*šëeçWĘCîr‘•üe2[Ž”ŞĐr”Ő,×#+VĆlöŻłb9Îţ?Nłžóěć=óĎá3wmXGźŐÉOsĄ)mčCĎ·Đ“Sŕ˘!˝cI÷öŃ™ó¦ˇÜćDŻĎ• 4¨‰ĐjUŻZÓ9Fu©M]kKăwh“pá©_˝3ţŢ}´óĄ{|k['[×÷vŻ}ťk`+ĚŮ@„¶[ŤťjNĎZÖĆőĄ–ŕ+Z;ĆŇÎÝ eíecşŔä¶pźoěNF—{{¶#ŠRâŔ‰¸ ű~Hżď p+‰ŮŐó/¶ÝIoůÝŰćv´‘íç |…ŕ˙ÁÁŢpmw[ăżf6»ăš?ŠWÜ!Ź3ÇNjE·{ĺo4ś=>rĽR;hţxËQ®đ…ËűŰßţ4yĚÁŐ=j¤Űć;wwŃŤNkž—őÓ?¶‘…^s•ű|ÝRź:Äáíi‡7=Ô/OůŐ«~t«{}ă'g:™'ň­ëíHOzŰ˝ýö˛›]îĆnÚŐžă}cč`w;ËĂ.öś·3ëĘĆ»ňÄ{_öÂśę}×zÜ źqş~ÔÄ®öÍ">vĂ+—BˇćďřÇ/žěŁď8ăIzj+xÜ×üć‘hĹ+*ţë§G=íMźyś^Ý´WÝÝ]ď ΂„ď‘/˝î‰oű±×űÄ̸ó›ýçKź™~Ô‹_űă_?ů»˙ĽťB|§Ăy$ČÇ}÷wŃg_éu•|řE†8ňoßü”Ďţvëą_˙fő÷ďם’opůGt~7y~78ü×2Đ5`4Ú÷^îwss×z ¸€W†c€±5yĺ,Exx—ó0B˛'H€W‚#Ř@-x€*~¨~·GÇ.č`Şe‚)h|ř5h@z:Ř>ĎtH„C(„çAXw°‡`ýt„H)śG!VČ{Nřw+xa(†3ČjZxy?t…XČŞ'{hTŘ„ą‡P}^rUnä5ni¨†*@.oČ„O(‚ř‡‚8& ć}ËG%ŃÇ7˙¶(GůFU’čÓĐ’Š¨&ůrLţř…d†ŁHŠéw‡F´‰śřA7" Ř(čëG[»’ŠŞ4¬xgchŠ4лȋŻ=W‹¶h#ŠbN°(aż¨ŚËXŠŘ!ĂHŚ! )…ŚMf‡ĚŘŚ÷·Q0ŤŃÓhŤ×¨‹2č‹Ů¨Ťs8ŕčŤćć$UŤ:gޞhvń'ݸŽ]î‹âŹü(Šý(‡łŘŽ÷ČŽČQTÖ‹ä¨çŽ8öH!(qŽůÉ8Ž )…§H&‘Kg™ 9’‰Ť˙Xޞv%ů‘íWV\őŽą’i’9z+Ů’Żw0ąŹY’ňX€Č‚2™“07sŕ«€”Ią”\ ”M©O •X •SUi•X •ZŮ”\ŮE –a)–c™ăŐĽhůĂjéfŮ–p©n—livŮ–&€—°—Ő—đ—s9ž„É %€`…9r™—Ity‹9™…‰™|)™–y™“©^ Ů”9—› ¦ŮRž ¤É—¨ŮR“éš—›dI›µi›·‰›âP;euler-1.61.0/docs/german/images/Makefile.am0000644000175000001440000000021310263642535017260 0ustar ericusersgermanimagesdir = $(prefix)/share/doc/euler/german/images germanimages_DATA = \ *.gif\ *.php\ *.css EXTRA_DIST = $(germanimages_DATA) euler-1.61.0/docs/german/images/Makefile.in0000644000175000001440000002333010331246752017273 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/german/images DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(germanimagesdir)" germanimagesDATA_INSTALL = $(INSTALL_DATA) DATA = $(germanimages_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ germanimagesdir = $(prefix)/share/doc/euler/german/images germanimages_DATA = \ *.gif\ *.php\ *.css EXTRA_DIST = $(germanimages_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/german/images/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/german/images/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-germanimagesDATA: $(germanimages_DATA) @$(NORMAL_INSTALL) test -z "$(germanimagesdir)" || $(mkdir_p) "$(DESTDIR)$(germanimagesdir)" @list='$(germanimages_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(germanimagesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(germanimagesdir)/$$f'"; \ $(germanimagesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(germanimagesdir)/$$f"; \ done uninstall-germanimagesDATA: @$(NORMAL_UNINSTALL) @list='$(germanimages_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(germanimagesdir)/$$f'"; \ rm -f "$(DESTDIR)$(germanimagesdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(germanimagesdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-germanimagesDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-germanimagesDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-germanimagesDATA install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-germanimagesDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/german/images/index.php0000644000175000001440000000005207522240423017037 0ustar ericuserseuler-1.61.0/docs/german/images/euler.css0000644000175000001440000000132707522222432017053 0ustar ericusers/*VPDbURL{file:///E|/euler/docs/euler.vpp}*/ P { Margin-Left : 10% ; Margin-Right : 10% } P.NotNarrowed { Margin-Bottom : 0px ; Margin-Top : 0px ; Margin-Left : 0px ; Margin-Right : 0px } H1 { Text-Align : Right } H2 { Text-Align : Left } H3 { Text-Align : Left } PRE { Margin-Left : 15% ; Font-Family : Courier New, Courier } OL { Margin-Left : 10% } UL { Margin-Left : 10% } BODY { Font-Family : Arial, Helvetica ; Background-Image : url(back.gif) } :link { Color : #993300 } :active { Color : #993300 } :visited { Color : #663300 } TT { Font-Family : Courier New, Courier } euler-1.61.0/docs/german/images/Liss.gif0000644000175000001440000000473407522222432016633 0ustar ericusersGIF89aúá‘ŐŐŐ!ů ,úá˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ę´îčƲĽ:óŤ× ΋·PĽ€± -5Ë‘EĘÓZ/SFŐxeeAC_”Ôĺ|-[Dů1¶¦wáORŮD˝ˇńPť}>¬!ya~h#¨Ó†Fö×—°(dä§c†`)59(őčDffy ęT–‰Äč9Ńhe°Z3f:ş©çŞRUű© ‡»R)«ęűŚÖIÄËD‰ü«|Ç‹Zf=ú:äĐź9ÇžUôIí(5K^Ü2ëŐLc÷©.|h9ô%¦Č”^?§µZđ˙˙ĘźĘ^C©ÉS™YĹWV€ÔdĆß~kÉŇ`yľi”=ĎXW_*ŕ`ČôÇ!CÚ|wuegŚr·UD†cáétźV%X†N(â‹’(!Ť@•xcţ™§!‚Şőźbż™¸[; ŕ‘RĘĄÄáŘ$•z­·ťŹua9$‘Yjée—QŽ÷¤•b‚yĺŠK&yf™úé8&“m*‰ćŚyni¤“}ú&źoţ¤ s®y§ť€Ę#ˇiĘIg¤‰˛©ćžŹW(śNş(˘•âY%UŤ"驢Ą˛9Ý2 JĘ)©ť˛ «ťđ 4_‘SRjj¬Xö!g˝úőŞ®¸š¸*éýÉb®˙Á ËŢŞB:[ç§fJKަúA[m¶çý—ˇ˛Ë~˶Šk¤¸Y|x)aä^·n|ëŢ*łą´{˝"µ ď¨Ţ6wiĚŤdŻżúŰj·˙žsl¦Ü~éŕÁ÷kٵ¬-söAŚ­éĐ›ŻĂ“áKđľÔćő.¸ŠŚ©Şé†{˛ÉĘ«iŧ˘ĚnĂ3óu3—!SKëČŚŇ ,Ě®ö-‘Ĺ"‹łÄÉîL´µ ţÚňˇ5ş,łËę­ô ;Z5Ó[Ďş˛žHO+rÓ‰¦ݍ[“˝ŻŮĄöƶ‹]°ŰßÂ=čÔšµ×cűĽ÷ÂK§Íwß<˙˝sŕ†˙¬xŕĆjhaĚył­°Ąţ}«Ľ8ĐŻí*™ î3}asNxáźWž5ćS]ô䦟^ş¤ŞçĚ:čŻĂîąë Ď.4ཏ®±î›#Ę»ć‰ÓŽzÄ·ĆľfÜ«#˙{ă­ă.5ŚĘÇ(ĽĺĘKĽÎGo|u(bťă›ß×}׌O=řÄÚčˇôí?çô'Âß9ýëWŻ7˙…N„źýŻ~öăšűÂĂ‘ P}*_Ňlgťđrľ"ÝŇ' úYs Íô—#Ǹ'sj ;H:Ę^ĎJE¤Â±pW{! •”qü«Óa ˛ť Ňm†,SJP‚¸Á&QTpÍq汋yě)OtËX˙+"ň«„ŮÓ^§(DůŮđZÜâˇ88žŕ ‹8+ăĽ<‚Ă©ą±fSŕˇ3¸2ňp‡äŠjăCö‘l€\bQfs†Š®‚ \G )ÇĆ4ňs\bÇ–gČüˇOgŤ|ö2 +yBd‰Ay·¨ Ď€ÇË –dAVv˛}Ś9×o*Ä>L–R—“lţć‡J13—ńűÝÝ´K`Î2y&ĺůÂÉa&s™ĚŰ$“ž)ÄSJ’™š\Ą÷®—»îmośÝô&ťćfCqR™Ü4' C…Mrz1śĺĺ×ŕ)ĎX¶sźüśfЧ9\BržôĚ'ńâĐ‚™ ­f ….^ţ s˘c¤ß"9ąć’ˇ%a#"ę?kşł—öě¨GW銔nSźő éíte7e!qˇEˇAUj«Ç5Pś-­(FY 5’Ú´•=饂ę҇^p¤ 4*DJ°mtťIe\FKÚ<­1•{Ô¬ŇUQęSn*r«ą‹©Ľ©Ő®r•¨–3+ëlů˛°R•­>)V›B®c~Q¨˛«9/Wi®łdˇ›Ş·%XNŠ2’_íĹć¸1Śń€Ăl;şCSĘ ڇ©lfňXÎî$´Ě›[«©Ĺ&´™W!,]•řZ­Ö˘Đ|dőJJšąŐIrcmnĺŠ!żî­Së@ť…Űá˙čhţ\il#¶Ű]Ť|Ŕ%hmźÔŘŞfKŞ,Ý©v ČŔč^Ô»dU¦řŞ*Ţ抱·uR§SYĽĺ˝kĄv‹Sů~—ľö})¸Üš]ţv׿SŐg|Ç`븡ŢGjŇ^^±¨ÄÜoĹfŰĎţ¦ÖlŃ©ŕ G¤ Ú{8<ßwXÄľ}Ő‡»Řb«WĹÖ<1”´‰bÇ8ÇŕK$8śâöîĆîóq¦Ć7â™ÇŃ\T<›Ś>^mX˘jM.\ŠŮ`ŽÎČXźS±A㏨ ąďĄÎ+kšWžRy@´c7»ĺ7§ö(#˛|Okg‹<’mc]ňZ+ eŠäŻţtńLz«<&kŽpÝ+jm‘5Z°| ôsB¬h0˘ń‹hĂ´§ËŮó'%ßńH©Ąrj?fÚ'ŚţrŁÄ<î°C4Jţ¸BĎú™r€Ţóú(g9'é“–¶ś-<×ë1‚hVe°§Ěf¶6şĐő%BŠ TćŕŢRŔ„ŢęÓFleg~úúrS mľŮŐŐ.v–‰Đ<;‡µ¤·ąŰTâ([ń5©F÷F¸o Ť÷ŮŽ‰-jYSë+ÁŁľ7µµěI ·U2•‘˝˛üjřŔkU5¶·Ň?aĄw×MłšÉ™íśMŽ`ńUĘ˙Ě>˘ő ‡¨ěbKµč’ŰÝ1±9×ĚűásąÝbâvŢô8–#Zűt0ŕyîłh;»Ůŕ!ÄčAş¦•îr«ÇÜ”Bz·ńó¶(Î´Ž &®…›óŞěJN9Úý°Ź®ÓśĺuKW,Ţ®ucĚŞ5Ăh¸Ç÷űžő= OčyŘç`śÁ~Č·âÁŤÂcÇŔx|â#Oy,Řzń–'$ŻŤĎ~?˘ĎĽáńţôÔ«~ő¬o˝ë_űŘË~ö´Ż˝íoŹűÜë^;euler-1.61.0/docs/german/images/Mesh.gif0000644000175000001440000001233607522222432016612 0ustar ericusersGIF89a`‘ŐŐŐRŢRb!ů ,`˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§Ôć Š%]łË-÷Ëń‚Ťńř,1Łz WĽăĽ¶›ŽG”ó@űś?¶Řcw7¸&x¨Sh¨řçĂ؉ŐYé2‰™É”ŘI3I útI*Ş:zęÉÚĘ"ú ‹dJű";{;d»Ű’ËéK¨+<’›\Śă§¬rLÜśĂ}ň MŤzŤ˝aťĽŤ‹ü­µJľę-î¬zŽžVîľÎn2˙a­N?SŹß`ÎCŔ0î îČM  ţÜh[čˇĚ?ö˘XBâDŚţ,näBăC.$7Źd=‡#Uš<‰ĚśJ/Rô“ĺÇ™ Y~âÉ@_ÎM@ąů´ąPčIQHâlI’Ń1YMgâüY4Á¦Ąď˛ZxŠŐkÉrŔ Šťp*G¦ď–žŤ 4¬XŞmÝľu ďâݲ(aV˝©Îá_~|Í ˝4°Üą\F¬ŐśŢ·Ď¤ćÜąW˛ZŚÝ?† @jĘĚ~c^ĆĚXÝäłöžž^ěTôfŔ—_ÖžŤP¤OС_늚§nŤé5ü 7aËĘsź6í;xÔߣ)?GŢřžWŰÄAŰ.íŹhÖďŐYcožěxťÝ˝CoÜY˝SčaĎo?YłÂM˙·‡Ě\~žŐ%źKô]Rśq†ewŢ€(Yĺź` B0á[ č`†VS‰RőUř–쇡~&ĘÄa$qI¨É-t‘ŘŚvi€Ixč†}Z¸Hŕ‚1ţ8Ł15:˛"‚¸ŘEa>Ů`!0ä!–™¤Ł1HB1“K6‰@%ĂůQ厭dą%éy 敼–—$nşRš†žyÔś`†‰ÇȬćĚś]$w˘cxNřĺž‚#[Ž‹őč­jčs u¨˘y§X>‘’q—ŠE§]{Bůé2Ô‘™gB xžĄjé©©Öŕ{­†q+–Šj§ŚŇĄqj›qä®˙˝öqÝqş•8+µÚŠČ{Ä ë źRK)śˇ:ůU±šžˇ}»šş,ŁżF_WŇŠk,ąw˛š®ÚŠ쨡¶ .ZđŽkˇŹ×–™Â—őJ“oLéÚME˙ĆËE€ÄĐ˝›&ěˇ'6îĂOÁ\MW|° bČo­U0íż%Ë#•ŽJó1'÷X™°ÝćŘ‘ÇSń¬Ě9ž[Ş€Ľsťi®I¬ĎFW´Âľl/Ő’ô¸4´NúPËđ őViŤ,IÍň꬟’[r}MN×h¶ß F7Ů2€Ý'" ăÂĂěs¦VcjmĆ~Ţt ™fÚÉů\˘^Űúłţř‰40!e ľăÁŢ\ŰŃÚ ÷õrŢr“ůâŐ*Ͱ–ű‰>zhmz<-ę_m­šÂ­o~¬Ćü¶9ФŁęr±şw´u^ľ˙ľü8ß¶++ě–Dů×âFOáÚsż9÷!‘ʵE)_o»˘ÚoO§µÎ &đh,Lżoçočuţ.Ë­¦ŔDËăşqkn\©źŢş˘?ĺíŻj Đ˙H0Ë­ÉR˛ňśA&ײÉ=Ť 'ăúú@¨aŚ[#t`ăȢÁÜáTÔŐźŠ>0”ËzÓß.h:ő­LËźŚÇ‹‚섚±ß·2DĽŢ.poR]„$)!&IvŢ2b ±Ó˙Ü-‘‰ľşÜWE)–‚Š•Ú W›Ŕ!Ďiâ›!ÝüC&ń)nr”Úʨ´śˇ,ŤjÔ ĺ˘çFí…µśďHáđN|Ô˘Ő·< 2sI ă!ďhB©ŤDÝx[éÔ¸ÁE0i8oŚŕÜ7jÍ‹Z»á;˛ř¶Gn‘slń•LąÉŐ±¬%ÖÎCĽˇČUĂĚť(G9ĄŁ4ˇt»„ ]©22JÓ źĚˇ,Ťą _zń–Í\*qéÚASmć[Ę•řČ Ţ >šÜÄUş ©Á31Šl% H–s&Oź T®L”IvÚ-Ätä,¨Çťe,źüěgC·H­|ţ ±˝›Z)ÜÎSËŤý«SúP¦pÉšÔŠXź$nž‰ŰY®’ćQRY+{Űs(Mýy$-­hATR©ÁX:—nTˇüĄ>nŠÔjB”}ż@›y:PZňFDÔWLkS=˙ÔÔ¦:ěęךŞ3°ü(ĄR_(aXŐľńgD%WCŞBÜ jsFu!#3 ©‚jš$|–_hgŽőyŐ¦éL%á€9»Měë”çYă‡ČОµ€“E†—JÓk>–&/h TĽ`Ô°űe±Ę®+Zvź!ťĄ7‘Ć1Ĺ‹ mKÚu®Ź”ťŢ"©yYĄÖTł•ĂčŇ&1ĂŮ˙/¸­Łý÷¸zš¸¬-¦p‘š ż"v”%k~ [Ťţ6“1«á&©‹ÎX‚`Ң«6‘ÜwZ¨ąm«4É;Q*Zw­ĹěAčş7¬EMą<‹Ř9)SÇ•(ˇůE‰zůëVÁÚJ~Ţ źvÇyÚĹqąpin$EuÜ&…8šKăďuµçG ŞĆÂv*^Z“ˇá• §PíäĘó˘1°Vď‰\#LöňĹŰ„ăŚ%ĺá:¤•Łvń ä6ő®¦˛i‘cĺŠhkÜňŐĆäs÷ŞęŔěp×{ÝkńĽ/ ¤ób8ż$—vÉ &ă3ŚŢÂFąš 4]I,;NůďţąĹRs ]°Č®őž° f`ëĐsUłaf3zÖöf Çů›†ŮtKXŐ?«i«¤r“ÚĎÎněĘ “M˘GG˝Jt·jUuy_sÔ·Š”µ7Ősź ĐşJ¶>ňěÓJĂ‹3ÖúĆőĂ „©Ljâ“Ö9ľ™źĽlŕcwz|Ę^4x¬ř8IżµĎ‘~­˘v{C/‰”?“¶—X« “‚ëB︟mę=gÝ0ő%w6·í˛ŇQpW»ź¨ÓŠpöŰĚJ-¬Żm5],óî¤ +öŃ´pŁÔąoőFíăŘiŻJ›×ç¶sčňëłrWÄ,. đ;qŚ5±Gł¸÷ĺë=ţ}˘Ł,>·<Ů`ó·ÍOJÎÜ”®ňđK•÷–rĹŘžź.ĄÜ9E39ˇĂ+ ‰—îHß<Ő8öiŻ"Ď•Gd©s‚&tď[ôĎ˝Źb_Żł« 臵\ŁU{D®^Đ—ÓšâVÎ×9Ë)3ß"Í;;ťl8Y+Bp·»°ń|Â;W›áĄ^řłOMríÚUęě¦fŐŹxÉÓDµtô*™‚ę§'Í©ňţjŇu˙iĄŻrmĆń»n+Řő Öµ÷ët}Ž˝ä’ ±;áÔwR|ěú3mhĎě{«Ä]ľď;qÉĘ–˘»¸ßEzCĆÖäůézötwÁJ;ţ©Nţľ˘Â·]Ý‹¦ËçG?ŕ‡®qěÇIľĹhÂDr˝\ôw|¨CŹG| µZć ±8.Ç<Ô¦IŃŐhŤÄx w€ Ç€!'RÔĄK´Đw|Ć×—{CĹ6°Ä€ xo±'‚­µoae.?‡<šv ¨‚»|0µdřdNž÷PŰÇOM~!GJ4Wq”t°‚Ř”0ç9R§hňö>ĆpH¨|t·„Tv-8xĚÔ&@ą ö[%8„¸f€ Çy(vg|Gxł%ľwd¨g†g%ˇn”%—GxÂ7w‹zéĄ5¨€i70…fX öGTy÷Ĺ‚ĽµŔ0‡ ţ¸pG{§cńgVßÇLĘ^to†x?vŐ[PÖ_$‡Ĺ4r‚HWźt‚Ę`‰ô€™7xMÖ-0v‡V‹rXŠýĺ…tŠíÖ ČŠăG—öLp§XÇXTwök1~»Hy<( żx`Ô¸s·f=X¸cŹ({ł†sa¸‹¸Xyg ĽHЍBŚk¦{XŤp‚K¤x—e{ňfáY÷ʱ0}"׏AH„bi †ÉFÖm.㎠XŹ‚CŽŞ¨ŹllÉŽś¨S)Ź“hMž×Ś]¶„ş¸-ׇ“Çi‰(O%éŹn‡y-#´ÇvŻőpµ×9X)e˙59yŽE}€H‚Ż4Ś˘÷Ź2‹2Éky” jVůŚQ¸ ÷ŤqĺW†|˙ŕI” xći2‰ž‘ĆwmXi*©śIźÉ3‰A©BŇŤą‘™˝™–yh…GG†ĄiŠđ¨ŚZYź(¶ŹţŐ”ż' eřŤDyč„<‡xČ—8™„™‹÷'aBGkž0ą•Ö'|?éŤţeˇ_§śj|tŠÄa¦ ˘ĹđFjź?%‘=ů“ĘŁ4ˇ*‚8YĄCšĽXy.QŁFĘ„D:^ŞÓźŞů…ÝiĄÜ§šŇ¤ăY¦ JŁ-§ĄK:aďG&Ýą›?†•çŽů–ż‰‹ú©9a ś_útćD,F¦z6 @Zj/i™}*ť0©”Ş–jZ¤$:i,6¦iŠĄ˙@‰©3–jÚ…l—!ů¦Ȩ«ą¦ĎÉ›+Ú—Łę§-ąŞI¤W¨Đł0J«+ÉŞ;Jś“uX”'v™|F¤ŰŞjŞ{J¬­ Wgş–řvĚyĄ j¬;8B·Ź, «áé«ä6ezššÉ­źš„ x«l0’ßgźxÚ«‹(ĄSz•ă ©­’şÚJžŠ ś:ŻĄ §B™ˇč}jIŠ…ת|—Ú¬ýęŻ Ë˘=6źďş•÷ZťéĘCúš–íŞ›đÉ‘Î:¨ťJĄŹz©r:‚Ş—­şj® ë°›˘ĺŻ‘ąŤ,y™ z¤ˇ±µ·©ę˛I9°ű*˛ąŮ˛2«ŞĆj˙’ł§–ŞFŻ ČťçĘđ:łďh­ ‰­Ľ! z"ęţ°8§ Ë–Ěř±„şď†µ‰Ó”2(ŞŹú®ŽĘŻSŰ­ĺĆ«±i°k›¶j»¶„±Ějj};Šë—˛Z·_Kž{łś1˘%Kµ]»’·I·Áj­gV¸ ŮcŞĽ‘źa;¤Ëvśé«6ú¬ůłŽ+rť I“ĘŁe¸ź şÇřSí:‹­«‹b•Ą_č6yĶ…:¤|†¨/ë©¶ëť„;¸ľąk™›¶¦gµ»š©š*ĄPJ»hJŻßɳЫ»Şľ»łL˧‰ú50K Čťn[±|Ľ{[2ŞĄÉ;´˙Ú® ˛ąŰ±óŰ›K¦Šq ż°{š+±ĽY®Ĺ:މ; Zľs›˝vş´Jx˝zżŤš‡ëËľćľi'ąńŰ´Ő›oú†ľěş¬żßµŠj8« ěŔPş´÷9˝żZ´»–”%1¬ —**ÂëŤ7lťˇęÂV«»{ÁŔ” W¤{ęą– ±Ú[­Ř%´8,r©;Äq“Ä­!üÂČ8»<Ă@ű–m‹żg;Ĺ,“¤ě*¸.ËĹÇ[»”;ŚëÄE<Ć,cŽÖ¶€i¦!ۢ[ěĂű‡PL—^Çňľźű’IL¤dęÁ^ü­ ĆZě¦,vK«ŮĆÔ ™ňj mĽś˙ý‰şĚ»ëˇťLŹN Âć›Ébë­|{ŠKðöĽţűşěĆ«tĘ(»]얞̾¨:Čf&˝#Ľ1K{ľXěÇ3 É´r“Vş}šú˝ň۸Ą|›Wl¶.|´É|^ÚČŁÜło Ŕ ĽŔĘŰĂ׌Í_Q†Ű¬Â:,¬ńˬu ľJÎĺlΖʱ¸ŰÁwZÍUąŚŢ|zň"¬Űş…LĽ~ć©ĂÁP µiçĎkwÄ,”Ë'ŠglťÜËŘr@ͲűÔóH­ĹëÖ÷‰Ů™­ŮąËŐ÷şá|»©,Ú1Ť4­×Ć\ź^Ř7ťŇ$ęÚěPžľĚŃL¸Ň<Ń@Śąą­ŰĺËŮâ+Ü}ĄŹ(–Ä}'MÉ Ő‰ýÔAý›ĚKÚ1˘śÂM»Äˇ ľŮךÝ$cĬ=˝Î‰Ç]üąţ ‰˙ĺ]6˘ŮSŤ]•šˇş™ÄóMÖŹ ßżŔÝ »Äw—Ą]×ѦÉ3ĽĚýťM¤˘ÜŕßM̧ĚÁb©ŕˇŔŕ>ĽęŚČá;ąń\áš° ÍáŕLáŽ+ŐÉŢŕMŹżâ‡í§Î-JŠŢ¨mÚéËâ'ŽâŤe«ÝÍ—ŻŚă (­RĽă:ʧ˝ÇC™NĚMŢE~JZ,ŰĚčśßÝǦŤÝNľŕ–Ţ„LľµzĚÜ™2î‡ŕ=ËőK¬ť[Řb®ąÜúËF<ß+<Ýe>Ă Žĺ ËÎ<âŃĚŮN«Ôw^ `žĂÉmĽĽ}µ€Cľĺř áÝgWŽčšsÜÄKĺë˝±Çé¶r3ŕwMĐůµł<Ú™~$«lĎ«śbV-ˇ.ę±ßu«č‹‰Ęćfťž®¬Ż^ßeűાęĘrşožČ4™BůĂß˝^V@Îáéą™iěŹp¦ÓLš =\łľă±Ž=ľPÍn3qާ¸î”„Mí‘×úĄ}ŰĐŰÎíR2}ŕţâBŞîë®"9;ľÍbňî"Šŕďř˘q éţ.đOđođŹđ Żđ Ďđ ďđ;euler-1.61.0/docs/german/images/Binomial.gif0000644000175000001440000002371407522222432017452 0ustar ericusersGIF89a»j˘˙˙˙ö˙ööööŢJJbbb!ů ,»jţ( ĽŢđÉH§­řęĚ·ďŕ'†äh–試ěę¶đ» =×ř­Ó9żŰľ pŘ#ţŠČŁRd.ŤÎ(tÚ¤>«Ř«Všĺn­Ţ0xÜ%»˛:Í^»Űđ·j‚†Ă,*襅"Ş)¦‰fŞĘ‰QV c Ł®@#Ą–ę §j‡ĺQ8ŠÖĄD€"ń& sF˛dy>¶ëz˝Nö++·ňdwćţôŞi±&Ąe•ĐĘşĄ´PDŘ2‘­ŘpâąRě qnă–Q®đ]¶.’?öjŢzKA ŕ‹ŻJéżţ|áź7č[„˝4ŕ D ž6ÜéĂ›:q§‹JPďű `0żw đÇűg-Ýň °ĆŮĐí··Ě©Ëż,sĚi١”ŃB×,jTµ¬­˛±* ­lîH‡„tIK3˝´ŇI3Đ4ÔNG­ŇÓRc}µŐMWí5Ő`{5uÖVKĄµŮewMö×k‡˝5Űo»Ť6ÜsË=vÜmçŤ÷Ţu“twß|˙=ö@‚ź]xÚO4vĹ7‹ú3k;g™‰”˙đxŤĎúś9Ç÷T»˝ Éąg¤»Dĺ¨WŢé|.†čĄ°nFť‡12ČŠĄ®»ĺ¸ß^—ŃźŇ ńĚ”UNęĂ s_Ś3ç{ďpU>Ć?o˝6#łb©ňÄ/ŻkętŤô¨—ÝýůÜ“2o˛ -‚ű ˝â嬢NŔă_ľwÓęLżEŰQ­zTŮeaX¨p 8Ę}â€`ĺ`G6^@ Üu„ć­!E˙ăNä¤Sz‚á@aő0—ł…P ěÜ—ĆşŻP°¬ 3LxÂřđ‡>ü†ńŘTCłÜWńÚÁúw˝&zÂ~ěPôś ŕ©/}ţÉËâ* Ĺ!j}_Ô˛8Ĺ2bb‚ď@ž×/UĘ{`„c+Tw€w`X”c·°Dç9®.¤ä``Ľ:şc ”CŐ [4BfÍĘŤĆ`—Ă$hMÁZÄ ŮŽH“Lâ`&)…cŮ„Ś€źTÉůÉ€•8k9ÉDRÎU‚„Ő"aĂx#EüË QI6â–$±# V¸bž„™´ í–J6Zó+¤ĺ:"E*^ó|Ăö¨Çrá“ÚTÇLĽhÎ<Ć‘&côŁ7çnJE™ X!=÷™‚ěˇb{ä|§ňđ€t¦Ł$mg@óŘGpţ±…•ţpeŚv™Ď[>Ŕ čđ‰=UˇRKs\­Äi«h˛H&;ďyHX”¤¤ˇŻPşĆÓˇĘĘĄ#uĘż$=‡Pô©*О@˘.ččzŮ0“*‚q&ŢÄĚdr+í‚TiSÓ”Ţ eCżľÉO l”ĄťŚŔKËJÖX±d;ŔVÁ¶€q*ô®Ýű©L츽şóŻÉó Ę{Ż|‰”­mŔĄçĂ‹âS>dlcŰšŘjA’ds]Wć ĽfÓŔCkŐ´2`z+śŢBW[ΰ^¬° Ř@ČSČ•Ł&@E [©=˝­^oßw[ •T=ă˙ÜeQ–±ćn«d53ćęD©—~n ¨}©j_ÂW„v´­ójohjC›žRží+.«ŮÓöu-|_×ěŘ´đ!m‚ömZ,ťRęň°#ŃoV–vż„ŔFZ|`'¸*žŰ‚<73Xž°â0Ü` SĂÎ0ZOČĂű#¨ć Ą )gâ_8Â0~±Ś?cĎŘĂ3隆w,â_ĄĆ8汏-"ŕ°Ć`¬•™6őgp (.‡ŠÁÁâ'C9Éű´"$ě*PÖŽhÉ,vň‰í(f!RÎĘ[őňg sS±bůšÚ”ěÇ|H'QzáP*eűăĎUÔłj^]8ţJ,Ž(“Ĺa>1 -(#Ë€¶ţÝi¤Ű›ĘA79Ĺd.G˘żQ=§2ą<ŰÜlĂÉ’†r¦OMŹ­,-ÔL“ĐĽ±.0QÝY Á”6słGůűQ^űş´$tˇ]=Xď7ÔýiŻG-Ă7Ęt”Đ<5´ÇCĺMŹĂĐ×>‡µ“ć¬D+Ý> XsŤÓ=ď3Ř—ĆtťÍQbO›{1Z.—×LďV;ŁÄ.ö¦Ă]oF @°G~ó<9)ěaŻ›Ý‰v·Ŕ±·Üú;Đ "¸µł}pM'üᯌŁ[ieűݶ,lź™šďW§»Óę%{m `_đ™ŇĚ%Ý$^CÜŕťLÇĹĄţK~”ĽF4/ą}ěA~|Ň/ň‡7nžç’ëűŇ(ąuV.¦v\©ŽĆ0÷Ŕon€éMŻ¸ĹˇîÔZ{ş´ÂĆ]€äw‡¬Ž`§sÎuő…S1Ţ‹7Ä»<ĘŻ§ßb·¸7|žńżśčn‡łß·éô§_9ńóěó(ţĚ÷Ęű厗răĹá@[[~ďMX{?‹NBQŮí‹»ÜkąGéU§úÔŮěRó\#>źy"VŻ7Vf‰†fáz«-¶Ż9‰Ż66°A&°{Ż;Ż Żôš°ńú¤×JzűizŤ CúšnüÚ¬EÉž„±Š–t;±ÉƧČs›Šˇe‰S¶x'¤–ěů˛núŻaöduŠ©—™˛çAź:“Ňé§±‡Ť*Ćd@䲊«˙.z?‘ufAôš ;˛řy†ŰG!łíU籄‡ ł1[´¬VhL‚Şf©Şjťö™­s‘N˙÷ˇĚęŻ÷Vhfű;&şeĆʤA}G˵Z{·#ç¶s{ŚÖ:)čš h‹„D»µxk¸KG¸Pö¶t¤}0¤}űEq–¶ýš·Â¶u‘Ű2 ¸QZ±P ¨0ąŠ›ś‡‹¸z›¸„{\÷ůą>«}°Ş®¦y¦ă(¶‰©$]›µĄ»¶y˲ŠFDçůwŹeŰ§Ź 4^*·Űl›»¸Ű¶rŽú´SJ˛R ‘™Ę ~¨&Ő6ş¤kş§ű˝~‡„[``k&ij¦LÉł« čĆ˝Ůi´˙ૼXűĽëË ĄiĹÚ¤ÂnŢ+ż»ëżÉ»¸™K¤ŘZżÖafîűľËŰż;żÇ¸qá¸gąú+ą ěŔ1ŘŔńŰn ‚›kŔKiůYĽ¦˛·şËĽÍ›ÂvË´Đ[ÂŇ ©$+˛;–7‘° q*üŔ;ĽÁúÖ»rrľ§Z™SH¶¶ąşž;˝1|T¨ŰĂ…«ÁOĽ˝.¬H!K¬K˝3dł UsZ6<ĘÁńËĂőÇi_KÄł{Ăc›ľŃ‰Ŕ‘¸˙KĆ,<Ç·«şĽˇ"H·zś_Ç>ěÄÂřĂ<ŔôVŔ"pŔwlp ČÝ ĹÜ‹ëĆą@Á|`ÁÔ G}ĚČ˙ ,Ć<żă{É/‡<ÂMk I<#áëÇQ<ĆěÉV¬ÄR*ĂĚ»ř[Ă©ŞĆµ›Ă©¬ÉaĚÉrܵ5;k´»ĹóɆěV¤üÂWĽÄ' Ć›ĚË˝ěÄafÇÄ Ă±lĽ†)ĐĄŔš ަЦíÁ»ŽÜČtĽÂ-üÉ`Ć6ڞ«ĘĆ®¬óş‰\ p·ŔŹĚĘ­¬ĎÓ\Ďéş9 /aşĆ \oäęËű¬Ďů\ĆÁ\Đ#Ľ†u‚ `/3ěϱj«ĐćĚĐ ´,¬ÜbśĺÍ{ܤżť|Î)m·ęLČ "ĘČÜą"kĘ3ÍÎüĚĺĽŃ+ÍjÔN{Í©q;˙ŞŘЬ8H=Š«ČjłÔ¨H8EťÔÜŠĎ ˝ÓVťĐőgŠN˝ŐFÍÔJÝŐaŐGýŐuŁ8®Ѱ(ÓŻ,Ë@Ť`Ńč×Y˝ÖŘ ž¦"žÜ÷ÍŔËηś 7ŤÓ*}Ő«L}-í–/aµż ӀȒ,KÍ9 ŘmĄý ÷»ůëĐ0†Řż,ب[ŇĂyĚ‹ÝŘ đŘť­Ń:ýŮÔWŮ˝@Éd`ɢG¨ × ˝Ú–öÁt«Ř’ĚTüÓ§ěÖµ]ąš|‹UĹĄ˝:ÔĎYža‹ËÄ,śťÚr}Ű’íľ;Ě଩— ĎGÜł&üłv …¨±mÝÔmrÉmÍÁÔ˙XělZĽÝŘ{˛ŹPŢ(ÍÚř}Ţ­ ,|ýÜîLĐ;«™¦möŤĐúŤŐů]mî'ĚM’.˝hłhŕUŤŢąšşmxhýÝ >®Ęžŕ¸]®Ť °Ť˛ýŕ#ŚŘą’¶ťŽ1ŞŮČŰ …Ě,Ţ kVĺ¸â8â'6˘IE 5mÍ—Ý’ÔĹt"źŹćýáŢäy–PÍ$ÄFĽt9Ľ>Ýş78ŢgŮâŢĺ<ÎiĆŤ[ȭ̰\âWĐ}×ËĹŮ[)©ănΛ̹{ĺ›ÝĐ]WFśÖNCąä_Ţçéí¬”ťçm\˛łMo6ůć÷í䊖UľP¤ÝŰ#~FYÉĺLîĺ×}h˙{™Ł‘Ž"ý¸0žGzEé~ţçŠnĆGŮč‹&ăx˝Ś\J=í‚ŘôR˘~é~UFŞ—ŔäËĽÜ-·Îmľż;ÄŠŕEłNęĄNë|[UHěSÎÎŹ>ăľý|4M×`ŤĹÎâ+›^8ćżm fNŁz-ěÜ-ΑPŚ×ľăČ~•GąAý ěÚŤľő9č‚ëŽĹçénéĆţĽľ9ďĐbš/ĎE¬(>PHyFZč ‡§VH‚„%[ĽÎď2`OoďůîÂľé껆“:Áš1$=đa´˘źčř^+*ňŢăZ _…öń4ŢÖ®‹ĺ_¨é%/á~®Qš.ćąNí6.Ôţ¬˙X8¬•Zäk^|T+~yĄŹíM~µěď.îóÝÝńŽçŕ]ă3Ţ@T7ďá9ŻĄ˘‰\Ü.íĘýíÔ° {°kϰ Űc:f°nżaöʉ) ®MŹî?x70As˙÷r÷u?ř&ÖlOř Fd¦ęŮ,ń$ŕ›_ĎËIşťŽoĺ4Śę]ç‘ŮIZlŠů óě«®ńŽ=ö š÷Päí㤏ő‡©đľ¤›ďŮ'OŽK˙éZÄř`Ş•4Ď•ÓIŮłŻÚ{Éb˙ăeżí?=ä|dËţ}RI/­‹Ą´:üŐ}ě<B D[{H¸ćÝPŠÄşËí}ZÚ.­@•ú’oëţćoŤŰµJ@îó[?ËMµ‡ň­ćôíˇĄ“µW¨Ź¤Ë­çb˛ 2Â,lŤŮA¦f¨˛ké^-LĎöÖďíö4ę‚"Ë<*‹„¤s }JŁÔ©µŠ˝jłŔcŔxY”J¤lž¤%čőĂ=QrŔ¬ńöÎĹëóüý˝ µ#42¤Cx¨Čł8ŘČéHrPi9P V‰iY ÇĐć*úą0šÖąy ©š:ů ű8+kK»2´ăČűŰ <ĚŐ6 ŕ±p ZúÖ|ŠÚLmѰś¬°l*ĚMěÝ îä{[ ŁK.[®žÎŽî^bŚl ¬ö,M]mŻOO€M ý×ţ»uŰ <ÉPŠoL¤Č`ĺa¸bďH4ŻßĽlőJá;#mÚ˝‘ ®müÇÉĹŠTr°´˛"Ć^O ÚP¸HAr.mĘ‚°ťÎÖ€€ Č}ź>‚d ÇŇŁHăéąsP‚‡r•$#— †ăÄ|yä¬L.ך}2 L>Ź$ˇ’˛+ďdĘ%jŃbhë—Ż[(€*ń‰č\ ¬AmyEÜ(lÖHŚODđ÷”.Ţ5N;6­€ԡǓInL«2ä[ ń[6đŕٲ•ÄŐë 3łÍŃxĎuzíáµgÇF}ł´rä«›ß %÷wÔşš«–Ý*óĺ_ťo¤xáËăţĹË˙=řnëÓ©·gĎ ;(óôĎĂNâDřüüą÷ÇŐ†|™]ß]ö†]p§uç_ß1NĹ‘@_ YVaĹť zëbŠź‚٧ˇ[˘GS ÜIiâŕ k˙µ c‡śą7"‰ú¸€‰WŐřBkD˛!X‡ě'…+Vô$1)ĘĆa~řfčf ŹVâ6͉ő!y^”Ą[LţudŚIľ˛ŕŤŞˇ!ŕ€Yމ玾i„[śHŢh‚ź3’Ń&%;Ŕؤ}ŠŽÉ ťWvą§ťyţ8iˇMąh¦Ś.A^~Z(¨ß9Úc©zFš›—_j÷f¨®jÎX˙ăiJë¦SzŞ–l„ÄĄ3–¸W­ÂÚBšA€l ČŔ˛±ŠÚ*¬Ń‚l®•Jwí®‘Ę'č´Đ~;˘NąKk.łH8Y&ŠŚV™—©”Ę;ݵôZŞWŠf©_ű‚fM=0«n g°¬kŁy;¤´E‚›#ľ÷jűë–ŞZĽfF˛é°3,Ł·~®ynąăš,ŔÁ†©Ôîý^—ĄŮJjďÄ4× \ľb÷ňK˙6Ú˘;$Ś0 —ë¬~6¨Ö`Čüu›ßś2Űś*ŞUWL±Ůůé´PsÇ4¬‹{±ĂKAťYĎ|5Ö7cśĆÖfĎ}v±?Ř –č] ßţ[ĺMĆŢ÷=řß‚˙u8[‰Ž8áŤî¸â‘3žöŁXRí™®oc›ŕF®îwč Źţ¸čĄ“.9䪛ž:뀓LVݲ»,Źćmł};ć—wţÝľ kě $ŰqńÝUn{ćşďŽ3Ü{n<ń KKvě;›÷37={SĄÚk/ď«Űą×Ě»ľî¶ĚsЇ˝H×xżúq{żů÷ä7Ď9ţ_ÎóqŘŃĆß´é©`d˛ň»ę“˝=lJpˇ_ý8ľűĺĎyĎ Ë\ö®óq ? "™˙śăľ7}í}:X…ĺ”'AűĄ‚( ˙ö­&éËŰk¬7»ÖĆ„VcqçĂ ^˙Ć ÔˇóĐ)öEďUôŽYDꊂ&¤‡E&ÂvłúťőÄţp…T ĺQÄ/ŞńÁkŐđ´Ç%ęŕ„b˘Ç8Ĺ:Q†Y”cP˝.^p8 Fq:¶ŹŚlä™3óa}ô ‹ô©?ІقX ¨Ç2.Ą‡ULľvŔIpP!lw!HÁ P„t(iGQŽŇ”ĄtYÉ NrëŢŇ\ŐĘŇđq2•Q$.!JQöj—V Žţ?¦26¬L(´ĆpĂ™Q”&Ż.–ËśYóě G1GlĘ“·|¦9Ń M{Ş3žţ}śgb Xp¶s T¨g9Ł©O„4ˇű§Cqx¤7ú±źŕŇÄ9IiĆ3f”Śűä§G'Ę‚@Đ!”¤Í!»q‹âóžĄ&řŕY¦Ż¤ĺ±$á ĂMÂĎ“#đ@….*>†.t¨˝Ś h$ÇU¶*™Ěyĺ JŇYł–, Ă4]ĘQ˘5«[ĺ Ţ2UěŃňmtŽ‘9Ďe"§'V*/7ĘU¸:’ _ř€›b¨Íťň©#}¨_yáS¶¸UŁXŤkaçz†¬óŻŚýĂÝ’”IJÖźżĽę4/;Ř—ZV±ř¨?'›.ö• ¤­ÂW»R…v5ŹB•ë–8ŰŘŘjˇ¬Ęţ‘čgo ­Ŕ˘¶ĄMmk»% Őł-”Hˇz˝Ů'ő ~ąŰ j¸éüífëşÎĺňˇąÂĐîlZLŁ%«DKY 2ÉÔŻl3+JaŽúSßNײň]íkCpÚő˘¦˝ĘIŻOśęÍ# ëdćBŮĘd*Ö°*»ɬaéË[^U5¦ë‚l·đŽŕ`+PÁžŐ°?ú· jU/láá`ÖN—ş,ő bŞÉč•Ř&úĺJ7Ĺ„—,]ăÍpi| “!Ĺý-‹UëZ 9°@nň;Ĺ[°(' aĚ )qŻ «ÓjÂҵouç+á w˸Ť(@‡!PŮúş!˙ň—˝śO0ßC LVł“oşTKÄHĎ čÄž+ńgÉřąĎ|>AˇSčDĐ‹ôˇmhF+¶Đ\~ë‘‘|駢®n´˘#íhIwÔźµ©!}ęG«ZÔ>.šŁJŐ™')FńR\ß$벷]NjmZŔ¤Â”őş»ôĘłĆáoc8đŢB;•&lµ5f1\Q mr6FăąŔĽ°±e3lüÚ5ÝmÎu¦áÜbÂZđ×u}»wXě`ŠĎf=ćÁ˝Ž“Ă §Ct-Íë^ż[×g€Á`Ü…& !Ě~ÇŤGđÍ&‹3ŕ+8a 7ÇŢNxSţ: VtśăĎá““MćâRܵăÉ­ëî…ëĽŇ&ŮR.ó28Ŕٵóă‘€\űÁ"Źw–znsS´|Ť´ÝŽmŽő ÝJozÉ˝ŽsęhC.?ŹąŮájwÂ:Áç†1¨’M»{é*ľů‡hM• @„»zđ.Eö}IȶoŮzĹ›:ßlw†Ůä/=¬z€î1ž†JÜŹ%Xc­oźíŻČaWřÎsŤ:ůťcRm»ŹÍŚJ´âu©›GĽâĺá–:ŢD3š¸:*~‹Ohę˛ÓçaoéĎËž âý_®ł ýö%ÓâçvŕkI@í•EKnŁ÷ľůuOĽđcţďyâ_Ęřg«:®®üâ–!Śt˙ýëĄßx|p+ýôŹ_ły¶gž{yqţóÁŻpŚ71`pŁG&Ą·d…lÉ—SĆ{ĺŕm“P9ţ÷}Ţ×~Ó;Ţ;Q}JŇŘ÷jɵ!pK8rçKŘ`€|×x+ęÓ1gőoiĹJ|"oŘ},ř}â(y•T‡r#H~t‚iAŘĐç[0¸„Ŕł€ČYË—u‹`BNXw@¨‚ó[čO"¨vÚwtő4†_'…áWM/¤†˛c~~Ö‡‡<ŔCÁçî'†.‡DX”vl´vć–€ăDNmţŘy8|ź  {—oÄxüĆ€×-‚¨NdPŚŘöqť¤z“·$g–†ĺV‚Xä¤sPoŘe§Ĺ"45ŕµĺGł,C—š¨‡:$„°hXĆř §eĘd„ؤ{R c9f`ću`UČ(ÄřŠ}čzČč‡ĘH‹sH7ȧ2c^Peö—‡fř *‡†ˇX ĐĄŽô'‚Ń(`(“4ŐŽ`DD€čî‹ĎŔfűh+ćW^U–2ăŐ‹J3ŹémŹďÇxY𥅨0ăVtů‡”_ířŹ#…ĎŔ`g2‰5e5Â8­:- “‹#““3“˙«Cm1I“„C€!‘Ö†Ü臙 r6y:‚“Dé’§Gé:5ɧ††H‚*b‚w@‹ÚčzXą‚@™•ÂőŤ ”’·¸’jâo"&ڱŚZét)‹'fÇÓŚ˘ňډBöÁfjé†")‘hiŤn|X‘p$lŔö‹ţ¸—‰ApGk RQŮ iö—}po'YxŮ%I’Ö†_y™uiy s‡éGwZ‡>Ů–‹Ů= Ź×ËW“y«hzNŔnx™šů‰Éč›ĹxYH`Ešp–řV‰v‰9AxGH©ŕqšr<©—¬9‘ŔyŇą“­ph˙? y2vа´‘ia‹ĘI%Á'>·™Řɇ­ Šô@€Q7oI Q•u¸8h–«W$ę™tíźď™ť?ó©t¦—݆„D7š•É\%!?·šŞl c— ˇ¶x0çé¸~ĽIkĘt=iˇîůxÇ-!z‘’é”)šW0˘–ś˘'Z ëY€3Фiš¦9)J¤ÚąŁYů<= ™„„©`©’13ź:Ú™ZĄTęBžÓÉą¸X#Ę–‰…7@SŠĄ*ęšfZ¤űCDŠĐŤQ†±@yt©ŠTÉŠč…żi Z¦iަvE\^J–©—ţévzĄ˙yšŁŠz¤jť Zędzˇ{j¤‰”Í@€”ꡖ(.*=vzŁžŘ‚đ™©–f§˘ G0* 2Úˇvzp|Ф‹ş©¨ş%«ę©ŽĹśV¤€RŔÖY!y©ŚJ šZ«ŚÉYÁ¬¬J=M*•sJ%´1]XgĄú“7Ę•»6wbS.aÓĘŠů`ŞSĹmv:¬–Ѩk™ŞhŠ©ÁęŞĐÖ1oă ­Żz›t:Gክ¸şŤŰ®ÁŇş®2A[şś7X– ‚Ż© ®—Ŕq›¬ÇZ¬·ęŇ)”ÝŮ’«ŚŽ ©eS™M¨®ę‰§‹±[©­uę ˙»J®6‘…f¬H᭖ʧzť´ę˛zj¬(ѧ˳Óć¬!ŠŃj+GkÇ)łŘ ôą­Oł»•U›9S‹Qlşů´9K+úŮáq´‰p¶€´ °¶+®^‹Gk˘ÝxµđJ·m)·řµu Ç·Š¶€›łYyµ™iśS°°'ěfoź ·˛Ún+w”»˛Y[·˘ n‘ ’GฉK‹»¸FP­{zBŁDlŰgŞ+éfś »‘k±ť­B˱ČĘ­–k (÷±±ë»Ľ©®K®ÂëŞzPéö»ËËĽ*Ksާµ•‹»îz·ş>\ Ě«˝±kş˙@¶ÁqÓą˝ ľ·rć;»‹ľëËľíëľď żń+żóKżőkż÷‹żůëľŐ™ľčËżŢI±ăKŞ\ĂqśÇŮ˝ Lś`[ܡĽ«łĆŔŤ;ÁP şXpÁW*m+›ĂĽ‹ŕ·Ü›´łiÂKÚi«¶-ŔÁ% Ľ.Ü/ś2Lžč†4†Ŕ", ,¶ĺQ0´‘Ź>Ück‘Ź EÄ 1ÄAśÄ/á´ˇkÁUPŔcĚ2şLt¶‚¬˛pŽMd. ‚Ń.bl4Ô8-S4˙ńĹjÜ 9ĆŢĆeڶ[Ç] çaŹ@\{,FlLěćÇŢ Č¤‚ŚQ†Ć2AČOü ?ŚČJŚă¨Á…ÂamŇcbśÉ5rÉĹóa¤ČqěpüĹü1ÇS&-ˇ<=çřÉů‘4)S.é0€<GCŽě´\¶LÄ ‰ËŔŔ‹żF<ĉěË‘\ ÉË/ˇĚĹ|…żŠÂŃ\ÂŇ ÍÓ,-ŚÍśÍ۬F'lÍŐ ÎŢÎÔÜOÜlÎÚŚÎçLâĚÎäěÎßÜÎđě ;euler-1.61.0/docs/german/images/Plot2D.gif0000644000175000001440000001063407522222432017021 0ustar ericusersGIF89aŠ?‘ŐŐŐbb!ů ,Š?˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§“€őŠÍj·ŰwŔ ‹Çä˛ůŚN«×ě¶ű Áńp)Pô^’Ţô—wč7h8Ň÷u·HHH đ‚Gr)ňXŮŃ ňůę1ęy(¨y°‰ÉŇY*+;ńĘjëŞJ™:É‹ę[Ř+Şk{‘)r,ĽP<ŰěLüÉ\‘ląKś -‘}±mŃ]ńMN{JŠť‹ÜŞĚ0ţěţ4ÚÎ@ýAżáxZޏo üˡľö:ÄPJŢ»…H`)LppCDoů†™ ĆŁżŚţď)xôÁÄ #ĹAÉ0%‡ŐüsÝż™inĽ™ˇ–E%Ťé;©2($f(ô´phĹť5ârúłăSS1™JtŮT©Đ­M¤MJlťUłÚśz6jZ™˘•ĺ VBÜe&ąÚMâµÚ­—oŃń•޶¦`śs˛ŁË«arwنr.ÉKýV^ -aÍhs‹Ř âĎŕ›^Y:ń޶‡[›ő\¸ó拙놶Jr4ĹÔ§{ëč’˛á×n_&]›jňżkic6nYńyεůľ~ă[pݶűâćÝ\yxć°9÷ľGőâáŠbżű|îŐAŰg ŐĽţęłĹ˙׿śOô!'|öĂŘU]€Ý•ÇźlĆFa‚®ˇ7 wÖýw`‡n¨ŕzä9XÜsú×ßîABÎ'âk zHŁŠb0ÝÂĹó€<îaa…A˛hăŤ@*4ťJŠTd‹5>IdŹp “2~‡Ą“ů É%Š+v)eâřA•VšH ”jĆÇ!Śie.Š™fŠW é%žMjő"‰ry $śFÝůŕš†ňŮ&™…𑣎6 飒FÚh"”NŠéĄšfĘ馞v ꧢ†Jꨦ–Šę©Ş¦Ęި9* 瞇ÎZ"~n¶dëşůežQćz˘¬}Bççd"š(­˙Ę6Xg† ňš%ł ŽG(Őújí®@¦'ݱ„ô㲍=$Ď«Kě¶ß~ř+š˝ ‹î´ëÎ{«^ÉŢ+îˇŕ†Ž»Ĺr۬ž×Âëo»ř"«m´{fŔç %Jí0|€d,iÉf°oŻŔ#ś®ÂĂy;ěÁ?)q·Ď‚ü/Ŕ3f[0Ě&cKsÉęNLrČźěaQ8ŻL§Í-«ËqĚ5=3Á"ךpÇiôËůŰUđ˝ąč•Ź‹8¬¨“~6쥫NůčźË˝řҲë~nćś×ľş]ášîôëÄÇ~üě¶K}7óž;Ď{ňŃWüúđÉőŠĆ˝ôČ{˙|ÜOţíĘďžúČľ÷Ý=öBi/ ÷â»_›űä×ď·±ëO-÷9ćzß\ířŔüÍŻnË[`ŘČ2őÉ/áŕ3®>×ý/}Ń Ćh‡?ćn„Ŕˇ u6ľZĐ, ę˛QBV°ă aó8=Ă9k‚ŁÖ ŇÂřő ‡D3¨B*P†Ş‹aO÷¦%QO6ü!íw˙B@5L‰ßC˘ËGĹ01‰OÜZ»ř*AĺG´bCPĐŤ$ kcü˘ŮĹ2‘Śg ‘()BMŚ{tc3ÚGA ĘR­jäŞéČHBr’’¬$%/iÉLFŠ‘®z! )ĽOîp\ě"ń¸%‚±Ž^"7ŘF;‚r(˘ ß[×Î(ł›fs"ôęůLssśłŰç?łčĎhţ&4 N0ćŐŮGS¦ˇdhç|)Ăqŕ2r<$§=) ‹ôuGşP…ňňˇşü]ß0*ŃŽ˘Ôť+ČNM ÔŚľ´śŮ¤);Ť*ËyÖ´źËDj wúFř´ 1%[ď™QňÓ†íh)I#TBőUęO?Ęľb 5ź3ÍŞG9×ŐžŐ¦lëc\ Ťąš2®9UeU˙Ú־ʊŻÝÓkZŹj×”už†őŁÝÖúTlJ–™\Ýe^s¶Ř¤&™-¸ěú´óŘ«jŐ©oŐ(}T»Ć.u‰›őAf‘¨Ú¤˘6¬,Vm;Ú3ζ°${­f[Ë×z¶¤t=l´ ËZŇĘ˙t˛\Üícë[ßw˘0îrÓ‡\ż–¶· «s‰hÝHwşb­[x{\Ń–Ö¸”Ý®ĐâPÁőă%odÍČŢą•˝»Ënmą›[ÜĆ ľ‹ËŃK"ÝúÚ÷ż”3°~Ě_Ůů·»ç+ę~Fŕ—éÁ&ę‚sŕ?EQŤĘŤpň&`Ż€óË00U;^xĹN˝š&o\)ë“<ޱŹ{ ä7’““‚± d3˝úéż˝uÁÝŰňZBTÚ&ĆűĘ‹.Y˘#]©^•ŤáC¨w\S=5×)–qPŠČSřmöş74ÎŽ™S–ŁkŁ›ćq®X©DĄ“ŻúĎwÝ÷Ř[Ď#]ŕˇÍY{¶”Ţk§G=˘;+zŐ»ö7('ĽĘ˙"07ţeÁvq!IŻó,őľěż_8ŕý}vĽ?Úbá;ŁüťďÁ-9¶rˇ_ňÔ% $v{ŕ…ůĹxř’ţ<÷Ůďý¬żýBO¶;@ňx¤…P{V-ë×~X÷~ď$kÍçzÄç€ö‡Ý7E¨pÓ§ c¶ 1×Ö‚/x)-8WÂö˘vÉenÁ4€ĺ%}ş1kźv ŠVnˇPĹf8o·eŠç ábvuÇwRđDX}:„HH/|d–x~— Pč+G\őg {—…´kQH^e˛·oVŐ dX$f¸k8·†RŘv|]Gî}bHpuhy sVú¦‡{Ř€yřz)g~Ę‘]Awi‹ÇA¨4ułô÷Tţă{ęuđS‰›LČnĽ°‰Ó‰ž¨l(C}g8Š˘‘Šr§bî·eŘu­/ŻŘ‡ö1łH‹l(‰:ŘČĺ|‰8S·—Ŕ0ÂxŚ=W# ötź@Ť»ĚČm·Č‹Nf$Űř€ń§&ŘŘzD\“h内‰×6ŽUM?Ĺw„¦/±‹ůGЏëŹ\8Źbřeő†čŹjÇŹéŘŐ菶u¸k厗¸Ŕ†Î. ąŽ$·ŹčŘŹV•g ©Śs(~ÄĂFiç%™z"ą&!ĆČh|&é (IًҒŮç70“Ú§,Ńev69…˙¸ŘBC…“;©Š¬–€Řç8B9’ H+Â5ť@•ÜX~ý€éWP ” Ą•ŠÁw¸„d}ëS_‰‘[ă–)Ž}±naym™s ą,™u–x—o©’ç±{ it•=Ůy”zą—ťĹpHTř”2‰—±”‡ ć}}I‘véešo3ź –p†—é…ů›9–eä™$‰–D™L'CšŹé‡€šLĺš| H˘É˛iŹČbc.Čś%(ŠđśÍ)ť‘AVťŃ *ś„QÁ .šß9‘t×CäX—wéĄ žâéśIŚ9%” źcá’˙vś+ąäÉžćą虞ái9V™—LuuÜ) äx›ŕ¨žRYř9›O´ťd%x<KüůşšRb Ňsé ZźAcˇĽŮ 9˘Ć( x ńyZś< ›Ë ĺY! ©6ůŮžěčOzÚc Ş ÝŁ8ĘęÄź)š ˛X˘źh¤Ż©%> ¤™Y™ aŠDMzoňxŁ-*“Xzˇ‚ ?ĘĄiô)ŁEŞGФţy…Qęs'JŠÄÉPčť6jśta¦Vj^ ˇvޤZÚ|*—ÚK*ĄdZfţp¦;!¨"úĄ[ ¨=רßXrę¤.z§Ë@ś‹ş§˙iş–ş: š—“ŠŠ•z©SЍ/šŞü§§µâMj Ij(<şp*‘ô9Uéʫ]©{­ę2ŻĘSzŤŹ*’ÂzŞy“2»:™«Ęšżj¨‚¬źşˇĹX­9:­ĆjË ¬lę­ş`~Ě 0ŮŠ×ú§ĄÚžäJ¬±Y ÝŞ˘˝záÚ­ ®YŠ$J©éÚ ¸:i&®ďÚ¬öá†âJŻűZQN9+ͨ{ üzţ殱ЩJˇ°ýą¦~QŻö¤łšŻúj !»őŻ‹Ş÷A ž Ëży °ş.K'jid% ›'_8˛°„ę/k›đ›íłě5´S ł˙}j« Hdł6‚ł«łßj_°ŢŞ˛Ŕ˛QkŤ‡*.9UË ťÓ)¶Ř9¶eK¶gk¶ÍŮ×T´ŽEQţ·MI{bZ^•ł(‹~3ňŻ`@m›CP•{ «Ł-A·łKw‹¸ôă¬%›}ł›/[®rŰ-…ű%žG˛‹«ązp§ĺ®|»~;4˘›=\K|Ž;¦ză„R«µ™Ëąää­Űşz€şF«ŞsŹ[»É:9ąËşx µ,iT#K»ˇ[şŚ‹»Č{şĆ›şťm˛š©đZµ)s[Ľ¬@ş$’˝łŔ€Ą;8uÚ5ä÷şă ˝›SÄ˝;{ß+ â;]©FK˙ěë¦x3Á›¸‘6i¦+˝é!żí»I¶jh»ýë§S6·[ľĘű»Dˇ+µ×»Ű«e–CŔĽ›Ŕ›{Á仿˛ ĽyPÁ ÂËđÁÚŞľ%ĽŔö‹Â|Âă2ÂćzÂŃšľ1<żć;/ÜÂ! 5¬ŔÓëş ÄÜÁ<|ĂDśĂ;µĂÍ+Ä÷kÄAlÂ>,»I\ŔGŚÄË)Ă6¬ÁOüĂKśÂ~`ĹT ĆTa@c¬elĆX€ĆilkĚĆnśĆplĆr<Ćt\v\`¬Ç{ĚÇ«3G!𛀼´‚<\&,ČHŠü&ŘÁČfŹĽ˛…śš”Ś’<É$€Étď U˛É€šź ĘK+ĘĘ”\ĘJ›©¬Ęš\ɦaČ€\,¬lĘŻ,Ë‘lË­\Ë´ÜľĽČł Ě#ÖË» ±|ČĆ|ĚĂĽ˛ĘÜÇĎ ÍŃ,ÍÓLÍŐlÍ׌Í٬ÍŰĚÍÝěÍß Îá,ÎăLÎĺ, ;euler-1.61.0/docs/german/images/Plot3D.gif0000644000175000001440000001014107522222432017013 0ustar ericusersGIF89a3ń˘ŐŐŐRŢRbb!ů ,3ńţşÜţ0ĘI«˝8ëÍ»˙`(ŽdižhŞ®lëľp,Ďtmßx®ď|ď˙Ŕ pH,ŹČ¤rÉl:źĐ¨tJ­ZŻŘ¬vËízżŕ°xL./č´:mn»ëÁ‚@€Äďë·žy‡u!xr{†/q€3„x‡}‹CŽŹ‘]‰#‹ŚVśš—y(žźmˇĄŁ)“-§¨¬ Şj˛˘3°±¶„{®9ş–Ľ#he¸>ş»ÄĆ^ŔDĘĚÍ˝…WČJÓÔŐËŘOŃPtËççtŢÖ€âHÚUĘňëŕáGđZ•čË•őîáűA. ż~˙JBGŔ] }f<Á’¨đB‡- :Ĺţ‘aEhú]sqÔÄt?ÂQ†±›ŹÂüĄT9`^K5d"ČaőjŠôw'P;74Ż˘ĐĄEŤ• Ě4sC§ňŞy5Ş ę:$ĺÂíŞVV\—¶ËHŹÄŘ)XĆ<«IhW’`»ą­jD^Vźý5{:Ż!˘Ľt[•L&30`”‚m=}ŚŇ0^ĉ3ň­!ńgcČzuvl9ŁŠ>ŢĆčúńD´¬!—ľŚšČf'[Źöiňg×^K`«ťD5žČöîé@p·sxG1naŢďĆM ůţĚŃąŚáŇł-fp•r:ł˘˙šź}8z:0Şă24«>ó&ů•S>N~ćţ±;ĺ-e]dÇŕwžrűńçŢ{{üS2g_÷–•wŤ4đšˇsG~ކ@ę÷M¸ElŘťóŕuˇaAbVM%h‚;…U‹®…ŘЇ"nRkţ†! ť¤âąQĆc‡×Ś7N“2 Ť7˘Ř’T ŘdnČ9w› ĄOu`™Ą–˛ŤáĄgćAg7ÔQ&hq±–&Ń1—ĺĉć_%2Ä`@R"ů¦n‘©ą¦†=ĆŹ áś’R5¦ -Šç{Ž> i‡:îC$ڧj¨8mz8ÖIŞ7ůĺ$Y«Îw)ią†‡Bť4„Ş»1ިýţÖ]TŞşĺśĹž×H˘( cĄP^ąC­-jsĘÂIĺ™Ęzăf¦ZŢkÇ" ©łE~«^¤Ś^gk™~7Iş§V*§Gíş›¬ź†š+D€,ĆfĺĽAˇľӨܑ´JbÁp /˝ÝâŰďćĐQ¦ž^HqQ]\™Á=Ü‹PržYŘëy,s*Q#*—\'WlńĚ 5­ş”z'q8ČGÎ$_K¬¶©Q°·I4»ńżę|´Ż4ŕ·4Óó=iď'˙:Á¸ŇnăńŐcÍ]ż/sćň×`[ q˝PG}¶®şUÍđĐŘn âÚL­–m×M©ÖĘęäp)žYój‚˙ż˝*ĚNg˝ň+ 'Ž8a˛jť7Alďä.¸,ŰÝ•]yŻĄ–@¬?žîg¬`ňVv+Ő­îdľśŤöoąď<łÓ¸…LZí8@®Űá2¸;ď˝·¨$ę¦}ôŚs/›ësĹ®Až13ß<ąo8=őR˙ą^Ľ-ntÇbŞúµ/ű ůíkÓaţů‹“ŘLÖg¶ęJi\ł¸ŞD(q1ĚL…Â_‘nGAňőď\ń¤CŔ$`*#öŽó:¶ůë„V+áŘúÇ—apÎsŇ MÖÁönn!%ž·›j/[4âQ ¨Bş1†1t_ţxÖ3;eŔ/S‹› ¬ÖĂ5ĐGţpłÜń¨¨ą‰`°yΫ˘é¤ŘDŇ=ŃmÜÜ |¨:%Ő‡uŕŠX ł¸E†|ŚX‰–äPQC*k÷“# <†î}ÝŰ™µ8ŢŹrtM±ŇG?VzLŰ Ŕ§9ŽE1€ýC`»­GB‹x Z%-Yş÷‚˛ăâźĹ«ZľlŽ€›#ÜügJ$bŽ~–XĄµÂ6ć/yÄĺ°'3[ľ.’f"eŘŚřE$Ćp‰—óŹ0ÖĘ4ó{%Ń8–Şí-S‹ý’%ĐnIÍj&.GWÔÝ(a7IŽr‚â{4W8ËĚ=o°“`Á@¨Ë*°ťîD\ ˇĚyŇó_bţ (S*HA:Z´t¦ëżdúç1Ąç|B€rСô”G?YÄŽ2Žř+' ĘŠVÔ^"©ó®ąĎaŤ®8á´=ZŻ‹2’~ľĂ¨D‹&ÄŁ®s>9ýÜN“čS&–±Ç*$˝×¬•“_Z*Ré•BuęfŞ9­É;őčµ¶\Ő6i$+±UuťTś µĎ:őkM¨B%Ş'¤8ˇ]*Ťf=‰WP§ŽÓ™Ţsé-9JYîĽ3Ş ńÜ$K m® `‰ĺlýiThÝĎŤ4i?—ĆŇ.Oł"]š5ŻIÖľ9î°Č”!÷XŮđ=öyCX.i&ͧ¶3°µű˙Úl•LĂŽ„şĺě+‡HSOÍ%ŁŠ]¤Y·†Pä^Śď$îĘXĺŮĎć¶GĽEccÄČ®*5ť˙ -u]h>ďňĽe¨•ŕ …˛‘ BăŠh@[{NTŠÖu-ď=Cú?äRs¶ťŠ%9WCŢ9˙®¬e;ää6XŞĹ&õţpňÁ×>ćńŁŃ9ĽÂ‘´Y®ąÍ3Ťßä˛[| ŹÁ*ůÇRsóšQz…/´.z훼ľLoúZ‹&pó|(KMÖŞúY~ď˘}żvš‹ÝĽÝąX2‰CŰ꽆»°ź]´FbúÄtcíRŢ<Ő›Îgç»|Ż˝k¶W7¸őëŔíhđĄˇËŐlkőľwÎ’ě–ć'¶Ç|]8Ęť#±=–ßüÝĆďQĎé=éěŇ>Y´Řń)čÚ+ýĆźµ$íŤ5ţ„|xx‹Wp€•Of'GHu÷{ęW‚d1}{Č‚x‹‡l€ĺ<q 7v+ĐtHâţ$N'€?’V0膗H]¨‰Á·y¬čkOT FlA[~ř]}‚x  EŘcůÇox?†lŻĆqŽx†‘…ke© ¨oʦÁ¶+¨†VxÖľ´V/QpháKcwUjߤ~—ă`¶H‹hŐWČ4Ńß8˝¸ĺXc€'Bóň$×ȇ[öq&fŚŮ~ťŇŚ·PŹwŹĐČiJ(·3ú—ŚhŤ×H|¨Vaô /1Žâ 'WMh}ť„ŚîŘ]đ†Űv‘˘Ç}Ł ŤĺŘ+'H§Łnx’a·“íG…ĹÖq\ů‘©a’AgS˙ĘD|™x˙X{´’÷•0”Dą-…`’4éh1UbÇÇ‚M [_‰mřŽěÁTY•|˘!ĽD‰5fWÔ‚ŘWŠd„eŮ ‡‡ĎP-ůhwGYAʸ”Dř”3…‰hk©ř ii1!©’ě‚o‡'r‰†s–Ť9-űs;)™p „,ů“yb3y_Ą˛™˝á…Ô“° —·‰_™tx‘”H“ŕç u‡€wšH…Oą†ź‡’©?%§ś‰2—Uů¸–<©’ŁX„•hpaYť€¸VSŃ.Íéś—q©‰ŚÔ9wÖ9ť¦)‰”™›¨{S‰š±h˙™I™Ů(zai_×Ů`U¸žşIď ź*đpä —•–)™9™ž}Řź’Ŕ›˛PI{i ôi >&š~Y )—ŔŮžoč :L©ŁšŹžÔą’~řŹëy;p,ßɡ!şˇi8›™ť±iśbą‹Ľ(İ> 3jžÖy 5šˇ° ś/ÉŁÁť!™’öٔȒü©śf©¤=*”)Ł6ĺ”ÚyäY¤9Š:ŽŇ˘zĄ-¦ ¤—©źřÉť*úxé ej¦jÚ}ĂÉťFJ“Ć©ŁĚ‰¦Yú§G@ ¶¸i¤k9Hö¶˘AafęA·§lZl¬´tú Qđ—˙o9˘YĄqz© ÁŁ›z”5 špŞć%¨ŤÚ ^€Ş«ZAR7§ q¦*墶JŞö¨ęŞN1Ŕ¬ÎHôX¬Š¦©ŔŠ ŹŞÇÚ¬ąŞ¬ ʨĹ:­ÔĘM;J­Řš­Lj­ŢÚ­Ţęˇŕ8®Éj®Ĺ®č*&ĎJęş®pĐ®_ ňZgőZzĺ ŻšrŻá†©úš˙ęźţ°vŔŻ_–Ż Ž‹[›°űJ°Ď±°ó*±ůа‹(đZŞ;•+»±۱=đ± +"ë3°Z˛­Ň¬ŁŞ˛{ń^q˛Ú!®Łł. 2ŰŰzłŠ±¤)Ëł8›ł˘ş@ëb˙B« ;[´ńŮšI«´$q´B)°N«/PŰ«Ä:µžůŚM‹µúbEQµŇŞŠ[˵AłU€«d›`{µD›¶VÉhë¶vb¶·ćžrK ýʶwKB‹k»±t‹Uv»·ů¸N¤·„‹U 뷉ۆ»-۸gPŻń·X “‡»ś’Ëfę–+·Źëp»ąăp–žKşşĆÚ¶¨{¶á(źŰşŞ‹´ŠŮşöš{§k»đŃp°«»c0»WĘşľ» ĺĺ¬ĂëµŔ»±{ĽšB=ËËĽ’ĐAĆ ˝zĽf÷ĽÔ«°eSŘ›˝Ë›Ýë˝ÉŁá+ľă{¬ĺkľąrľęë¨0ĺęľď żÍ;żŐ€ąbbżAQąú{«Î*żý˱µŔ Ŕ|ŔśŔ ĽŔ ÜŔ;euler-1.61.0/docs/german/images/HalfPipe1.gif0000644000175000001440000002043507522222432017466 0ustar ericusersGIF89as ˘˙˙˙ö˙ööööJŢJbb!ů ,s ţ( ĽŢđÉH§­řęĚ·ďŕ'†äh–試ěú ĽČplĎwŤďzO˙9 Oč ‡Ç"r©lźI(SęŚZ§×*v«íR©®–8L›Ëčł:Í^»Űßlś;÷ĘďtĽ=Ďßűë€z}YmoŠ‰Ś‹ŽŤŹ’+…•‚—„†™ś›ž–ť źš˘`“§‘©¨«Ş­¬Ż#Ą¤łˇ´Łµ¸·ş˛ąĽ»š®Á°ĂÂĹÄÇĆ'ľË¶Ě˝ÍĐĎŇżÓÎÔČŘÉŮŰÚÝÜ ÖáŃ×âŐ9ăĺäéě\Ţďßđôčňńřpíëćýüżô` ł÷OťÁ}Öî)ĚÇ*  .śČ0‹ţf ţ±‡=t †Ô艢ɊnčYč€%Ę“0!ś9˛&'‡E@*ą±§Hź˘b }ÉA%‰;‡*ĹG¨ÍźŁt.á©jS¨WI.ÝJ´%Ň _“v»0ëSłN#vü˛Ö†T¬găúäJ—Îa#’Ýë -Ü´•X˝2Ç[żĺú©ËřŃyDnLŮLbŔ—w¬ÔÉaĹ™Cç¨LZŃc1“%ó]íJ4fĐš‚*ěŁs`×·ő”Ţ}ć®™Ôy G»8ěÍ˝l?QűµóŬŁ3ňÝx—ĂłËlžű9ç~´—{çn\»y §§»Ŕ.˝}ňÝă ÁiMvűăóËOr~xţúGěáĺŢ€”gŕxꙓ`ří§_fý¸“uH…–߆¶ERu€x ńEČu Ąˇ‰(qř`;á]´ŕ1ľh#T,rő_2ŕăŹ?Γă€.’¸ĚfŠŮ÷ăLúČä@ŢPŁ‘#Ş3äI;"ă’“Mđd—]J`á•-Vif."ľ@~ÉĄ›TUäśşeČŠňŕ#^ľŮ旀ƜťĂŃycČQ €Ŕç›`Bú¤“> ¤čĄW‘ůžÜĐ裀B¨—`ş©—¦DŠiĚŤ·§žKNJj¨±ŇçŚg®Ú ŞÚd)ĎŹ|6J*›ˇF:+­¬ţHh™‡ć*}Üí ¬°˛vÉĄ¤ÇFš¬®Ü&´ě=ľn㨣Ś«g©¶ ĺ°ÇŢúmtއ«sŇîiîźéJZ­­Íö{ Ż“p ›|Žëh˘®{m¶ ÷™í¤S/w’Wď¸ĺ’ËčĂ K)ĂęŕďÄîĽkڞŬrąö"śîş‡<*”oC˛ĐęWoĆóěi»űé°ÇCCÜ­łuÖ\F¸ëłĘä"LlČŘͱČ&ŹuóLHÚ$ĆŰ‹±Ë ëK)ŃĄŤôČIg­ŢKPü¨Ü3 3śč&üň¤Č*=ĚÖ!UěőÜaóü´§zďŤwµA÷}4Ű%ű-‚ŔÜ˙°üôĺuoĚq“wÚyâśó-¨Ű ®ŕ”h9Ý3Ô·śwč°»łçצůří4H~YöZNîĘ„ ç°´ŇŢřⓢLz$¦“Óµ®+ű|řádŹ6¤Ç_hó¸é>Óń7Ýâ«\=ßźŁďů̲›şü7Üc’óŞŇj üďt +»ěĂl6˙ÇkęÖĆ-!˝+ćČ7˛ŐjT S\“ç=GÄ/‰2NćXĆ:±ĺĎ\č3[ú@6ÁĐQj€»”ä(G±n|÷3ßů§>cŐtŘ;`ßC@_îh¬ŰY=XQ míC^Ůúd*âŽ;SŢŔčÁÖµŽţ`C\úDĄ/˙-‰źk—ßW† ja~Ćá ÁVE,Ší\ÖŠÝćJČął‘QOL!ŞŔw’°á/‹BŚŢÓŕ¨Ä×1ŚrD$w¨3ţŕy:śÜĘHŚOĹű_ç©;şi[Ž|JŽtř§Io’X,Ô„+ Ży›Ő+5FF†R-)üÉçÂT&Đ||]Úľ¨ľC‚MeGd"ÂíQkßô‚÷ÇKĘr‹#Ěd ŰŐÉ&µ„‘e\&2ŘĂ+ţ1’L'0ˇYHb0‘űJÜ­r™+íÔ˛rÓT` ˇ)ÍuvQ{ŰŕúęhL˝ Š”ŕÜ=§ÉrúN•ţ´b5i.ru –± ă@ĺ™Ä8%kˇ*´»b9éťrMéϰ·°úoŁ\4&7˝)–„Z¤2@cí'ÉJ°§†űÔŐ8éIEnłŁ3hUKä„ňnŤV\ ?S ĽWi,“ś´c,»ÉQŽîž5›9qŠNTŇśűŚá§ IĽĘs¦č‚«A‡Ąś*†2ÎÜJIW7QJ楗´¨0ý„CŮiµ«1-ŰŔJF é‡ńâkÜzŞŇs˘ŐSťŐ–XTxε4°Ý-K˛ĆN¤~­$%'ú»˛b6l°á™(WYÔ ‹m¬> §S»ž2š ü pY+·µbR“^4˙Şg‡vÍŘzDśLĘHëň5Âťô…i]mŤ»$äôĄq=jl'u›b 8 µëP‹]É7µď lfă™ŘÖVtmź,wŕÄŃšÂ$NĄĚTÓJUúĆeçľškĂűnRĽě“y€ČBWŞkŁý üÓÉĘTa$Şgß:ŢwWJţF>ňę×wę4pe'T–-Ž/u%AË&^đB)Ö­cŹÓ_芯~~<0|c ó"tTŘĺëz¸—s0Ţc†Pż®Nłgťĺl°gş{©./•<0Űůµ‚ěźLŻYĐ@ű8Đm§m šVőö‰Žj QGřÉQ汫ýlé®"»RFuŠ’D`–Ą6µ ×Ţ{I“ľ$6l™Müjk KHť‡\¦daČIĆ1Ôî{ë\Ńt mŇÜF3ëÍcÂz”#qöV7ĚâÓ¶Ň l7qű L nR®uŚ'˛ëMĂdg Č,ň‹hÝ’Ç‹I°ÂĹóË+sŰÖ÷ÁË•© ăţlšŠ‡ÖÓ€‡ňpÝ´łJ•ătÖřD…š9Ǖ؀&áÎ٧sĹžĽ‚YQęłŕĂ×]&ťĂ~´ţŘhŇłüĎ—ž:mŐnBVEÜިeʼnqq}bî—3>5UąË:‘۶hR9ŰżđdnŔÜŤ1‹¸“Đoů|-µx®lŮ‘žRV•¶6ŻzÚµ Ţžż• +;6Uˇ“śTݬmŻŻ«©§×攎­ćC^őŚR ‡×SBď…ôććńN÷ŚýJy˛ó]ҵ2;Ą9rm{ŢŢVf<–sŃ+GýüôzkKýk± 1c 6¸ßŃ>řÎsŰü4Ă}ľ˝ŁuůĄÎî—Ő°j­ ţć_†_š ˙ĽťżpĎ ´đézÓGZŐ— s—Ş“w}H«GEtČç`#§iś·Der“V5±xťĐxÖ@FpîŐ€ń%f—ciuÝÄ|+¸stEăÖX4'ą·(j„]"¸†Őt†V‚ţ„sX…—U=4•X:H"¨.ÇF›ŘtëĆ€š(,˛řq¨v‹(‡ý'G,ř‚yŔ@G y č€ě¦ZöW0_ćb‹ÔDY™7Š&xEx[5Š?ŤĄaXM( X`ňW…šX\źŇz$|S„řŐ‹ěRŠm¨*ŠKSڰWۧ1ǵHaC$řzď¨=Ő~VeŐhuÜ!\Ó/ß;“d§mn>#đe…y×RřŇ‹"Ylő‹s őH@“ب¨e‘g•zšŘ9c>řS-U’„GŤ^eŤ Ł0Gú¸‘’€ŃŠ˙<\TµhŤöŹć~Ŕ56ç¸jÚ¨Ť i„»č…f÷ |8ŚÁ0”3XSőP'“ÖujőpNUČ(jlG‡Ř“"G\„`É,?1‘gŽ8P]x7IGWwťX“d7‹y Ň]óF{ý‡Zé(]Y$÷ŘÖ‘€™XIŮ}®~FgRśŐ… É‹;Éźd—ça“i cĄŮWÜ÷}¬“–RŘ€<łVÇV h>–cu•V ­©GłśÂe‚]Ëř”§Ć”†é)…čqZ%BżČ‹Çí˛wY22ڎ\¦”ĺČh`c›3÷™ĎY.L‡ť”iVůž˙˛r•A&‘ Ýů édheNËŮ@mÉSçhpc7\cĆ|f‡ť Gź¶˘lż±,ĺ —‡‚$ł|‚¸FiůWIyśŘ™’6š!DlP§‹h=eź˘w ř öĐ;ĐąOţI ‰ÎXž?Š1Ąc Vi% ”´e˘K¸L)Qţą”SĚhg¸ą¤CťwťŤ9źÝFĄ»x Cz#­ź1qdŠ…Â%Ł•gRθN}ç0j’ ŞY&Ş•Ť°˘­ÁF‰;Q™Ś±(ťž(“6ZŁ€Ř†&ĄB¸‚mšť=jxÔ ˇ$ rş é}Á2ť`7 “ĺ¤w¦›VT_Bź˙f¨˘¸ioŔĄ#·ôŠv'DJúźżE©~´ŽDäd™55€ç‚˝©|ę˘0ü ¨™" ŤZtGM¶Y|Qh©i©5Ç(Ä“ĄuóYP š~ ŞĆP÷9PxN5yEižg*‹;¸žW$ŁéNťútŘdĄŰ«ö¸ŇŠdą‘bŞ”eů­ v—OÜő'%”“ł9ýZ—ÇąâP§.âu,CŇčKdŞN}Z]†`$śú§“]ÄsŁ8°KŨ[ĆhJ‹ËI–Nť’|b—Żđ¸>Yř“{ĄŞĐ«nŕ şę,AŤ¤6Ž–äkdÚ­$«žŁ›>ujJ—ĎjšŹ¨ ˙ ¤C©{Ş–i‹†§!›RśČłUe–…˙Ł ö¶ .NÓĄ@×™Ú—°Y¤tÓä¤ űźĘJ–ö1X»YDŰJEy;Ń:JEzŞx­Nk–݇¶®š‘5{€÷@Ŕ9lĚ÷ ]+G’˘Dŕ!GĘ´yzł0šł1ćĄÓv…ąÉ¶Ěµ©DU˘$š®¬iśŐ‘5ő`şk6{§DÔ°•:©ůä—§^ô@Äb¸ľ”_90Ë=é•aú[MŰ·S8µ*skhyňF»4dĄżxĹo#p†^şŞjŰ”{»¬»že»…kŠ^Ő]Î ­ř©»‰ĄŞ{qµ©˙Tű‘ŰştF´ąĂł0řw}˛—ţRz‚k§ZĽ1龬ZŻŃCŽ »zű“\ĆÂ\ÇÖp¤§ŠÉaWĄËó«RČk‚ i…ą–Iݎů3 |µUz˛XŁ„Ě”ŇŃ’ €™ě;gżđëS·z«u.ĂöYŐů›:†C 1ŰÓ[ yĘ”/4ż"Ką•ű°bgąúĂö ”ůĄ|Łr)¬šĄ•źŹĘdŃttwz¶P;|y…„Řp ś;ÖĂŽÁçë/éK lrÄ×Q˝će<7¸ÉÓC=jÚÇx#Ąű«`+q˝!,Ě»d¤19Ç#›˝ęYEÄJM:+ťâ‹ W›i‘¸˙Ŕ„úš˛đ˘P´ů´˝É39ĆIě#8¬Ă#Ú6Äş " Q†)ŔźÍɡjIĘ^Ľ¬ę˘­±AĄĽťŠťjś qÜ®žv °l  ŮĹĽŞÜŹłŘ°Ć{Ŕ,ÉăÇ9ެńǵăl€ĚB©É¤ö¸˘|łw§Ş¨ĚÁeŰ‘JmGĄ‰ťĂÎҲDä¬ ±±oHąNüÎR»Á4üËF·ł¸Ç—ëË—ű(«l«ęĚě—˛z˘ŃĹš,űLŐű»ŁŚ‘Ôü´ ŤÍ -Ň#±÷2±¬ $l€ĎřĚ›×č#}A Ď+ oěOhV4Ękf ŁÚ¬ÍňĽĐaĽŚ˙P˶SÚ$0íŇJýxqŚJlQń8śĐű ÷xČ‘Ľ±©­Ś,y/F ÖuŇîŚĐô~űłÔkÖJýÂ%•Č«‡ŘŔĚXÁ—ßá`nćűť}Ş cţÍäMĺ ÔQ¨ýQ8‚Šĺ|ĺÝÍ·(Żsvć=ÝŞź8á-.ĎnNÚĂíd8ŽÇÝ-勱&·ß$ ßaž\­y–˙ ,ŰĚŕD^ĘJNß­:Ѣ>ÜľćČŚp®­Ťdž%Ţ?6ȇ ”x±Üuę}vżÉMŇe.čţeMŤŘŁ­ć¨U¤/ p©ŢOŤĎËu*’~¸ŇĚ1†m×ŃŘŐ¶mëž}â….솮ćĹߊžęâžČçÇjXë‘cBë|™nmyÝŕ}˝Çcě ČäŢî©9đWč‰ÎÖTÔgjš,î>PCléĐܡá =ćň>ž/n¶/ííSNęP®Fę(Ü«Ţč˘}îR %AȲXxžk˛ŮĐ,Ўiď—‡n đ˝ýćŠ=îl ăţńocićęéţě˙tĐ7-âĎÓßí±PÝ »ďÎ4ďŰ0=ő.góÁr‰=źőű˝\5âM`qđnsxú‡Ţz†‡(ď ŽćK˝íQżÖµ÷Mm‹Ç®őß ďÇEđ©Ů®ôŘÚŚ›XÝyŤ–U>žé…_ꦴě7OölŽęlđ‹^îx[ĺVôAwç&Źšô_ ćQ%s÷:ńŹŘűľ3R_ő§~°Qo÷yOúZSŠŔ^oFř®âźŽ“}Žn׍řwŹńT÷5ßřČÎÖźěp^ůS¬ă;ţůŃKUŮK÷^ߣßíţćôí»ĽąóÇN÷vŻę7Îę…ESććCZÎđGŔűţFń#(Ýu&óŘ=ę«úËľý‹ĎSŤżúIzüáŹdĘëfĆ’Vy±ďź’c‰šŢ޶ě۲KĂvŤßzÎď6Ch,Ă ‘xL!Áâ’ TB¦Óełú j·Dް †2ÇZ¤ŁA( Ďěµ;ëĄX,Ś}Ęééa˘ľÉźČŃqR(xř—¨hȸŮ&Ő„täő%µĺůYuúŮ•%D÷pIvZĆVĐűFÚ¦P§qW1UPđ( ,âłW#C8ŚLśĽ¬L㪠u„µ9ŞDŤméim‡ú5Ę:^ţ šţ†Öq«ĺ>áË<ükď¨hyżŹß˙Ěßţ"ś.a#§I”“néŠ)…Š‹8§&Ž“Ą Łë4zÜvŢ­x|ń HŻ™}*[¦|ILśVŮ’TSřPŰBn yBĂÂ&¨´gĺĚtÜř1é¶Vr쌤c Ě'«ú›ĐjVZ"Te“E…–±(ĵa(~›ÓÜŃ6j”ůŘj.\ćˇü+ĚĄ`Ćž*ŘJ6°F©‘K‹ö`Řłoą<ű:ÎčEśç®uÔsP#KÓŃáŘaŔ\[÷+Ľ56kŮUÚEvň´­|7ăˇ_庍F†Ćą®l™v:J“®˙"ľNCöí«u`zR6Óµ¸ţÓlęŽŘ6bµÎq­×‹–çşn¶żŰäݧxňşWď `a˙ HÁ Ů6NÂYolýve™MHÜđ‰fÖč¨#K}"éĹ×tFÂ]‰$°dbŠ.ESnćÔSBâ­g›8Ą,U{ńŃÄrŃga‡BÚ"INů…€8Ă’NŽ[ŕ|cMŽIáP©ÜcFĵ2K&>ľÁQžA‘FFg”©'VţÁ©Ě[aÍß•Ę4S…×xŁŮp‚ľ(^v5~Š®#žS Š„äjJşi €OΆiUť@co j§˘}¦RhÚQs‡.Z‹‰Š9ä˙ĎE·‹iÔQJg®&Ŕ6gŻČ2S‘y śž7®EPŹBú%łČ"Ú@â¨ŕMięR«š®r7i¦— b)®Ţş)ޱŚYTĐnŠ Yź\ ʬ˛¨Ú÷ž™±–Ůŕ{z®Éź_Ýę p Şś˘ť”pŞçžbµ;*މJ‰qěě¨đ9÷Y9±¶ŽÚ1°aÝ~üí‰ÚŤKňÇT.,Ö–Šőt^ĘdéčaRň-; ¦±”o9;đÔĆ|ĄV2#űšŠDĂÉÍ}ăĺ›.ÓŽ![ŞŽËaöÍS3Ë´h‚¤1­¤ő—dČ₌KdÝŹ—ľ%ËÖ°IłČđ*ń–Ë*s­Ö|w¬É©1q}ţyý,ť­âMx1‘žŇeŁĺé4O,Ăuá˛9b=śľVĂŠů˘8Ű‹cCü‚-©ŘhŹŽŻgź.€ÚTË Zě^Th«UĂZ·˝SÎyÝ6Ëz=‡O›Ł#~41ĽźŚâc©;ÍŰ(ĹcQyż›{ßfNíÖD(gYy_—6«‡·„úآ—.gůAkNŻYÝč¶ ôyWżőôś·_1pŇÖ˛.{epŽáy-}PŁ($p]păŇmfŇáÔĎ\¸łŢÎ,x3×oĚÓ÷ä8¨t &ę+áůţ óáŠ3ÇR Dxc®)EÎvŘ3ć*¨9úMowŚ×šŐ¦Čtý—Î…%ś–óTŃłj]3‰RKj°`­ě]¶x­ b«/M«g ¸ÖBO„ÚDGK·µŤG¨_jd'k×L(§ {ţůPHXXŔę–˘‰hŇná ľŐ ꉌۧŔÖ>v˛C˝!í´Ol} *€ŇgŻŰť™˛­©ÄŤ"!8%Č2WĄ=§]]kÜ6' ¶ś.Ko+Áňö·Má|ĄJU€z7'ŁbÜků(ËŞ7Cídś-5K+Î^ » ήaJUáş r¤«sŃ{WűwĽŢ,—­á–ľ$ľ/SÍXâDřź7ŻU†á[ xĆÉĺb+5$+Ó|ŕVj°Ź{Ě}—ŧuŰEÇ8˝6–±%_—†Ě’DÄńÍ­‰­<ŃQzsČ6ŠßOěÁo¸˛ŃĽ±[)»Áďé'*đµ˙gLßüăÓé¶ ŔXq“[á†&ěą%!ĽüYŰČxer†·0"¨ňř$řîx¨ç¬oZ'Ű$/xţ‘„p,üá+7 }ëň}0{l%g9#übÖ{‡ÜăĐ&ő›Żąó †Ę)iąŃŽkűćúč6eěmˇKťç=6LNu€Yť*HŹą×™ÎMŹ{ć_ďşUŚAö_d}ęlß÷Ö‰†ő¶_íoOŘďnvqkůŚPÇűoéîp®}đAą‰âNř>ĺÜĘ{ÓËţřGčúciw<é/ßÄË}đ>O â7ď‚ĹăÓď/=éëťóqőÝňŕÂ<ë…zÍŻťßĆ‹ý čn{śţő‘}ŕíQů‡»ž÷=νńeŻÚßŕóşÂ<ň{}Ó˙0—Ľ7żńéńřÜ~Ń óىľűţŮ}ôÍ/ý@(…¸?ú'ęýřw_źĚWÁřĺßřók_˙ü/÷ VŹ}ý‡~řG~ŢW8xČvď·éç€]{Ř€j§€hh| (ř€č˛q!"0Řh‚)ř…@‚#č‚-(H*‚+('h‚/¨9X‚4č3„7Ř€<¸EH„tRIřB„-w„F…O8bLH…JŘ„KvR…[¨…Ř„…_x…aX…VÖ…\h†e¨{`8†bh…kčuhx†q‡mH‡jX‡l(p¨‡rX„wč†~vč ;euler-1.61.0/docs/german/images/Contour.gif0000644000175000001440000001201107522222432017335 0ustar ericusersGIF89a_&‘ŐŐŐb!ů ,_&˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡DUŕ(Ȧóąd>§ÔŞőŠÍj·\ŞTű˝†˝bë¸y>¦“dčô¬tĆĺô:2ť ,˘–č˛h"°!8AaŘ€¸ç Đh ´(™đX©Đ¨éH‰¨‡á™¨‰Áč!šńČ(‘JůŔ Ŕ»gy9ąÉ‰{{p {jńËČŰ÷W:Úńʬ›čę¬Ül»+ ‰IťY{LQ|Ř=úmü̱L ‘üŞ~n^IË<Ýę=ż=áî:Lś/ůQ.ŰˇŞ˘±“×î`z¤‚\ Şä%s&S‡wâŁi^ą&¤4ꆥÔ]Ú¨Š‡úh§ ŘÖ¨JZj—AˇŞŞ>±®š¨§+řú)l~:Ş©ĆZu®˙’ői§•*Z[rh1+l±¶ÖJťOĘ2©«}Ľľ íŻbM[gµZŠmmj®Ýn›Ŕ¦*ë°ËXË!’“f»#OR«Ě_áĚĂĽô )±ĺfy¬ş„ ř.^ßF™ÜŔŻ"Č'ŔíâkXş;‚ę˝2:ZŻ|ăë®ćŞéćľü÷žČ© % “;nĆłÉńy.#+’˛2ďl"ĽG{Bsš.Ś% -ăŘŻ“˘z{.ÓńŠ[ÎVOÍ2­×&ëŻÂ#—üo '·kĘY4ç7«×_KŘäŰ€eÖj'}3ŮäÜM5Űi:ťŢ QË-k¦K;ëWŢ0(}¸Ł=3Üp‰tNpłţ–Ź=3 ŢA¬y†{©ŰoFHˇ[k·Öe™yvŐ®Ł-vŤ=ë»ČĄ9ťždß5·›âź«NňĐőő.!źĐMžË°ÜWľëĽvÉÂçG|„0K}űëÁ&L˛ ™µţ;ôÚOżfő/oföÝ+Ďwž!\Ć>čę›÷ô­ţÎŹđöëí~ô ĂNľ¦Îcězܰô‡Ŕ×ôď}ËÓťß 8»%Ąr 2Ü˙¸×˝bî‚Ü `(ÁÉcxô·€§Áđ!®lČłZý®Â®G•vĚ_ µÇżäíq/”G eAÖĐ„7";¸C-ýL]¦Ő 8Ä#QŠTÔáÖx˙ÂZŘÎOO˘fŔWŠ/ŞĐq.]O¶čÄ î/ŠPś" mx°'bŃcĆcI, 0đŔĎŤ+T#“hF ˝}ˇ+ś˙IE7ŠqŚ+ăâ•H# ŕŁj]¬á"ůč@?PŽJĚbÜFŘ62j’Ť¤Ľá%™*<šďDéŁ$ťÓ>L±Š™ü['é¸-Uľ’‘…ă`ÄË–Qv ÉĄ+/ËXĘ2‘´T#ţ:FŔ°éwkL 3SLT¦r¤˛EŹIÍd˘p™Öl¦ü¸IżÄpšá f-eyJMqx„Č:Á9>wŽR‘{kś(»FĚIüťůô§>—Odnpަúa! ůÎ6ţ± ĄfěYĎ’8Ź5bEÉYĘjZńŠ·¤Tééş‹S| ýh9™Ń@ť”zçÜg9‰Í*aĎôYŕĐŇr°š×\ KÉÓ€ ¨4M©6CzSŁęô©IíćRíPˇZ”¨8•ęT#:ĎP­˛”É*DmzTxö“Ş€TjtŽSzŤ4˘łÔ`ZŹXŐtW€˛ĄEWÚGLf“­č´Ş[řjVžŇ•«]uß`éšW#! ±}Ý\m:Q»®U›‘…¦9„–Xabö± e¬D/›Ćʶ•Ş­j·Ę?Í~u”ťőiHŚŮÚFÂ6ŞP}ŃfĺąĐĐćč~ÂĺŮSMŰŰ‘˙Vˇm5,CpÔł•·ČťŇrŰŮ\˝ÚOj›pw ^µÎ–ą$Ťip¤™[Ýzô·Ą˝nAËëV°q·»l«¤HŮŰRüľźÚ•/é+Öď7¶^m XkŢOJR˛ü•ŢA§+[ ¸ÁžÝÉ7Ó‹¶×Öµ±yrďú_f\ĂĆ­~Ĺ+á]Â׹"›IŢŸvpvĚŽ{—k®1}Ś×W!:&1Źw ä)&еđBŠ]őf°·ľ”׉‘*d=í ĘMŐꔫK]ĺ^نM~¨.z®žn2°¦ń‰ŘE†ĘÉĹf0vĂ+ă+sżŇíŻé ÁšxĽţä\2łě䆠yÇŰtŠ ýć?"úĹ’X´‘ÝăHSTÓ‡^±źÝ3_-SXŇxƬ› ÍçÔ†8e4ędlhS˘:ŐŢMp«/ýj´rZÖŹľó¨Ý‹[GŮ„ţrfő›ăŃľşĐ‡.wR»<đw_µ ­ţq¬g=ń[§»ÉAÖxf?>Ć)O.}ôÍ;‚ßv­ ůĂwŘď˙Ľ¤Jo˝Ô†_˝Ů­Ťö|[*ói}·Ťmó›SžćQ×<éyŻű“sľö`ž<Üçľř×#đľ‡zç›˙yÖ˙Ľ°†ýĺ ˙ű {ŢU·ýąÍë}Ą‹ÝßĂçuűq?rúĄżęËOţýřýúwş^vóŹ8ä˝}âÇ}>ÓĂ–a{goq÷|ŠW|˝w|k7z•s€Â×€•}ü7}¦'Zá§nއ|G|Üv'ĆGĐw}ać|$8{–Çx)+č€Ěç‚ŮW~úW€űq€]će9DoőFq%xzƇ‚_7q¦€Eč~h„Ę7zI xÇQö5qř„02(}4|Sä÷~ćçWSřŘÖo°Ąp ·€,h‚a¨vJ¨‚LČ~P¸…qxGx‚kxtň6]oH„ZŘ…¨€X}d·‡NxH‡ ç„™uWü´Čo†Ôţ·rČ|Ufe›Řz=č •†}fl™Řw¦¸}ťhn«hc´G†/ȇ(‰ H…’d…–é&y:x†<(‹ňG‹yg‹h!8‚»…І„ŞČŚ6H„xz‰sč‹ÖHP·HŚĹÚ·tÉ(YŕčrĂXsä(€ć¸~; ęŘ‹}hŘWްxŽňôčŤ ÷ŚÁ§‹Řn^č‰v„R(r¸‹fČŤ‰Ęř‰aç‡ÇŔ·Ť\‘őXwţX‘Av‘âç[ú(F6ŹËo—8QÚh{ÇXKű7‹Ův yoă(‚iůŹąŚßŠ˘H†¤X0ôf~0yU2{˙±8C‘Ň8Ť?9“uX…q%{ÝxŹeřŽŽX”¨¸%Ţç“–‚)”‹B”/É•â•ęçvyČ……’VIŤ )• †w×…Ť#é’§Ž e…€Pů”"‰•Ć0€|ÉŹŹU –âŘŽ7iډډ©‹)—ŕç-8–:pJi’ W—)쨙Ąu“YHl¨Č ˇÉ†;9yYaŹkI™×C9ÁČ‘Ľ›É™ł©X}”UU‰†§išĆ‰‹×o3Kč™ëĺn9`hh”"ś“Ř™y•Ľ™ťąŹźY™Řăśmťď÷99™ŕi› 4Vi‘6€†é›˙ŚČ‚qťŘŮŚÎźřŹ{Iž˘÷é—ÄŮ„ąri–ŔÉJâ9žńč†LŮ”™ Śöęq©ťAyśTćqĘI‘§ÂZwřś_Ć’-)™Ît–ëą`u·Ž¤ąť f¨™€ * Ő ´ů Ńy N —úl6*˘ßYžÜxž!IťŞ©˘°źöx܉2óIźÚĐ…źMŞ›ŁŁ.?5U›J,š›Ż‰uPzŢ©’ #vĄ˛Wś"h¦6€¦išwçj¸9¦=Š‘ń)›$I§rIJš/4ŠiŤhžŇ™g[IŁvú__Žş§| sĘŠ­iačŤnš¨:ˇ˙Ϩ¨µÉe:˘BČ©&Š Şžˇzˇî©źŹ)©E@©Rf©Dćbí9š.Şˇ0«SęŁBaiĂůźS$qĘR*†‹ ¦Śd«ŮŮŞĄ©«ĆZb‰YnËŠĄYš«Ďjžźş“S'“ÔŞ©‹5¬[ş«ÇĘŹ°ç­ÁJŞ‡Š¨™†˘„ú‹JĘv)ů›KYŞ¦ĘŁGş¨¬ąŞQI®ôŞ®;ꩨZźúŠú‘Ęźýy˘idz®%™ŁDšS~šš4jˇčri:H%Ú©Ó™žy±u)ŻÖ·›[Z]2ÚŻ ˘j°c°±™• ;ŞË9AaŻîz°„I¬rŞ•{™@ŠťŹ ’űął<ëź˙誦V*Hškţ*±Eş©íZJ»ŻGr…Qű´vµGz,¤tęEőş®ł¤­ŃŦľČ•¸ú¤&«z1‚´a§ŞŽÚ˘oz˛n U({dJĄmxJ“)ŰŠd °év¶Ý4­SX·şźPË®^ŠQwłq…Ť+¸e¸RűH抸yj·ÔU´Qz´Ú(IG~9ą§Uą‹µq"ű&a[©+ůŻŻŘ–…k$®‹±łĘŞN*’źŰťˇ»ç˛ĄËŻŃ1µç»żË9`•=´K[µŐʶy™Ľ(łµµ3ş˛Đ˝Ą§6W˝Ę :9lTűş‘ł»3ęŞ0۱űd»kŠ©˙` ¬+¬łË€NřľCQ«č›”ô+»Y[1˛Q¬zżö¤Lô°b›pÜ+ł9ĽĂ8ă8ęŔ­ů1jëjßËaÜ©GĽ:ŕ@{L:žT§{_m™6-âüwOäşL•ţ G×ë=Śň<©Wuł3ËBU;˛ÍŞĂź—Ăâץ*ůĽçË˝jjĽ$ŞÂOÜK`¤(©s9?ś¬‚ŞÄ;żyşF.Ś1( !<ŠşŽ{Ĺ_[Âü«–ĽjNĘĆËk3n̰ĹżK IĹ[¨ő Ĺ‹ Â%0Ĺ!L%i›ĹLł€űżxŮĆ|a6ă+µ}‹Ć7ŞĆoäĹ DaÜKNi(xQz2Ěż˙ĚXIG¬Ç/ .9ě";|ÉĘ@°š<:¦ŰÉ6i0á›;ŕÂ*9ëµQ©L·¸Ö´ŇÖĘ? Ęz‘<ĄLHô|Ëő)W¬,-A ĘJ!Á{E\çÍA[Ĺ«ËÉ|&”,1HĂ`ľ¨ŚÁi/í,®WC1/¬`X|Ćň«ĹL‹‡Ő DlΕĽ;•ĂČAA;H(ŚÓŰ y3Ęô¬™l=řś`-ŞÁ° ™gz3,Đ ąŃĽÎř)´@‰ţ,§hâеĂ˝!8ŤĐżlČ…†Í't(ŔĚě9Ě`! ÍąFşÂJ#ľ\ĎeLËp1Ě’#ŃL̬C»ľ-/3Ëđ‘Î˙fŚÓ TЂܽ¬Ką©«á˘!‘! ÷¬ÔýÍŕĚd‡Ěľ×üE4=3˝ÓV ĉ«¸?­\%Ő8qĘI­ÓíěŇ ÜĹN}ÖňÉ  9-ÖąűÖÁŰÔylJ¬łŃá)ĚÍÖ6r‚„ş?žüÉ?˘|ĂÇAĹE}ÓµlŇmmŮî"Şp­·„i2®!ŔżBÉŽ&6}Ľŕ%Ĺă“iLČ5ě×!Úü`xC&¬ń`=Ń—]Çuü•w¬7)“Č\ÄË2Ô®°Ö‚̨­×{ŤŁWw6ÁĹ%m^ý—Í©lť×ÉÍÓĽ-Eľý>á۱A v˝˝x]);ŤÝµřΦ6Îäüŕ]×áŠ9_*qۆ­Ôç˝ŰéÝfžâÜ«ÓĐ̨äECßó}Ţ"KĂY=Ň m˝Đ}cR:Ó·Ň^äÝČ|— Ň<ü!¦-ßsqÚ¶lß3'qŽŮŠôÚb2Ů6 7GmݾŚ­ŐěýŘ˝Jű§ńâőąĆ|âD‹· Žă)-I]€äI®äKÎäMîäOĺQ.ĺS>P>äWŽĺY®ĺ[Îĺ]îĺ_ća.ćcNćenćgŽći®ćkÎćmîćoçq.çsNçunçwŽçy®ç{Îç}îçč.čäT;euler-1.61.0/docs/german/images/Sinc.gif0000644000175000001440000000533007522222432016606 0ustar ericusersGIF89aa ‘˙˙˙bb!ů ,a ˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ_…˘ńL*—̦ó ŤJ§ÔŞőŠÍj·ÖP!„ năZ™vFŰŇŽ/Č ĘçôzîÁŘ)~Ě˙č"8¸&ˇÇh@h×čř˘¨! Ŕbą‚ŮgČ©A‰Ş IZj:z‘:şÁzâZK";ŰůjK{ĘŰë[Ľ;1|i+S ’ěˇ L!ě-íŚ*±ě€ÝˇÝzŚěÍP}x=]nţëElÂÝm.ö® ţIÁ~~Ź˙1!nżGŻ…? -4KW/źÂ…2öÝ R+ ‹‚%f÷Ć ĂŤţQ8lŁQĹŠžJšüF/cČŽ,[&BHňĂČ„îjÚśqPĺJ—<{¦Ô—ŰLu7Qý(AźL›ĘyAŰPrGáYT‘SéR§\}~lđµ’L€U‘= jÔ®l[†]đŰÔsÔÍvgŇ<íÚú]řöi_ wń–-tuÓOľ˙:.řÎ6…T^pYAf͉##Ľů±čžx.:ÎayŤ>ÔŮx´lHĄ ”–úßꉭ‘.n ř‚ŕLŹťŤü°âĹ07ÎŚpo«h}W‡áůđĎĘ’{Żł@óÚĹŽ9o>=úőćðŻŢ˝úůđëÓż?ż~űü÷˙űď }ňHŕí .'śă]tßMřCmXHKn‹$†‚†bí!cÇQHbZřaLzŐtfýö’1%ÎXÉ"­Ĺá+9ęČâ…jMFc1ŘxŁŠ®iÝuńó#B>ą‘2ŇÔc‡;®ÓY“NBÉ%iZRfd’HR§$k0n€˘n]®ůe(±PY&oUZŮŁ”E˛‰gvŢ ‡ţéâ’Żi5‚‡y¶µ'ź†Í‰%ŁŤĆ˘ž<Ji0mną(¤-:úfť—‚Yi¨{I:i¦+jާ…Ž㣢ľŠl٨™¨¦zę "v kŻÜÉ:«eµĘy+ť¨&şŞŻ˙Ę"›¬°W;&™Ń F¨«ĘŠĘ¬˘ś=Űl®ŢŠ™°Đ^[i¶Úަęą/¦;Ą®¤âJ.Ąć¶»-»ÝŮ{ﱟŽŻĽűň›€źÜŞ»î·áü+aż‡28yăĄé,fĂ^„/Ŕŕ Ay4ě#± łÇ6Ř1ĹőkíĹŇŞL­PÄĽ&Ă0ĂLr‚:Ç÷Ţ€ ţ  Ď; tŃ mtŇç!MtÓűÍŰ-ÍPBuŠ(ójđĘZÇZí¦ROŤpľj^=îÖO+™¸Ć~-$ŐQ \1¦h{ ’Úkł=ŁŰŠÂMvŐ,Űęn«€ă]˘Ţ|ňťµ ‰n×&N˘áí">÷ăţ‹ÓÝř®ŠCîťäSRţ7ćˇ[žů»gsžśçů‚n6ăŁ{8š•Łţ—ę÷˛~zë®çεć›Ó>šíÇáţ;ďĆď޲éÇď—đcŹ|ôŇ“Ž±ăÓ3Ď•ó2A/úňÝźĽŕŻcĎ”öĚpO˝÷éź¶őě“ß”ů ÷Mđő°Ď^˛ďşĂďUŘë7P06ŐÓßţřçům€ôŁţîV:ń=Q exąő˝Ożrźú(XA˙˝)7ś`©đgAą°'6ŰN¤BÂ9p|, pÄĂ€†Él++,_vpč ć%©)! křÁ 'gJkb}ćÄ(:mŠR¬"Żh˙E)¶PâyX'BcÄŢo|)ś_(Â`m&Ś„ÓÄ32¤ŚAAWOxD<Š‘Žf”ăFřٱŮ/Ž$ä÷ÚgŔú±€Ü‰Ő ™21şqŹp4ä"ÍŃH#]†Ťä 'mSIK^R™„Ó†îIT¦˛“C”ŕÄFIŤPŠMc”¤mąJD*/†‚ĺ JI”“ŐR•eĂ%ÖęćÁú˛Ŕ¤Š0'ILżłá“ťząĚ4“. ( '!™ËCv0‘ŻĚ&mdi1ZŢ’•˘&+·)sBť}Tg8? ÍhÖoś»Ü6ĺŮĎI¤.ß§AÝ©KWú ±´›ôćRP|ţćÓ~đ$ CĎéPN%˘'5jM9ü󢪠§ ÖQ‰®“ť+ĺ§By0R’>ä4ŐG:QŹJłšĄCLeĘŞfđ‘7Ué=ŤzĚ.Qd]ôb~ ÔŘ‘©zˇgÂŃśâ´ťJ̡UŻUĺü©$kĺUۉ֖nU­ ĚÉÄD,ĘU@s­kíŠ×»ę5Żë©¨Mg¶Sťîs­G5kOźÖFř°´Ję4+Řö. ?€jbAzءڳžú”lgg©ÔĚúô˛tXl7ĂÄY–V«)mk2{`YŇ6;4eźűŮt>v°®%'Xe[!šZôŻ'U-ns›ZĚŇ˙±˝¬i%ćČäö¸Ć-jo)+Rŕ2S¸ńDíp#[Ź!wĽĺä*w«Ë”üŘ% ©;/˝[Geî˝Ü¬}‘[\ĺş©Í5C2î[;÷2şßťn62„of)ŁŮuĚ@ú ç>3ŇEj‚ż ŕŐ˛u¶űĺo[6Š(Â55á„l¬.řµ vJ†;aŹľ·Ő-z‰Ú]gň–µ.é)b¬aëćCÂ(Íq-lYř#«DöěB őâ9Îض#®2$lä#·¶Çąđm¬HR4yłT¶ňV)ňß oyĚN.GlżüŇk¶ĆY> Š¨eł´ç2lĄĚŕ-Ó9ľţq1źuŚÂ)ă·˛¤€s—Íăúzq…ěi=Ą]÷Çřp´ç™i!Ö–ÄyľôuîRW0y1›†§Ű ?›â-ĺá«‚ ¨3\ăG×¶~bŻy¶W ń:Ř:Ł5ÉF˝ŰßşZŘ3;vQÂM¦4˘cŘłĄíđjI7ş ÎŢń‰•‚·x÷µ¶·íđ:‚Ý>7™ĺĆÜEŰćv7LY"ë5˘ÝöT]@FÔŰŢ8Hw‰őÍ$H§•Ćß/7µj…3wÝ\É7VFÁďkż{YŤtˇĘßň"Ć˙¸@,>Ů8Ôㆸ e¤^=†»^íhPNbd\ă8ţ6YÇkřlYĎ\ĺ5g´wÄ”ÓüŃatËKősµ*}˝ŞŞhďńÓ’űwĽ\Çůr%ä÷2ÖŤQ»ľa‡łmçÔ=eúĘŢv|˘=í'ŰŰ.nSĎyáqß´PźürÎÝ}•†ű˘NI°Çzď|*ď kĆ›]ăsŻűĂýčřHŽDp˛y_ô•ó/ó)Ku™oLpĘ+Ý‚–#é­µäŞËw҉=łéŽůŐk{]Ď{'żăĘŁŢđ}=Ç/˙t {~Ă[Üر+ŽülvŐ…\n=îőîűd·Yî9lĐË6öUžŕFëšľóăđkţ »×H?Zú‰ ě÷űţrÝ®"\ťúáÓ‡Őř°›şf’xŃ÷y,ćHg_ţ§]'Â\Đl ¸ ČDŕ€8YhS M ]ČšFTĺe"x‚÷÷oe‚ A‚-đ‚+2ČE'x33HÓ°'đ}%Ř‚+XR4~„+„!X„%Ř„0x682‚2°„2x…*P…@Ř[šć… (†cH†eh†gČ;euler-1.61.0/docs/german/images/Makefile0000644000175000001440000002416610331246762016677 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/german/images/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs/german/images DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(germanimagesdir)" germanimagesDATA_INSTALL = $(INSTALL_DATA) DATA = $(germanimages_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = germanimagesdir = $(prefix)/share/doc/euler/german/images germanimages_DATA = \ *.gif\ *.php\ *.css EXTRA_DIST = $(germanimages_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/german/images/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/german/images/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-germanimagesDATA: $(germanimages_DATA) @$(NORMAL_INSTALL) test -z "$(germanimagesdir)" || $(mkdir_p) "$(DESTDIR)$(germanimagesdir)" @list='$(germanimages_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(germanimagesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(germanimagesdir)/$$f'"; \ $(germanimagesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(germanimagesdir)/$$f"; \ done uninstall-germanimagesDATA: @$(NORMAL_UNINSTALL) @list='$(germanimages_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(germanimagesdir)/$$f'"; \ rm -f "$(DESTDIR)$(germanimagesdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(germanimagesdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-germanimagesDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-germanimagesDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-germanimagesDATA install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-germanimagesDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/german/doc.html0000644000175000001440000005322707522244452015427 0ustar ericusers Euler - Dokumentation
Über Euler...
Neuigkeiten
Screenshots
Dokumentation
Referenz
Beispiele
Download
Message Board
Links
Kontakt
 

Dokumentation

Die Benutzerschnittstelle

EULER verwendet zwei Fenster. Das Textfenster und das Grafikfenster.

Das Textfenster enthält das Menü und dient zur Benutzer-Eingabe und den Ausgaben von EULER. Es ist ein scrollbares Fenster. Sie können die Bildlaufleiste oder die Tasten Bild hoch und Bild runter benutzen, um sich durch vorhandenen Text zu bewegen. Alle Benutzereingaben werden durch ein Prompt-Zeichen (>) angedeutet. Alles andere sind Ausgaben oder Kommentare. Die Größe des Fensters wird beim Beenden gespeichert, so dass es beim nächsten Start von EULER die gleiche Größe hat. (siehe unten bei Einstellungen)

Das Grafikfenster wird in den Vordergrund geholt, sobald EULER Ausgaben zeichnet. EULER zeichnet die Grafiken automatisch neu, falls die Grafikausgaben nicht gelöscht worden sind. Die Größe des Grafikfensters wird beim Beenden gespeichert, so dass Ihnen beim nächsten Start von EULER die gleiche Größe angeboten wird (siehe unten bei Einstellungen).

Sie können auch während der Eingabe mit der Tabulatortaste zwischen beiden Fenstern wechseln.

Verwenden von Notebooks (.en Dateien)

Diese Version von EULER benutzt Notebooks. Das heißt, Kommandos aus früheren Sitzungen können editiert und verändert werden. Kommentare können zu den Kommandos hinzugefügt werden, um sie zu erläutern. Dies ist eine elegante und flexible Schnittstelle. Notebooks können anderen Anwendern übergeben oder als dokumentierte Berechnungen abgelegt werden (sie werden als Textdateien gespeichert).

Sammlungen von programmierten Funktionen sollten allerdings auch weiterhin in *.e Dateien abgelegt werden, weil sie mit dem load Kommando geladen werden.

Hinweis: Bei Notebooks müssen Sie besonders beachten, dass EULER auch weiterhin die Kommandos in der Reihenfolge speichert, wie sie ausgeführt wurden. Falls Sie also den Wert einer Variablen ändern und zu einem vorherigen Kommando zurückgehen, so wird mit dem neuen Wert gearbeitet. Sie können auch ein vorheriges Kommando verändern und ausführen. Dessen Ausgaben werden durch die neuen Ausgaben ersetzt und EULER fährt mit dem nächsten Kommando fort.

Sie können nicht nur vorherige Kommandos verändern, sondern sie auch löschen oder neue einfügen. Benutzen Sie das Edit-Menü dafür und auch um sich die Tastaturbefehle einzuprägen.

Der Zeileneditor

Text kann über die Tastatur hinter dem Prompt-Zeichen (>) eingegeben werden. Tippfehler können mit der Taste Backspace oder Entf rückgängig gemacht werden. Die Cursor-Tasten Pfeil links und Pfeil rechts positionieren den Cursor zurück oder vorwärts in der Zeile. Der Zeileneditor befindet sich immer im Einfügemodus, so dass an der Cursorposition Zeichen immer eingefügt werden. Die Taste Pos1 bringt den Cursor an den Zeilenanfang und Ende an das Zeilenende. Escape löscht die Eingaben der Zeile. Die Tasten Umschalt Pfeil links oder Pfeil rechts bewegen den Cursor ein Wort nach links bzw. nach rechts. Sie können Eingaben auch mit der Maus auswählen und per copy (kopieren), cut (ausschneiden) und paste (einfügen) über das Clipboard eingeben. Eingaben werden schließlich durch Drücken von Return abgeschlossen. Danach interpretiert EULER das Kommando. Der Cursor kann sich an jeder Position in der Zeile befinden, wenn Return gedrückt wird.

EULER zeichnet das soeben ausgeführte Kommando in einer History auf. Die vorherigen Eingaben können mit den Tasten Umschalt Pfeil hoch und Umschalt Pfeil runter wieder hervorgeholt werden.

Durch Drücken von Einfg werden Teilkommandos vervollständigt. Erneutes Drücken dieser Taste bringt eine weitere Vervollständigung sofern dies möglich ist. Die Suche durchläuft die Kommando-History, die implementierten Funktionen, die selbstdefinierten Funktionen und endet schließlich mit den Build-In-Funktionen.

Es gibt einige spezielle Tasten. Die Taste Tabulator wechselt zum Grafikfenster und von dort jede Taste zurück. Die Taste Escape stoppt jedes laufende EULER Programm und einige interne Funktionen wie die dreidimensionalen Plots, die Lösung von linearen Gleichungssystemen und die Suche von polynomen Wurzeln.

Pfeil hoch und Pfeil runter positionieren die Eingabezeile auf die vorherige oder folgende Zeile. Sobald Sie diese Zeile ausführen werden die dazugehörenden Ausgaben ersetzt durch die neuen. Bild hoch und Bild runter blättern die Seiten zurück oder wieder vor, doch sie ändern nicht die Position des Cursors. Wenn Sie den Cursor auf ein bestimmtes Kommando setzen wollen, klicken Sie mit der Maus darauf.

Sie können Kommentare zu einem Kommando eingeben. Dieser Kommentar wird über den Befehl Edit - Edit comment eigegeben. Er wird vor einem Kommando ausgegeben. Jede Kommentarzeile beginnt mit einem % .

EULER Eingaben können sich durch ".." über mehrere Zeilen erstrecken. Die beiden Punkte sind an jeder Stelle erlaubt, wo auch ein Leerzeichen eingegeben werden kann. Zum Beispiel:

>3+ .. some comment
>4
         7
>3+4
         7

Kommentare können hinter den ".." folgen und werden nicht ausgewertet.

Übrigens benutzt die Notebook-Schnittstelle die Taste Escape, um eine Funktionsdefinition zu beenden, die direkt im Zeileneditor eingegeben wird. Das heißt, es löscht die Eingabezeile und druckt $endfunction. Drücken von Return schließt die Funktionsdefinition ab.

Mehr zu den EULER-Funktionen finden Sie in der Referenz.

Menüs

Die meisten Menüpunkte sind selbsterklärend. Im folgenden dennoch eine kurze Beschreibung der weniger offensichtlichen Dinge.

Das Menü File enthält Kommandos zum Laden und Speichern von Notebooks sowie zum Anlegen neuer Notebooks. Dies sollte nicht mit dem Laden von EULER-Dateien (*.e) verwechselt werden, die ausführbare Kommandos enthalten, während Notebooks aus kompletten Sitzungen mit Ausgaben und Kommentaren bestehen. Darüber hinaus können Sie mit einem Menübefehl die Grafiken als Postscript speichern. Die Größe der Postscript-Grafik hängt von der Größe des Grafikfensters ab (versuchen Sie's).

Wie schon erwähnt, kann jedes Notebook-Kommando einen Kommentar haben, den Sie mit dem Menü Edit bearbeiten können. Im Textfenster erscheint er in grün. Absätze werden durch Leerzeilen symbolisiert. Sie können in dem Dialog mit den gewöhnlichen Befehlen ausschneiden und kopieren (Ctrl-X, Ctrl-V, Ctrl-C). Außerdem bietet Ihnen das Menü Edit Befehle zum Einfügen und Löschen von Kommandos (einschließlich der Kommentare und Ausgaben) und zum Löschen aller Ausgaben.

Das Menü Misc erlaubt den Zugriff auf den Dialog Einstellungen und zu dem Untermenü Demo. Dieses Untermenü erlaubt es Ihnen, die mit EULER bereit gestellten Demo-Notebooks schnell zu laden. Das Programm durchsucht das Installationsverzeichnis (INSTALL_DIR/share/euler/progs/) nach den Notebooks. Falls Sie ein Notebook in dieses Verzeichnis kopieren, wird es beim nächsten Start von EULER im Menü Demo erscheinen.

Das Menü Help zeigt Ihnen die Dokumentation. Es gibt auch die übliche About-Box.

Einstellungen im Dialog Preferences

Im Dialog Preferences können Sie Ihre Einstellungen vornehmen. Änderungen werden beim Beenden von EULER gesichert, so dass sie in der nächsten EULER-Sitzung wieder zur Verfügung stehen.

Sie können hier die Größe des Stacks und die Größe des internen Grafik-Speichers einstellen. Änderungen werden beim nächsten Start von EULER wirksam.

Auf dem nächsten Register können Sie die Anzahl der Zeilen im Grafikfenster einstellen. Die Anzahl der Zeilen bestimmt die Größe des Fonts, nicht des Fensters. Je höher die Anzahl, desto kleiner der Font.

Als nächstes können Sie die 16 von EULER verwendeten Farben umordnen. Diese Farben werden im Texteditor, für Plotkommandos, den 3D-Plots u.a. genutzt. Zum Beispiel wird Farbe (n) die Farbe des nächsten Plots setzen. Andere Befehle sind stehen für die Gitterlinienfarbe oder die Füllfarbe. Vielleicht möchten Sie diese Vorgaben in der euler.cfg speichern, die beim Programmstart geladen wird. Beachten Sie bitte, dass die gefüllten und die schattierten 3D-Plots ein anderes Farbschema benutzen, das nur durch die Farbe 1 bestimmt wird.

Schließlich können Sie noch ein Flag setzen, ob EULER die Einstellungen beim Beenden speichern soll (dies ist der Standard). Sie können auch einen anderen Browser als den vorgeschlagenen (Netscape) zur Anzeige der Dokumentation wählen. Natürlich können Sie auch die Einstellungen auf die ursprünglichen Werte zurücksetzen.

Die Resource- und die Konfigurationsdatei

EULER verwendet eine Resourcedatei und eine Konfigurationsdatei. Beide werden im Verzeichnis .euler/ des Homeverzeichnisses des Benutzers gespeichert.

Sie müssen sich keine Gedanken um diese Dateien machen, da sie von EULER selbst erzeugt werden, falls sie nicht existieren.

Die Einstellungen werden in der Datei eulerrc gespeichert. Sie können die Werte im Dialog Preferences oder durch editieren mit einem beliebigen Texteditor ändern.

Die Konfigurationsdatei euler.cfg enthält EULER-Kommandos, die beim Start ausgeführt werden wie zum Beispiel Definitionen der Standardpfade zu EULER-Dateien, Laden von Standardpaketen ...

Die Standardkonfigurationsdatei wird beim ersten Start von EULER erzeugt, aber Sie können diese Datei editieren, um sie Ihren Bedürfnissen anzupassen. Jedes gültige EULER-Kommando wird ausgeführt werden.

euler-1.61.0/docs/german/Makefile0000644000175000001440000003627510331246762015436 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/german/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs/german DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(germandocdir)" germandocDATA_INSTALL = $(INSTALL_DATA) DATA = $(germandoc_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = SUBDIRS = images germandocdir = $(prefix)/share/doc/euler/german germandoc_DATA = \ *.html EXTRA_DIST = $(germandoc_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/german/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/german/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-germandocDATA: $(germandoc_DATA) @$(NORMAL_INSTALL) test -z "$(germandocdir)" || $(mkdir_p) "$(DESTDIR)$(germandocdir)" @list='$(germandoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(germandocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(germandocdir)/$$f'"; \ $(germandocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(germandocdir)/$$f"; \ done uninstall-germandocDATA: @$(NORMAL_UNINSTALL) @list='$(germandoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(germandocdir)/$$f'"; \ rm -f "$(DESTDIR)$(germandocdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(germandocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-germandocDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-germandocDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am \ install-germandocDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-germandocDATA uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/french/0000755000175000001440000000000010331246762013755 5ustar ericuserseuler-1.61.0/docs/french/screenshots.html0000644000175000001440000000364107522243771017214 0ustar ericusers Euler - captures d'écran
A propos d'Euler...
Les news
Captures d'écran
Documentation
Référence
Exemples
Télécharger
Forum
Liens
Contact
 

Captures d'écran

La fenętre principale

La fenętre graphique

D'autres captures d'écrans de graphiques :

euler-1.61.0/docs/french/links.html0000644000175000001440000000444607522243652015776 0ustar ericusers Euler - liens
A propos d'Euler...
Les news
Captures d'écran
Documentation
Référence
Exemples
Télécharger
Forum
Liens
Contact
 

Links

Liens concernant Euler

  • La page principale d'Euler réalisée par le Dr Grothmann,
  • ma page perso avec un module pour Euler ŕ télécharger et des exemples (devrait intéresser les électroniciens et le physiciens).

Autres

  • La page de la bibliothčque gtk,
  • Le répertoire d'applications gtk/gnome,
  • dillo, un petit navigateur internet (petit mais ...),
  • rox, un bureau convivial, rapide, ... pour X11.
  • lout, un formateur de texte génial (du genre LaTeX, mais plus petit et plus facile ŕ utiliser).
euler-1.61.0/docs/french/index.html0000644000175000001440000001366707522243544015772 0ustar ericusers Bienvenue sur le site Euler
english deutsch
français
A propos d'Euler...
Les news
Captures d'écran
Documentation
Référence
Exemples
Télécharger
Forum
Liens
Contact
 

Bienvenue sur le site d'Euler ...

C'est la version GTK+ d'EULER pour les systčmes Unix / Linux. Elle a été portée ŕ GTK+ par Eric Boucharé (euh ... moi) sur la base d'une version basique pour X11 réalisée par Dr Rene Grothmann, l'auteur d'Euler. Il maintient également une version Windows.

EULER est un programme pour faire du calcul numérique de maničre rapide et interactive avec des nombres réels ou complexes, des matrices réelles ou complexes ou des intervalles, dans le męme style que des programmes comme MatLab, Octave,... Vous pouvez également tracer des fonctions en 2 ou 3 dimensions et réaliser des animations.

Les principales caractéristiques d'Euler :

  • scalaires et matrices réelles, complexes ou d'intervalles,
  • langage de programmation, avec des variables locales, des valeurs par défaut pour les paramčtres des fonctions, un nombre variable de paramčtre, le passage de fonctions en argument,
  • graphiques en deux ou trois dimensions,
  • graphiques avec des nuages de points,
  • graphiques de densité avec des lignes de niveau,
  • animations,
  • intégration and différentiation numérique,
  • fonctions statistiques et de tests,
  • résolution numérique d'équations differentielles,
  • manipulation d'intervalles,
  • function d'optimisation (Brent, Nelder-Mean),
  • algorithme du Simplexe,
  • interpolation and approximation,
  • détermination des racines d'un polynôme,
  • transformée de Fourier rapide (FFT),
  • exportation de graphiques au format Postscript

et bien plus. Il manque toutefois encore quelques éléments parmi lesquels :

  • appels de fonctions C dans des DLLs,
  • support pour le son.

Bref, ŕ quoi est-ce que ça peut bien servir ?

Supposez que vous ayez une fonction non triviale ŕ étudier. Vou pouvez utiliser les commandes d'Euler pour tracer cette fonction, déterminer ses zéros et ses extremas. Vous pouvez également calculer numériquement une intégrale. Vous pouvez męme produire des graphiques en utilisant un paramčtre (comme un ensemble de graphes ou encore réaliser un tracé en 3 dimensions en fonction du paramčtre).

Un autre exemple. Supposez que vous ayez des données dans un fichier. EULER peut lire ces données ŕ partir du fichier et les afficher dans un graphe, calculer les coefficients d'un polynôme d'interpolation, réaliser d'autres opérations dessus, etc ...

En dernier exemple, nou supposons que vous voulez tester un algorithme de calcul numérique. Vous pouvez écrire cet algorithme dans le langage de programmation propre ŕ Euler. C'est généralement beaucoup plus facile et rapide que de le faire dans un langage de programmation classique. Le systčme est de plus interactif, et vous pouvez utiliser les capacités graphiques d'Euler pour visualiser les données issues de l'éxécution de votre algorithme.

EULER est un outil idéal pour les taches telles que :

  • Etude et discussion de fonctions d'une variable réelle ou complexe.
  • Visualisation de surfaces en representation paramétrique.
  • Algčbre linéaire et problčmes aux valeurs propres.
  • Test d'algorithmes numériques.
  • Détermination de solutions numériques d'équations différentielles.
  • Calcul sur des polynômes.
  • Etude d'intervalles.
  • Etudier et générer des fichiers sonores.

L'inconvénient du systčme est qu'il faut se familiariser avec, męme s'il est relativement simple. Mais le jeu en vaut la chandelle.

euler-1.61.0/docs/french/Makefile.am0000644000175000001440000000015410263642474016015 0ustar ericusersfrenchdocdir = $(prefix)/share/doc/euler/french frenchdoc_DATA = \ *.html EXTRA_DIST = $(frenchdoc_DATA) euler-1.61.0/docs/french/Makefile.in0000644000175000001440000002314210331246752016023 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/french DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(frenchdocdir)" frenchdocDATA_INSTALL = $(INSTALL_DATA) DATA = $(frenchdoc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ frenchdocdir = $(prefix)/share/doc/euler/french frenchdoc_DATA = \ *.html EXTRA_DIST = $(frenchdoc_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/french/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/french/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-frenchdocDATA: $(frenchdoc_DATA) @$(NORMAL_INSTALL) test -z "$(frenchdocdir)" || $(mkdir_p) "$(DESTDIR)$(frenchdocdir)" @list='$(frenchdoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(frenchdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(frenchdocdir)/$$f'"; \ $(frenchdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(frenchdocdir)/$$f"; \ done uninstall-frenchdocDATA: @$(NORMAL_UNINSTALL) @list='$(frenchdoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(frenchdocdir)/$$f'"; \ rm -f "$(DESTDIR)$(frenchdocdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(frenchdocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-frenchdocDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-frenchdocDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-frenchdocDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-frenchdocDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/french/download.html0000644000175000001440000000637707522522075016471 0ustar ericusers Euler - télécharger
A propos d'Euler...
Les news
Capture d'écran
Documentation
Référence
Exemples
Télécharger
Forum
Liens
Contact
 

Télécharger

Configuration requise

  • un systčme Unix / Linux,
  • le systčme graphique XWindow (XFree86, ...),
  • la bibliothčque GTK+ version 1.2.x.

Télécharger

La derničre version est la 1.60.6 : ChangeLog

Elle contient :

  • les sources ou le binaire,
  • la documentation (html) en anglais, partiellement traduite en allemand et en français,
  • des exemples.

Vous pouvez técharger, au choix

Compilation des sources

Avant de compiler Euler, vérifiez bien que le compilateur C est installé, avec les outils classiques (make, ...). Pour ceux qui ont des distributions basés sur des paquetages RPM, il faut que les paquetages de développement XFree-86-devel.xxx.rpm, glib-1.2-devel.xxx.rpm et gtk+1.2.xxx.rpm sont installés. Une fois que vous avez récupéré l'archive, ouvrez un terminal au niveau du répertoire oů elle se trouve :

tar xvfz euler-1.60.6.tar.gz

cd euler-1.60

make

su (pour avoir les privilčges de root)

make install

Vous pouvez maintenant effacer tout le répertoire. Pour lancer Euler :

euler

Pour voir ce que ça fait, allez dans le menu Misc>Demo

Voilŕ, c'est parti ...

Il y a aussi make clean and a make uninstall pour nettoyer le répertoire des fichiers générés par la compilation et pour enlever Euler de votre systčme.

euler-1.61.0/docs/french/doc.html0000644000175000001440000003036107522244013015406 0ustar ericusers Euler - documentation
A propos d'Euler...
Les news
Captures d'écran
Documentation
Référence
Exemples
Télécharger
Message board
Liens
Contact
 

Documentation

L'interface graphique

EULER utilise deux fenętres : une fenętre de texte et une fenętre graphique.

La fenetre de texte contient un menu et une barre d'icones et est destinée aux entrées de l'utilisateur (ligne de commande) et aux sorties d'EULER. Il est possible de faire défiler le contenu de la fenetre en utilisant la barre de défilement ou les flčches page haute et page basse. Les lignes d'entrées de commandes sont celles précédées d'un prompt (>). La page contient en plus les sorties de l'interpréteur et des commentaires entrés par l'utilisateur (précédé de %). La taille de la fenętre est sauvegardée ŕ chaque fois que l'on quitte le programme. L'utilisateur retrouve une fenętre de męme taille lors du lancement suivant d'EULER (voir ŕ préférences).

La fenętre graphique est utilisée pour les opérations graphiques. Elle est mise en avant lorsqu'EULER dessine quelque chose. La taille de la fenętre graphique est également sauvegardée ŕ la fermeture d'EULER. (voir ŕ préférences).

Vous pouvez passer d'une fenętre ŕ l'autre, soit en la sélectionnant avec la souris, soit avec la touche TAB.

Utilisation des fichiers Notebooks (.en)

L'interface fonctionne ŕ la maničre d'un terminal permettant d'éditer des commandes (>...) et de les interpréter par l'appui sur la touche Entrée, l'opération fournissant éventuellement un résultat qui est affiché en dessous de la commande. Le curseur passe alors ŕ la ligne de commande suivante. La ligne sur laquelle se trouve le curseur est donc la ligne de commande active : celle qui est interprétée lorsqu'on appuie sur Entrée. Cependant, l'interface permet également de rééditer et de modifier les commandes précédemment entrées et interprétées, ce qui la rend extręmement flexible. Des commentaires peuvent aussi ętre ajoutés pour chaque ligne de commande pour les clarifier.

Note : La chose la plus importante, ŕ propos des Notebooks, est qu'EULER ne prend en compte les lignes de commandes que dans l'ordre oů elles sont exécutées. Ainsi, si on change la valeur d'une variable et que l'on remonte ŕ la ligne de commande précédente, c'est cette derničre valeur qui sera utilisée pour cette variable. Egalement, si vous réinterprétez une ligne de commande aprčs l'avoir modifiée, la sortie est remplacée par le nouveau résultat.

Dans cette version d'euler, la liste successive des commandes entrées, des réponses de l'interpréteur et des commentaires peut ętre sauvegardée au format texte dans des fichiers dits Notebooks (.en). Ces fichiers peuvent ętre chargés soit par le menu Open ..., soit simplement par glisser-déposer (drag and drop) depuis un gestionnaire de fichier qui utilise le protocole XDND : rox, nautilus. Pour le moment, ça ne fonctionne pas avec konqueror (??) - ŕ débugger. Le répertoire dans lequel se trouve le fichier notebook chargé est considéré comme étant le répertoire de travail.

Remarque : ces fichiers Notebooks sont ŕ différencier des modules d'Euler (fichier .e) qui sont des collections de fonctions qui permettent d'étendre les capacités d'Euler et qui sont chargés par la commande load.

Edition de la ligne de commande

On peut entrer du texte au clavier aprčs le prompt (>). On peut éditer le text par les moyens habituellement disponible dans n'importe quel éditeur (revenir en arričre, effacer, se déplacer avec les flčches, sélectionner du texte ŕ la souris, copier, couper coller). La touche début permet de positionner le curseur en début de ligne, et la touche fin en fin de ligne. La touche Echappe efface la ligne courante. Shift flčche gauche ou droite positionnent le curseur un mot plus loin ŕ gauche ou ŕ droite.

Euler maintient un historique des commanddes précédemment exécutées. Shift flčche haute et shift flčche basse permettent de naviguer dans cet historique et de remplacer la ligne courante par une ligne de commande présente dans l'historique.

L'appui de la touche insert tente de compléter la commande présente au niveau du curseur. Un nouvel appui fournit une autre complétion possible. La recherche des commandes se fait dans un premier temps dans l'historique, les fonctions d'Euler, les fonctions définies par l'utilisateur, puis les commandes d'Euler (built in).

Finalement, la ligne de commande est interprétée par EULER aprčs l'appuis sur Entrée. Le curseur peut ętre ŕ n'importe quel endroit la ligne. La touche Echappe permet d'interrompre l'interprétation de la ligne de commande.

Les touches flčche haute et flčche basse positionne le curseur sur la ligne de commande précédente ou suivante faisant de cette ligne la nouvelle ligne de commande active. Si vous interprétez cette nouvelle ligne, les résultats de l'évaluation précédente sont remplacé par ceux de cette nouvelle évaluation.

Vous pouvez ajouter, ŕ une ligne de commande, un commentaire sur plusieurs lignes. Celui-ci sera affiché avant la ligne de commande. Chaque ligne du commentaire débutera par %.

Les entrées d'EULER peuvent s'étaler sur plusieurs lignes en utilisant "..". Les deux points peuvent ętre situés partout ou un espace est toléré

>3+ .. some comment
>4
	7
>3+4
	7

Un commentaire peut suivre les ".." et n'est pas vu par l'interpréteur.

Edition de fonctions utilisateur

L'apparition du mot-clé function en début de ligne provoque lors de l'interprétation le passage de l'éditeur en mode éditeur de fonction. Ce mode se manifeste par l'apparition d'un nouveau prompt ($) et permet d'écrire directement le corps d'une fonction utilisateur (voir le langage de programmation d'Euler pour plus de détails).

>function f(x)
$  return x^2-1;
$endfunction
>

La sortie de ce mode d'édition s'effectue lorsque l'interpréteur trouve le mot-clé endfunction en début de ligne. A noter que l'appui la touche Echappe permet l'insertion automatique de ce mot clé.

Menus

Les noms de la plupart des articles sont suffisamment explicites. En voici tout de męme une courte description.

Le menu File contient les commandes pour créer, charger et sauver des fichiers notebooks (A ne pas confondre avec les modules de fonctions d'Euler - voir la commande load). Ce menu permet également d'accéder ŕ la commande de sauvegarde des graphiques au format POSTSCRIPT. Il est ŕ noter que la taille de l'image postscript est fonction de la taille de la fenętre graphique ...

Le menu Edit donne accčs aux commandes d'édition classiques (couper, copier, coller), mais aussi ŕ la commande d'édition des commentaires (s'applique ŕ la ligne de commande active), ŕ une commande qui permet d'effacer du notebook les résultats d'interprétation (delete outputs) et enfin ŕ deux commandes permettant de supprimer la ligne de commande actuelle ou d'en insérer une nouvelle. Les commandes de ce menu sont aussi accessible par l'intermédiare d'un menu contextuel.

Le menu Misc permet d'accéder ŕ la boîte des préférences et au sous menu Demo. Ce sous menu vous permet de charger rapidement les notebooks de démonstration installés avec Euler. Cette liste est obtenue par Euler ŕ chaque démarrage du programme en listant le contenu du répertoire INSTALL_DIR/share/euler/progs/ (INSTALL_DIR=/usr ou /usr/local) ŕ la recherche de fichiers notebooks. Ainsi, si vous placez un notebook dans ce répertoire, il apparaîtra dans le menu Demo...

Le menu Help permet de visualiser la documentation ŕ l'aide d'un navigateur internet. Et, il y a, enfin, la traditionnelle boîte A propos ...

La boîte de dialogue préférences

La boîte de préférence permet de fixer un certain nombre d'options concernant le fonctionnement d'Euler. Par défaut, les préférences sont sauvegardées ŕ la fermeture d'Euler, de tel maničre que ces réglages soient identiques lors de la session suivante.

Euler utilise une pile pour les calculs et un buffer pour les opérations graphiques. Vous pouvez fixer les tailles de la pile et du buffer, dans le premier onglet de la boîte. Les changements prendront effet au prochain démarrage d'Euler.

Sur l'onglet suivant, vous pouvez fixer le nombre de ligne de texte pour la fenętre graphique, ce qui permet de fixer la taille de la police de caractčre. Plus ce nombre est grand, et plus la taille de la police sera petite.

Ensuite, vous pouvez choisir les 16 coleurs utilisées par EULER. Ces couleurs sont utilisées dans les opérations graphiques (plot, ...). Il est ŕ noter que certaines fonctions graphiques utilisent un dégradé de couleur basé sur les couleurs choisie ici (voir la référence d'Euler - Graphiques).

Finalement, Vous pouvez choisir si Euler sauvegardera les préférences (par défaut) ou pas. Vous pouvez choisir le navigateur internet utilisé pour visualiser la documentation. Et vous pouvez, enfin, remettre les préférences ŕ leur valeur par defaut.

Les fichiers ressource et de configuration

Euler utilise un fichier ressource et un fichier configuration. Ils sont enregistrés dans le répertoire ~/.euler/ (~=répertoire de l'utilisateur) pour chaque utilisateur, ce qui permet ŕ chacun de paramétrer Euler selon sa convenance et ses besoins.

Vous n'avez pas ŕ vous inquiéter de ces fichiers. Euler les crée pour vous s'ils n'existent pas.

Les préférences sont sauvegardées dans le fichier ressource appelé eulerrc. Vous pouvez en modifier le contenu, soit ŕ l'aide de la boîte de dialogue, soit avec un simple éditeur de texte.

Le fichier de configuration euler.cfg contient des commandes Euler exécutées au démarrage comme charger certains modules de fonctions, paramétrer la précision d'affichage des chiffres, ... La premičre fois que vous démarrez Euler, ce fichier est créé. Vous pouvez ensuite l'éditer pour selon vos besoins. Toute commande Euler valide sera exécutée.

euler-1.61.0/docs/french/Makefile0000644000175000001440000002376610331246762015433 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/french/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs/french DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(frenchdocdir)" frenchdocDATA_INSTALL = $(INSTALL_DATA) DATA = $(frenchdoc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = frenchdocdir = $(prefix)/share/doc/euler/french frenchdoc_DATA = \ *.html EXTRA_DIST = $(frenchdoc_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/french/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/french/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-frenchdocDATA: $(frenchdoc_DATA) @$(NORMAL_INSTALL) test -z "$(frenchdocdir)" || $(mkdir_p) "$(DESTDIR)$(frenchdocdir)" @list='$(frenchdoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(frenchdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(frenchdocdir)/$$f'"; \ $(frenchdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(frenchdocdir)/$$f"; \ done uninstall-frenchdocDATA: @$(NORMAL_UNINSTALL) @list='$(frenchdoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(frenchdocdir)/$$f'"; \ rm -f "$(DESTDIR)$(frenchdocdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(frenchdocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-frenchdocDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-frenchdocDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-frenchdocDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-frenchdocDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/Makefile.am0000644000175000001440000000021010263642445014537 0ustar ericusersSUBDIRS = french german images reference docsdir = $(prefix)/share/doc/euler docs_DATA = \ *.html\ *.css EXTRA_DIST = $(docs_DATA) euler-1.61.0/docs/Makefile.in0000644000175000001440000003526210331246752014564 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(docsdir)" docsDATA_INSTALL = $(INSTALL_DATA) DATA = $(docs_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = french german images reference docsdir = $(prefix)/share/doc/euler docs_DATA = \ *.html\ *.css EXTRA_DIST = $(docs_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-docsDATA: $(docs_DATA) @$(NORMAL_INSTALL) test -z "$(docsdir)" || $(mkdir_p) "$(DESTDIR)$(docsdir)" @list='$(docs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(docsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docsdir)/$$f'"; \ $(docsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docsdir)/$$f"; \ done uninstall-docsDATA: @$(NORMAL_UNINSTALL) @list='$(docs_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(docsdir)/$$f'"; \ rm -f "$(DESTDIR)$(docsdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docsdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-docsDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-docsDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-docsDATA install-exec install-exec-am \ install-info install-info-am install-man install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-docsDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/download.html0000644000175000001440000000612707522521766015223 0ustar ericusers Euler - download area
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Download area

Requirements

To compile this package, you need

  • an Unix / Linux system,
  • an X11 display,
  • the GTK+ toolkit version 1.2.x.

Download

The latest version is the 1.60.6 : ChangeLog

It contains :

  • the source files,
  • the documentation files (html) and,
  • many examples.

You can download :

Compiling Euler

Before compiling Euler, be sure you have a C compiler with its classical tools (make...) installed on your box. Be sure,as well, you have all the developpment packages for the libraries e.g. XFree86-devel.xxx.rpm, glib1.2-devel.xxx.rpm and gtk+1.2-devel.xxx.rpm if you use a RPM based distribution (Linux Redhat, Mandrake, ...).

Then, open a terminal and go in the directory the archive is in :

tar xvfz euler-1.60.6.tar.gz

cd euler-1.60

make

su (for root priviledges)

make install

You can now remove the directory. To run Euler :

euler

For a demo of capabilities of Euler, choose the Misc>Demo menu.

Here, you are ...

There is also a make clean and a make uninstall to clean the directory from the object files and binary, and to remove the installed version from your box.

euler-1.61.0/docs/images/0000755000175000001440000000000010331246762013755 5ustar ericuserseuler-1.61.0/docs/images/pref1.gif0000644000175000001440000002155307414306114015463 0ustar ericusersGIF89a6xĆ 0AJuśJqśJu¤Ru¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™ÍŐÖŐ˙˙˙”•”R¬R´Z´Z…´J}¤R}¤J}¬RuśĹÂĹ‹‰‹R…´Z…˝Z‰˝R…˝R‰˝ZŤ˝ZŤĹR‰´Z‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍAm‹Z•Íb™ŐbťŐZ•ĹZ™ÍRŤ˝˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,6xţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•–—‹›śžˇ¦¨§Ş«Ż®±°´µ·Ľş˝ÁÂÄÇČČ1ĘË2ÍĎŇŃŃ1213Ö142×ÜÝÜá2âä;<;4ćę=ë;ěďî4ď<=>=÷?÷÷@úü÷A=řŘ` "2$ČA"AB”1DE†’1ŁŽC>z IňŁ‘#&Q&1ÂreK/ŤŔTb„¦Íš8•°ĐÉ“Ĺ%:ýITÉOA (4©¦OŁJťşéi€«J]-Ĺ5+ŞR§¸Ę‹.ZhĎŞ˝ekW.·ţjÄťkcî±ÉňB;¶¬ŮµÚ® LXđ8kăv(N·ťătç ·;ÇŽ‡—3÷Čw9_>|ú>ů|ČB…¨OźŽ°bÄ!°5ĆŢ;cmIzdb„7Ť¬.Ľx.•¬ÜŮ„gsA XĐ@ú‚éŘŻkĐűT«Q«~ęô‰(Q©ŇŻj5K–ű´lßţú X.`ŔŚéĺËĚ´ij“Ť7Ú|łÍ8’“ :’QÖ<ďČă=î€ÖĎ…űTІ¤šB =TŃDŤXâFe´‘Hş•äâI)×KÂÁTŁ‚8đ€Ž<. #>>$ŃIä‘FVţ·u 4p]“Ű5•SP}Ţ•OiĺX^…őU*c ‹ZiÁ‡Ë-ĽŔµ 0rŐ%×1uí§W_Ô6Řť…a {v“X:€>&č9„NćŽ;B¸ŕÂf…樅ţhřŹiVšC­…X"l´ÉĆ©l*â’ ;–ÚcŹ츬®ęj«D. etÓ9™Ý­ŰmgĄxĽ~âÉ&ć‘’Ţ)Ş ňJí%{&.şĚw_}Đć‡@śsöŤVsÍ€Ű(C6 †«¨ Fv¨.á<ďXá» ¤a‡©éřć»Á¦mp‘F„*H,AÁ'¬°$ěŔĂ@±ÄţďXqÄ<ŞúcHvld’GVWťMJ·TR'+•»béŐV[ĆÜ—b@-©ł™iö,×Ďsáő&xÝU-_€i Ö¸p ÓL?í´ ă¦K5ąŠ‘›.:Š:–nşŤ[™˘š‘ݨgŚ˘ťŹľů„¦±/Bs'$ŕ­wŢ|ë}p$\ŕ„n¸H0xâ¦6î@Źů«®>બK.9ťćÔĺŠ+vݱ,UŻ›ŕPŢ顫ž±¬ űŢëe®IK/ô=‹_1ÂěGg_L#ŕB4ă>óű NǵńŘ{µÓ4(ĎĽ˘TŹuŘé¤ËâëHŘöÚó°>ţ÷|/Ľ‚Xp`°ţŔ/üńO Aý÷k`úăÝŢ3ÂF@B aăŃĹ.Ö¸Tm,U°úÇJ&2 B‰d¶ZĘSDgĄďçW2 aXZ'1ŐŚ®Řٲڂ&ŚË-.Č…\ކ—ßŐp\Çř2Ş–Ă¦=Ť0U“šaľ Ć,f’ˇÁ ĹÄ%žË‚€ú,Ŕ6|Y }Xdű. ż tŃ‹xcßƸ7ż đ` CŁĂ¦86&®aŚË!çŞÉµęޤ•¬jeťĎm't$ÝxDá+BzÉK6k{`7&ř¸`v»řÝ[YźöÂ’;T†yţ·ŚßQ [NÓ–ńŠG oČ`âĆ$U– ßsbev Ř’¸%:Ë]rŔč@0§(Ě LŃČś˘ŤąLöy`~Đôbýşx?1ţaÄć¸F5˘b;zĹäč8Ť ÉGyś ČhuÁ ¦LJTâŕč®3Í,.č>‘eŠGšÂʬE@Ń2P.Ë’.¸…%ć7!Ł:Ěäď"Ú—U&­•x¨5,*Z~€¨b/9‚[v€¤ľ<©J9p_¶4™0˝˘2eŠĹ+rq‹Xô˘N˝¨?k’ń§z 7w°Á5̨m\âGÎ9˘ ťxŚ ćöţ9?Zu¤çx\ `ą€K×)ň©Šq­â«°@iC¶*ę>fő%ź5QßéE¤×jĆ*˙ł×k",`KŘŠ€°‡=,HűŚ€ŹŤě-‹R[–Ô˛&E©1‹yĚÎĆ™ěSź/@?ťNřłźj˙׿l µ€LăR6Îr6UHĄbŐ9Ő˛X‰ŚI¶ş u¤„Ő×Yˇ>ÁÚ:1­§,*ä™[ZŘ36=‚ř >P‚@»Ţ ďw K^¤čý¨zÓ RDö˛#8©-OZŇ•Úץ,őěL™IÓĐNŕ¦˙ÍéN˝ť†¨@}-áŠĘFţ¤.q‹k*źjGĘ )s±Ň#ç¬ęąâ‚çĂܰNÖŐ±ÇuÉj¤Zt1;_<Ëv‚8 N@ă“ 7ľ± p\‚ű¸Ç@ţńŽąk| ě`“LŘ%/™°‹]Żd§ ŮÉęňĘż4)0‡ ĚÍę7¦Í”"4KKć/˘Śü 6]{ĆŘ®b'Ćj+áŤ!!ťx.;G&”Aĺť+3î'¬‚-Ý󞼲ˇ‚¨ŕŹŽ´Ś!=iOÚ'Ŕ´¦3Mwş»źö® ¶űÝR‹÷Ôä=ěy»ŢV@˝ A{oYŇú˘”ľ)e)~_šßĎÚ”™v€ąČEťţö”o¬E°4 7fK pv¬TĄ2n©¶]•Ş háĘy{VťłUç¬Úťët§;-{ŠéžŇŐóŚâ<©Ö2AďzŰűŢřηľ÷ÍďH°ŕ߸ŔNđ‚üŕO¸ÂÎđ†;üáʏÄ'NńŠ\,hĆ7ÎńŽ{üă ąČGNň’›üä(OąĘWÎň–»üĺ0÷8 0óšŰüć8ĎąÎwÎóžŹ|ćȸχNô˘ýčH7:Đ…žô¦;ýéPŹ:Ń—.őŞ[ýęXĎúĆ©®ő®{ýë`Ź9×ĂNö˛›Ýěc?»Ú×Îö§§˝ăU‹»ÜçN÷şŰ]îmϻދţöŤ»ţ ë/Ř»ŕóľküďY‡Á îÎř»· ńŹü¸/ůĘ+ŠđW7üăµ®řxţó ˝čG/úţô¨OýčMŻúÖŁ>đ—şćŹőλţöź×ëqĎűÓëľ÷Ľ×}ěeOóŹÓţę¶ľęŻüć{žůÎO˝đ‡őŮs~÷Ń=ôł|ěs_ôÓ§ľÓ­źxď˙ůć?żôÓŻţđ‹?éäŻ=űąż}ő/ţßw˙űŹ˙ŤĂľă˙7tÉg9Pč{řG¸JW|w|÷ (F7€9 €ˇç}xřzÎWéÇz~ Č€Sç€pçqČq-Řč0ţ.ř‚w2ČqX‚¤Çć‡}óǤ'‚Ţ'ͧ(8týG˙‡3H0xNŘ„{T¨EŘFčy¦·…{Y¨…»7†[xfč&¸EH‚źW†h~H„=·„3H…Vwř„Wx…O¸q;¸zmČ…lx†`¸=g8†‚Č…Śz"H]بŽx‚rČstx‡y›…{‡·‰>h€(‰ŤXŠ«zʍ“ŠÚg‰—¨s™Č„žČ‚ąŘ‡y‹÷‡ĄgŠÂX‰˛(‹±¨Šm‡a‰¬†­čŠ´X‹8w‹P¨‡ hŤĽXŤuŠţahŚ«8…zěG‰ŕޤ~¨ČŚćŘŚ&(ŤJ¨‚ŮXŤ1¸‹MhřqŔčŤřŚ„ßŚÍ¸ŽŹ¬XŽĐčŽ>G‡Gg‰ű¨†”ŘףŚů…„čŚÄ(ޤXŽ@č†č§sŹ~÷t´hí'„ö×))’H’‡çtŃ’çÇ’Ť7 †.ąs u4™*™’9’;™s= u?©€C‰z6 ”Ei”0ąyĺ—“M9”U™}qř”.w”O—”X”5 –ݧ•…•ň(u^}Wy“k‚ŃH–*Ç•PgytY—vy—x™—zą—|9w´(—p(ř—fŮţ0p™ŠąŚŮŽů™’9™”Y™–y™™™šą™śé. x g}0Đ—¤Yš¦yš¨™šŞišŁ š'šg)˛9|­IAr7šłą›ďW›ˇYşÉ›Â‰yľůšŔ›Ă™śgWś2wśĘůśmÇś›D7`÷–"׋m‡ť(÷‚ŘŘ•źi›L·‚ÁésÖůuÜ rÚY”'¸žI'ťGťŐ™Uȇ–XŹő)ŢY5h…ř‰ű…8čťřé‚ß) ú©Ťř9 ôÉźž¸ šźę˙…ýItđąuÎ9źôxŤ}Hź˝čźÚhŹ×¸‡î)˘ßŮžR˘Uhˇ!ţÚ˘óh ʢů¸‹2Ú‚/ęsŞqň9źř‰#úˇşŁ :Ź9ʇšŁ7jŁťHŁö9¤ ú¤5:ŁNZ¤:·Ł-ĐŁ ˘:Ąý©¤* 8ÚĄHʤő Mʉ$j¤ €Rz¦í٦f*¦éůrXŞĄCwž4*Ł| ¦5§l¤Gšťkş¤Uš !¦o ¤†JĄ=w§Ztzş‰€z¨BŠŤ@Š˘cú§I:¤MŠ©súŁ— ŞBZ¦Ú¨~zĄáů›·i|†‰ś:§˘?ę„n:« ¤Jˇ÷آšxź´zŹ÷ɤř˘ĂjĄЇJ‹ Ę‚żŞ«şŞĆŮŞřŞĐi¬fW§ţ—©ŇJž°ş›Řšuß*‡Ú:žńH­Ő:Şd®â ­Íą­ĺZžçŻ^7®¸i®ňzŻ‰Ç®Ó©řÚŻh©ŻńÉŻF÷­ęŞr‹Z°%G°‰Š«+ljęĄ,÷©ŞI[¨iЬ! ĄąµKűł*´«ˇîZ’%«KĄÚ§#ʨM˨W«±'*§¤j¶'÷±¤J¨m;µ5'´ďÚ­6W¬(¨ŘŮłşş©čjţ©i[«@kł7ë´t˧†+·V‹°(g·^‹·7W´‚¸D*¶Ö*¸Tű´•Jąq›Şű´™Ë Vű¨[ËŁë±PËąj[ş”޶lK¶š©ž[»™Kµ™:µRęž9ą1ůµ±Ę˛8[ł¦ę˛ÇÚ˛Ľş4›¨Zˇ9kĽĽčĽżŞ·‰ ·!Ú·\ę¨8ç»›Ľţú˝xşYšşŕ[ľĎęšíJ®‘kľěľč»Ż]ű»’ŰľôërÜ››ó[żú›r÷kŻűűż0׿Ţ;ą1÷źuĘ»Á»· ˛$ç¸'Ŕůërśµ#7Ákr,·\”ěŁ¶Şž0«Ŕ3Â{Z )[‡Áş˛ôţłů˛Ç{ł1kÂŇŘÁy깲k»kę¶SŞ©›Ëşʬ>Ě´‰Ë€4lžťşĂ«{©8¬ÄGüĄ€»Ä˛;Ł€ZĽµXÄ=g˘2¬¦*ÂžŠ¨tŞÂ—;Ş´{¸+«Ŕą˝OĚÁâ‹§ŞKÁŠ[¨Vú˘T,ş•zĂ• Ći;¨CĽVl˛sjÇ–*±Ö ƦšÂ›Š¶Ů;·6«Ćď°ńŰ˝Ür+ŠĽµš¤Í»«p[ł•ÜĄNŚÉ+\Ľ|ĽUëĽĐëŽ} Ŕ¨¬r§śĘ¬\r«Üʰ rŻË´ě‡kLľµśËłśË±ĽËĽÜĘľüË©ĚÉŮ™Ć|ĚČśĚĘŚGĚĂ©xÍŇ<ÍţÔ\ÍÖ|ÍŘśÍÚĽÍÜŚçĚ©x«9Îä\Ît'•ŕĚ›âlÎěÜΩ‰Î·üČřű˝ëěÎö|Ďy ύ̵ę+żôĽxřĐ-yú,žő:Ŕ–ŰĂXG«eű¸­(Ţ<.]5í=ĐÝ—ÍŞý Éü¶čŮĐarőüĐmŇŤŇťŃ,˝—­=Ďn*ˇ#ŚČŰřˇËŞť9Ćs[¬$WĎ˝ŇBmŃD=ÔÝŇHmy/ťľ ®›´ľę˘dş˘BĆvřÂq¬ŹG]Ô\ŤŇ}ŃIÖ‘·ÔđÓţ[Ş]<ÓyڏK\ȢŁu Ô\ÝŐB­Ňs-ÖxmwdíČf]ţ˛zKĆaĘ©zČĹź+ş}:Č{ ÔGíŐÝŘCť×=w{ÍĎM˝Ŕzl †LÁOŤÓběĹo:r%-w^͉F٦ŤwßĎ}íÔIś»‚­ÇPĚĐŮËÉm׎}×v˝Ő§ Ů“Ťşň|ÖgLÂ.|ąE;¬×[¦ĘеŞĐ%ť-˘ťŇş˝ŰyÝŰăűŰ˝vM›°''×ÔýÝwiÝl¬wG‹ÁÝ=ÝŕťŢcťÚűěŰ«ŤyÜ™žßęÝę]ߍ'޸\­ômßü}ÎěmĐÉłąßý]ŕ“÷ß]ŮţÚŢÂâ ţŽán⽌â$+ŕ*.á,>´P§§€±{ěu¬´ďăwu4®u‹Ŕ ™ă-W⬠ÔˬˇŚÂ ś˛Ă›‹h*˝'ŚŮH~Ő8Í ŚĹϫ䚼ă >ŢH÷¦©ŞĂ€‹´­˝¶UËÉ.;…Rű°&ŞćpĽ§łí“<ľľRÇĐ:üĆ‚ÍÄ€śçGěÖ…­Č%ĽąÍçÚëľŢâV7©p.Ć€ŐpЏ|®ĺSü dÜÖ ›ä‘ŽÄ -€uîĎUÇčVMČŁ{Ç~.ékŤą.ŞĺŤ¤ĺ}čEgä8'ę( ČrŢÚ?ść{>渾ęTžÖë č°~ľ‰.ăwÎĺĄ<ĺĂ›ĺ' łÖˇţ‹Ć©ľĺĹŤÜĚ‹¬68¶Ëët˛.›Džtß^vÝ.á~± 9îYî[jĘźîŃ/ÎĘčţîĘďňţĚí.Ó&yă·ËźcËŔ@ć ý¶kčVGď6Ţéżç 9¸¶ű^uo°RNÉý¤?ˇ7ÍégŚńR˝É;˝´l>Ü“ĚäźءKňŃűŻ_žß’ Ł {Čfţć»ŮµŽŞ:~Ł´=ŘąŽĂńí ĄËí÷Ü ętÜë3/Ň·ŽęśžŮlťđ¸kć*_ě=>ăS-Ă‹ĽĹ€ŤÇŮţč©~čhK؇ éMÇęÎżAźÝF|Ş öw|ôŤšČ6¸y~Ů…űđýă^.ţővžďWŻÖŻëë–Mó7Żô8ĎÉ´íÚq{ň®]öÝ}ö.>ąÍÚĺ:ËďÂ:Çżń#ÜŮÄ›ťl»”ěÓ^j¶Śßř+ŹÝŹßŕňmď§˙Ţő®ńĽ›ŹĘVĎđîřŻŔłźűąűĽO–ľs…›ÁlŢ_ŔZlűłÎÝdü5‡ć¬ďĄŻükďđcvÎßŔX‹ą— Â' áüä=ű˛vÂKŹĽ˛=…ÍKÓ1Üďȇű|źŤĂoĂsČFßą.ŻĐ_óůźĂS­ď€Đ"8HXhxăó‚ČŔ‚čҲ™©YčŘŇů)Ę9(ęiŘišZZJęúŠŠÚ ţ;Křr‹űŞŞËZ« LĽI\LĽŘř9yXyi ˝):=üë‰+Š-ŚÝ»ë»=*śj{hý)žÍ+~í›[ľ=Ť,ß)IiYIď?ę( ·SłîU#W«`+kĐ%!D†żY4ř/ă!{Ęô5ă§Q#CjśH–ó5śÉ“yą7î–ʉ(ż­z2'"އň13䬟Îy#%š’I é)Ą«”^ Dzä=xĄR•Ů´%0Şî´iăPz< ůÜ÷l¬ÚµlŰş} —,Ł{g?¦Ť‹7ŻŢ˝|ů–-T(Čľ„ >ŚxçÜŽ? M 9˛äÉ:˙ ěx0ĺÍś;ţ{¶<3ˇÇžK›>Ý´ ŃHŁ~ ;vNŐř–ˇ*;·îÝŠ÷´m7oÂ0Š?Ž<ąňĺĚ›;=şôéÔ™ ˘ÍZëáÄ»y˙>ĽřńäË›?Ź>}ú~Ř ľËÝď ôëŰżŹ?żţýüűű˙`€x_ ěůf–{™Áź^Ťa„NHa…ýx‚€)8šf îő …"ŽHb‰bČO2żyôžp⢉2ÎHى(¶Çâ‚.ŠTQ&b%ŐU1™Cä&1Ň7ź}¸(y ~IÖe”ިáe¶ćaN?6$ D>łÎ––<ąd}d"i&“R®É¦€TŞ`Žţ28_-ô SIÉPQŢÝigL´čiä“h¦y¨’iÚfŁŽÖ÷&]Wj—e:^U…”Ą6=ÔŐM›ÂćB@VUä Gş`虊.úh«ŹFĘŘm0ysŃK´ÖäP­'˝S¤V1š*˘‰˘:¬«ĆB 늍Í)\®_yš+FÎ’Ô M—â´ĺ©Á&ş-±Ç~[c˛q.‹%|Ó*4“Eç űi¨=Ij¶Ŕ®ę-°Ý€‹ŻŤÂąˇśĺ6{iQťÚŠÓ¨ÓPËnŻ ¬ČĽÂ&É(˝ůN\ˇ¸ý’K)ťCĘ’ X‡ĂgîtŐş.őYę0ÚŢW&ŞŘ°LqĚSî+©żďč%L¦‰ąkĂţ2˙|¬ĹVÚŚˇąśš|Ďbž tÓk Ú¤E»Č&<'¶%ĎL;Í5ŤPŻ&őv/Âq×f—řumD‹=6\[ź wĹ4Ç\Ű^m7ls++kŢq-wŕh§X3ĆSűŤxânWőÚY*yä˙ŕh8Ű’_Žą&”÷ťyçžoÄ8ŘŽ3řyéo^·éŞgŽz‹«ż.yë:ÂN{â˛3[{îvßţŻîľČűÍż?\đ‡ŹĽlĆ[ž|óś-˙¸óŇO=éÓ_ŹXő8cĎ}jˇ«]yôÝŹďŕ÷ŮO~ú š¶řężż–öđĎ˙–üô߯–ýřď’ţü˙/~ -|Ö 3áţż*ěÝöÁ °q|`Ŕ j0Ś ;ÁV„ ü hÂţ/…*Ü [xżÂp~2śáűjhĂôá0‡ăŰ!ąçĂ^/B”‹ŘĽ#"yJ\âđščDßA1Šą›"igĹ+ľ.‹ZT»Xş/‚Ńsb#ëDČ93bŻŚjŚS×Ć!ľŃuq”ăE7Â:NŹŤzDű·?˛m‚ä‹ iČ!2‘ÜY$#yăČGę&’’TŢgWIÝQ2“ŻŮ$'OăÉO–&”˘ě )Ką™S˘’z—ÄÝ*˝ŘĘŢ˝ŇtŞśebjiËĂŕ2—…Ů%/˝wGţđĄń—n ćůGL?ĆRxÉĽś/› Łe˘šŠ{&5ë'Md^óŮtß6×Í~S‘á´ŕ8‹WÎsúÍšę ;Ű9›tÂslďśgFęiOTŻ:üě§?˙ Đ€ t -¨A‹ÓMÁ)tˇ őŹ1ĂvĐJt˘­¨E/ÚĎÂ5D=í¨G? ŇŠt¤$-©IżC7C`tĄ,m©K_ Să¤Ô1 ­©Mm:Ó|šî|:ÍO{ząź5rBŞâŠjTÄ!5©y[*SŰćÔ§ľ(ŞRmUÉS–:瞧kÄIżúQsÂŽ«¬Ă›lÄú:˛žÎ¬±AëęÔęL¶ęm«R«]0?äVŐţÁU;6Ĺżn* ŢIŮ+Іă×ŔĆG±ČkiäJAŤ86•‰íPń›É>˛x”l#+‹ĄËZ6łŠä¬03˘Yę–R˘ -iăsWb6µ’‰í_?;Ú}ŔÖ´ł]K;˘2›ŐÖl5-!nŰXâVMKĐí&z;ŽŐ$¸@.q{¦ ăš łşŤ†tŁŰ\ŢÖµ´ĺ’ °;9á–÷(ćС|U¨Ü~Ä»‰(™S¸R2c8WĐŐ‰»ŕUőţc$K z5ÇÝůBc*!Áô+^˘c˝=j°v aŰ/xşĐbX1¬Ű]cü¨ĂłĘŮN"l¸ ÷ĽŢnu5,âvśţëSó±‚E\_x8kO™ oaÇK ë,]Ôm|qL¤çIź0>r—Fâ”řÄ?–0yŐň]ŕöOŔôȆ¦ľ|2&;yĚŮM2»˘|+#˙ŁżCů­—‹Le×Ň×ĚîĄgm,.ă·Nćˇ>Śb϶6άms…‘Vă&Ë’F-nŐ\h˙zČőPt¤]ĺ_yĐż"óu)}4/:ĎŹö›'ÉeLŹ:3»Í´ UMčá˘ÚÓ˛ŢÍ~3Ń۬TŔş¨Ą‹Ök_»:#`-¶x^l c+»Z«Nö˛źí”yr·ćŤ‰ ä-¶3׆ܴ«ąíÍtű¨Ů^]µw3îÄ}Űţvĺ]­\U»­;ާ™7˝Kcď{w&ßúŢ żű=™<2xb nđĂ <á…Y8Ăűâđ‡ď%âĎ Ĺ+—‹cü-ßx[:îńµ€<äcń NŽň”«|ĺ,oąË_óË|ć4ŻąÍoŽóśë|ç<ď9Ë#ô  }čD/şŃŹŽô¤+}éLoşÓźő¨K}ęTŻşŇ ¬ ë €¶îő€c/;P€=íl@ŰßîvŔ»@÷» î(Ţűţ÷^đ(Ľá Ä# ń2X<ůÇ?>2Á (Č ňšßĽć?/Đ‹~ţ<Ř HŹú¤~Şo=ëiĐzôŔ=¨ýj_{ ŕ^÷µBtďűŕ÷@řABńŹo| !Ĺ'B–ď|č??Îw~†@„!\˙úFĐţşĎýűF8ůÍź#¨?ýëgAűŤŕ~%Aţôźżý•%°@˙ú_‚ú˙Jŕ(€ř¨€ ř Ř€ č¸ ŔČč đ ‚#Č ‚ `‚  ŕ‚-č‚1(3Xç‚b‡;¨:¨v>vŕvjgwsg„Ewu§„Ixwy‡5€7đ„QH…ţ…'…Vxx…—x…×x‹Wy_y`(†”·ye¸exz;`zj¸†§WznzĄWzŞ7‡¤'=p‡·§‡=°‡}{·7|€||ČĆÇ|¸|Ě·CŕŹč‘00P‰p—‰–8ťŘ‰000ŠĄŠ¦¨Š©¨‹±‹‹ ´h‹´ř·(»č‹Ś ¸ŔxÂÇxÉŚ¸ŘÍX‚ ‚€‚ŐHŤ×‚ pŤ4Ču.h\§u\v]÷ue'vd·v?wë8„GXws‡w|·wz÷w~ww‚çw„—…Ч…Ž×ńxŚ'y‘†—Çy›—yhz )z o‡¬·z®{‘ůy‘™‘ů"‘Ŕů#)#Ŕ(©’)É’Đ’. “0i0Ů`“`“€“;©“=É“89‰`‰:ů‰Eé‰Gi”źŘ‰J©@Šŕ”ĄřŠSéŠU ‹Ż(‹YI‹ł8‹ŕ• 蕌؀e™Řk©–!¨)X‚"¸‚-8—°‚+ČŤ4řŤŔ—=Č—<Čd'v„:„Gy7wKŹw…‘9…VG™•i™—‰™™©™›É™M;euler-1.61.0/docs/images/pref2.gif0000644000175000001440000002007007414306114015455 0ustar ericusersGIF89a6xĆ 0AJuśJqśJu¤Ru¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™ÍŐÖŐ˙˙˙ĹÂĹ”•”R¬R´Z´Z…´J}¤R}¤J}¬RuśR…´Z…˝Z‰˝R…˝R‰˝ZŤ˝ZŤĹR‰´‹‰‹Z‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍAm‹Z•Íb™ŐbťŐZ•ĹZ™ÍRŤ˝˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,6xţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•–—‹›śžˇ¦¨§Ş«Ż®±°´µ·Ľş˝ÁÂÄÇČČ2ĘË3ÍĎŇŃŃ2324Ö253×ÜÝÜá3âä:;:5ćę<ë:ěďî5ď;<=<÷>÷÷?úü÷@<řČ "ü1ČA"@B”DE†’1ŁŽC>z IňŁ‘#&Q&1ÂreK/ŤŔTb„¦Íš8•°ĐÉ“Ĺ%:ýITÉOA (4©¦OŁJťşéi€«J]-Ĺ5+ŞR§¸Ę‹.ZhĎŞ˝ekW.·ţlÄť{cî1ÉňB;¶¬Ů5Ú® LXđ8kăt(N·ťătç ·;ÇnG—3óČw9_>|ú>˙ř|đÇB…¨OźŽ°bÄ!°5ĆŢ;cmIzdb„7Ť¬.Ľx.•¬ÜŮ„gsA XĐ@ú‚éŘŻkĐűT«Q«~ęô‰(Q©ŇŻj5K–ű´lßţú X.`ŔŚéĺËĚ´ij“Ť7Ú|łÍ8’“ :’QÖ<ďČă=î€ÖĎ…űTІ¤šB =TŃDŤXâFe´‘Hş•äâI)×KÂÁTŁ‚8đ€Ž<. #>>$ŃIä‘FVţ·u 4p]“Ű5•SP}Ţ•OiĺX^…őU*c ‹ZiÁ‡Ë-ĽŔµ 0rŐ%×1uí§W_Ô6Řť…aX {v“X:€>&č9„NćŽ;A¸ŕÂf…樅ţhřŹiVšC­…X"l´ÉĆ©l*â’ ;–ÚcŹ츬®ęj«D. etÓ9™Ý­ŰmgĄxĽ~âÉ&ć‘’Ţ)Ş ňJí%{&.şĚw_}Đć‡@śsöŤVsÍ€Ű8C6 †«¨ Fv¨.á<ďXá» ¤a‡©éřć»Á¦mp‘F„*H,AÁ'¬°$ěŔĂ@±ÄţďXqÄ<ŞúcHvld’GVWťMJ·TR'+•»béŐV[ĆÜ—b@-©ł™iö,×Ďsáő&xÝU-_€i Ö¸p ÓL?íô ă¦K5ąŠ‘›.:Š:–nşŤ[™˘š‘ݨgŚ˘ťŹľů„¦±/Bs'$ŕ­wŢ|ë}p$\ŕ„n¸H0xâ¦6î@Źů«®>બK.9ťćÔĺŠ+vݱ,UŻ›äPŢ顫ž±¬ űŢëe®IK/ô=‹_1ÂěGg_L#ŕB4ă>ó; N˵ńŘ{µÓ5(ĎĽ˘TŹuŘ餻âëHČöÚď°>ţ÷|"Xp`°ţŔ/üńO Aý÷k`úăÝŢ3ÂF@B aăŃĹ.Ö¸Tm,U°úÇJ&2 B‰d¶ZĘSDgĄďçW2 aXZ'1ŐŚ®Řٲڂ&ŚË-.Č…\ކ—ßŐp\Çř2Ş–Ă¦=Ť0U“šaľ Ć,f’©Á ĹÄ%žË‚€ú,Ŕ6|Y }Xdű. ż tŃ‹xcßƸ7ż đ` CŁĂ¦86&®aŚË!çŞÉµęޤ•¬jeťĎm't$ÝxDá+BzÉK6k{`7&ř¸`v»řÝ[YźöÂ’;T†yţ·ŚßQ [NÓ–ńŠG oĚ@âĆ4U– ßsbet Ř’¸%:Ë]rŔč@0§(Ě LŃČś˘ŤąLöy`~Đôbýşx?1ţaÄć¸F5˘b;zĹäč8Ť ÉGyś ČhuÁ ¦LJTâŕč®3Í,.č>‘eŠGšÂʬE@Ń2P.Ë’.¸…%ć7!Ă:Ěäď"Ú—U&­•x¨5,*Z~€¨b/9‚[v€¤ľ<©J9p_¶4™0˝˘2eŠĹ+rq‹Xô˘N˝¨?k’ń§z 7w°Á5̨m\âGÎ9˘ ťxŚ ćöţ9?Zu¤çx\ `ą€K×)ň©Šq­â«°@iC¶*ę>fő%ź5QßéE¤×jĆ*˙ł×k",`KŘŠ€°‡=,HűŚ€ŹŤě-‹R[–Ô˛&E©1‹yĚÎĆ™ěSź/@?ťNřłźj˙׿l µ€LăR6Îr6UHĄbŐ9Ő˛X‰ŚI¶ş u¤„Ő×Yˇ>ÁÚ:1­§,*ä™[ZŘ36=‚ř >P‚@»Ţ ďw K^¤čý¨zÓ RDö˛#8©-OZŇ•Úץ,őěL™IÓĐNŕ¦˙ÍéN˝ť†¨@}-áŠĘFţ¤.q‹k*źjGĘ )s±Ň#ç¬ęąâ‚çĂܰNÖŐ±ÇuÉj¤Zt1;_<Ëv‚8 N@ă“ 7ľ± p\‚ű¸Ç@ţńŽąk| ě`“LŘ%/™°‹]Żd§ ŮÉęňĘż4)0‡ ĚÍę7¦Í”"4KKć/˘Śü 6]{ĆŘ®b'Ćj+áŤ!!ťx.;G&”Aĺť+3î'¬‚-Ý󞼲ˇ‚¨ŕŹŽ´Ś!=iOÚ'Ŕ´¦3Mwş»źö® ¶űÝR‹÷Ôä=ěy»ŢV@˝ A{oYŇú˘”ľ)e)~_šßĎÚ”™v€ąČEťţö”o¬E°4 7fK pv¬TĄ2n©¶]•Ş háĘy{VťłUç¬Úťët§;-{ŠéžŇŐóŚâ<©Ö2AďzŰűŢřηľ÷ÍďH°ŕ߸ŔNđ‚üŕO¸ÂÎđ†;üáʏÄ'NńŠ\,hĆ7ÎńŽ{üă ąČGNň’›üä(OąĘWÎň–»üĺ0÷8 0óšŰüć8ĎąÎwÎóžŹ|ćȸχNô˘ýčH7:Đ…žô¦;ýéPŹ:Ń—.őŞ[ýęXĎúĆ©®ő®{ýë`Ź9×ĂNö˛›Ýěc?»Ú×Îö§§ťěU‹»ÜçN÷¸·ýîxß:ÍÍîźĂţ ď€_űŰ9^÷Âţđďy `€řĆ;~\-xĽä!ř«^ă.xć7ĎůÎ{ţó }čűÎóĹ‹ţô¨G= RĎúĐ˙˝ňUż|ä[OűÚ{žô-€îwĎűŢűţ÷Ż7˝í‡ďy!¬žř¬7>ěcżwŹgůĐ=î_óŕ?úĂ7>öOŻüĺG]öĎßľř_0}›[üµ×>ú‹O}ď;üëß~ůk~ţř§^ýö×|÷Ý˙ţćw<üů7|óW}'|zř—űÇI(€÷zľ‡rX€×÷€ě÷€ Č€G瀜w›‚8í—rŘř»'z"H{ ř-x|-ţČ}%ČEç!‚ş‡›G‚ ·{{¨{ągžw3Đ÷‚;¨‚Č·68uţGxG¨×·‚š·z2¨‚W¨„]Čy>čqÔ7„w‚ő‚®×„J…j¨…lN‡W„j¸yP…>‡Y¸†^¸‡~¸€č‡kŘ„_ŘA(„@X†‡8†ŠX„(¨ ÷…[ř‡“‚Lȇn8†św‡xČsz؇{8‰šXВȉ|¨yaŘqŚčŽx‚)Šȉ¤X‹ w‰]X‰ť—„žř‰:Š[X‰Ľ·‰ĄXڤhŤX®x‚ŻŘ±8§‰‚"x‰˘X‹…Č~ľxţS¸q¸‰ş¸‹ÄŤŁx{‹řq­ŽÎ‰źŤäŠúÇŽ™xŚĹ¨ŤŰ8tŔжhŠ‚xŚ™†çŽDŘŻřwgŹű´ŘyÖ(Ťüčv¨Ś÷sůŘŹ9čŽ ʞ¨Š‡H€ŹŘŽXȆ…’t‡ú¸o‘ )‘isˇČÉ‘ s “ń¨,Ů’b׍g“GzH“F蓉“: Š<9{D9Ťť”/W“6ů‚ń׋Gůr/ą”MŮ‘Bů‘X)•ëG•UŮrW‰•ČŔw–g9”Ké•č–aąrcI–ä§xI“Fů–7—d‰{:‹QY—Űç–x‰rŕ7ţy†)yDwŠąŚŮŽůYw ~Y™x9™IŮw1°™śŮ™žů™ š˘9š¤Yš¦yš¨™šŞąš¬Ůš®ůš°)š.°x G™1™¸™›şą›ĽŮ›ľ©›·I›g›|i™ĆiÁ‰™AršYśÇůśŢ—śµ™™(čśĐyť€'ťĂIť·‰ťŢYyÚ)sÜiťßYžfžGśZéŠ]—“&ÇŚďYr,YîíźEGź7WźěyrčÉqę9“ý™uü9rřIrrú‰ b( D— =ˇ÷źz·śל׊e8Ë(÷ɡ)‘ŠZ‚ę8˘%Z„#š¬(„ţ ˘öŮŚɢö9„j.ZŁ?Ł*š˘ŠŁ0ęŁÚ ÉŁ!ú˘Ë8Ł|ł©śL÷Ő™ˇKŞŽÉx fHĄSšŁ Ş¤ĘŠYšŚW:¤Íآbj¦^Şˇ‹H†_š¦ajĄ&:Ąlj†ĚČŁ_Jˇ AxźTş ?X¤DşĄ~Z§DjĄUÚ§gZ¦Š*¨…Ѝfş¨Ž §Ú¨ej¨„Z©Ú¤ÓiˇÎĄŹ ¨_*ĄbjŁ%ęĄ˘Ş¨]ş¦4 Ş˝—¨—:¨«Ľ¨đY«mʢg¦ŞęŞ‰Š§- §ëi©“ ¬ŞĄłę¨˘j¨č¨¬żš«ŹŠĄČú§°©ţşŞ  ŠŁľ«çČ­™*śâÉ©PÚťź*­Ľj¬ˇš­‰ş¦dşŞ×:­Č:§Đę¬ńZŞ Şů­Ţ: ˇÚŻ¨Şˇí'¬Ä:«+j§/zŁ=š¬;†ôi¤9 ¦˙Ę«+°;¦`ŠŻDh±"z±)Ę­[¤k­Ňš¤Iʧ3I°ă…ęwí)źŃ©©ŰI®„ç©ز9‡ŻO§łÇšť2;®OZłćzłUתRg´$ ž?›ž+kžN«v*KłŢhłO[µ`µA;µCkµ\«uXËś6[ Šs(š ó9~şrľŞrb{tc«¶G łţ*r_{ˇTźC·«'Wź(›łÉŠ· jţtok‚›´(W·ť:´H±Ú°HşŁ6š±>zŁîɧA±©Ęk»§ K˘ŁŞąť«˘z˛+ş « 3úŞž;ą«Ż4ЏĺJ‚cK§÷ʰĐĘŻíš´iš»˙Š©ŁZ»¶ú®®ú¦—Z¨Ýú¬˝Z­oʬ°+´«¨·¸Ë»™k»»žČ;Ż"·ĽŞĽÔ;˝hŠ­ŰŻţ*©%Ë®ŃZťâĘ´R‹ya«ŻÍ:Ľ,ʸözĄńËł©Z˛ň›ĽŰ‹żÝ»ĄfÉ˝f)˘đK±ŞK§¤J© Ŕáę¤`«¸îkľ ˝űK­űű©öŞ·ŕę»ňZľÖ«®¸ó{®ÜÁ€ŞłÍ«µĎ‹Ľâţ»ąŐúľ?*Ą|ë˝,ěşŇűÁÁËżčZĽßŻ|ĽčzżzÂěëŔë Á:jŞj˝\ŠŞ¦;ź2ŚÄ7<Âţ[żIěş­k±¤»Ł‹ş–ę¸CÚ·BŠľ l·[۵ü‡łl'Ä‘w·fxöłé  MŰơ´ ¨ĆJÇz uxĚĆ{üÇD×Çe Č„¬xK+Çë»ĆDl Ú*ÂZ|».ëČ-ÇźhÜł× ÉŮŰ¶Śśs‚ě”lkÉ=;¸ŚĘŘ ŻqšÍ$'Í8ĽÂËjÍüÄ ° ě»đLÍ9iĂčüŔĺLÁZ˛)çÎé«ů,«‡Ú¦¸Jϧ Ŕł ˝ÚűĎúK˛â© ľ,Чڲ]Ż}ĂđZÁó|Đ…«źLŇbšÁÝÂŔk­ü\Ď÷«r ĽŘĽ˝×<ĎîÚ»\Š˝íË;ĚJü¸´›ĐęÚĎŚĎ|¸‡\ˇY;Ä(ĚKę±lęĘUj§P-‹ „ ˨aśż#mŐ+ĐŰ:şSýĹQ-Áń›ÓÍlŁW=·çΓü˛ {¤<‘p­Ę…›toÔmWţ×v˝Ôy:Çl ÍNgÇ÷\Č]w×˝Ř7§ŘŚýŘ/çŘ=Ů2 ŘĂ*Ř”ťŮm٫ٞÝÎśŤŮŢ›¤]Ú¦}Ú¨MšÚ‰śÇćąxh۲=Ű´]۶}۸ťŰş­{¤'ŮĐąxżÜÂ=ÜŹ·ĆbĽ©M­ČäůŰŚGÜÎýÜĎmÜľýśŔ ÝÖ}ÝĽ)ݬťÜ®]žŐŤÝŕŢŚ©ÝqĚÔ ĽÜOI¶(ë×&÷ÝăŇÜŠ˛{â=ßô­(ä=Ɖ‹Ţ.ÇŢ$|tîíĽßď]ߎÝ÷ŤÜç­­ĹüÂęĹ |Ä­šĄŽąţ ß~ážáľáÄ}ŕ3ËÝ~ĚÍîÚş;­Đ ţM©Ý,ĹnmUĂxđýâăÂíá@›ŕ+­Ď}â;üŇ ăţă.ăBž›4®ľ >Č\ŤÔ }Ŕ:îÂMĹ2ÝÜ>äC^ĺDŢŰŰmă×kĎĺ¬Ä7Ýĺ’L·RŢ{äV~ćŠYä|äË §Ú›âłëŃ-Ň!÷ßT®áhžç†©ććMĆmŐJŽĚ—+ËDmĹŁ{ŘŹ(w.ßzŢč“ÇçÝÚ!ÎÜŽ^é¸ é—-éH~ťvnéžľçX^Ţ‘ÎćOŰéź~ꍇ靍ť¦Žę®^wŞ.Ú¬nćŻ^ësëš®ßĆ)ęź]sˇŽß±[ę¶>쇷ڼľę˝žě7ÝĘŢëĚŢěţžýěĐžŮŇ>í“]íÖţŘŘží‹˝íÜ^ČŢţí€îâľÇä^ît|îčnĆęľî\Űîî^µđďN;ďôîÝYîç÷NŮöľď¬žďůíďÝďOÝěßíďĽ ŻđÇ.ë źî ŹÂîďÔOČźńoąń_•˙ń:ň"˙ןë%/ń'Oę)ĎîŻÜ-ďň+Żĺ1/ď/ßÝ5_ď7?é9Ďé;żé=ďó3ŻďAŻóCđE˙Ú?ŻëI?$ßôp ě őŁ˝ôT_őGŹđW˙ŰVżő\źőSďőÇůôbŹwd_ömwöhżvjżög×ön_vp÷a7÷t˙uvţ÷‰Ýőz”yß÷X÷÷€ou‚?řRWř†ĎÇ|źřľřŚßtŽ˙řHů’ot”_ůĽřÇšżůîwůž_zťú°ú¤ĎÉŁú> öŻúQŹŕDďúĄźú˛źö´_űlű¸˙öşżűrßűľ_÷Ŕüx?üÄż÷¬ŹńÇoűÉóËźĆĆ˙üWgúŇďźŃ_ý‡ýŘŻřÍŹóŰ_üÝĎóß?ýÚ?ţIGýćrčźţ·ţěżěĺ˙ţ™ţ@/˙Ü/ő­o˙˙ú/úôĎô€Đ"8HXhx¨¸ČŘčř)9IYi ăČŔ‚čŇ’yizŠšŞşĘÚęząŮůţz8Zúš«»ËŰë»Ëyč *J:ú›¬ĽĚÜŚ<[l{ě\m}Ť­ =LkŚ› .>ţ¸mH\kx‹LŢîţŽm^îÍŹź˙*OH?ý­/ Ŕ‘ř ň§ŽÁ… 2(aˇu+Ẕ…DB/zü.ăĆAAš<ąLd·öPş|éJĄ´„aÚĽyIfş‰ qúü‰I“°s+i¶Š4)!ťő”:}Ę”ĺÓ©HŁĄŠ§Už5łzą•cĎŻd=†%9¶¬Ú†g•\ —`ŰoăÚĹ(4ÚN±]ďúm7·îßÁâ§%Ś8^^n3ąM ą™áľ‘+˙šüزć]7ţ{öŐůłč\ˇG›¶hcľ™O»žTúµlJ±gŰ.—z^QÇ·{ă–Ĺx/ZĘľ‹?ĚÝo7kăĚa!?¨|xëć˝kS7nýşďěÚosď>ű;ř×âÇź.o~4úôź×łßěţ˝ĺřň#ÓŻźř>~Âú÷˙íďß]×€®eŕe%¨ŕW 6ŐR%á„P=Qtnf!bvÔ‡ %â>•hâM(¦ÓŠ,şäâ‹'Ĺ(#Xj¤!]Ö¨Ť<^äăŹ)$[7Ž´!qEbEä’r™ă-1LIe•V^‰e–ZnÉe—^~ fbŽIf™fž‰f–P®†– nľ gśrţÎIgťvމgžzîÉgź~ţ h ‚j'pŞ çVšŠ.ĘhŁŽ> i¤’R9”nl C¦šnĘi§ž~ j¨˘ŽJj©¦žŠjŞŞ®Ęj«®–Ş"“ÎJk­¶ŢŠ+¤±ÚBhŻľţ l°ÂKl±pîęäiH&»Ů˛ĚZćěł‘E+mbÔVKصŘţĄí¶wuëm\ŕ†»Ö¸JĺŠ.•Üćčŕ«îľ ęt_™bĄ&Éë˝UŮ ľYéK"żů‹Ŕ?zÁTL’±Ă)đC•>L± /RqĹ?Âđ†mLĘĹ‹ĄÂđ€ÜHÇ:˛2Â&“ă2Ć!<‰Ę/ŹCs!1łLr"ţ7ĂŚ2#6;”óR"3´łĎ3˝ČĐ<'’ôBQO3$ÓŠ8˝Ę¦„Tju#EKÜs%]oťĘÔ Q˘5+c‡| Ö©p=ČPk/ňµ fGÂÉÜsC}´1“ŔťuA{'wi$?+ÂŻ0ŠÓrß·w¦qC.7¦“ĂćřŮx'˘éä’Çý9¦ˇŻ]·#nź’¸ĺ+RúÝŹT.şĺ”Ëľ¸ě’¸Ž–$ĂţyíŰî»#Ą§Ěî#‡sn⡗ÝxŘş_ţ;í—ű>8îoľő¶CĽ×«gX8$Ç#’zôßĂŇ|îh§˝ůÓKO[ć<=O~çíwOąý¤źş)ĺĂţŚô]Ź~ďźűTWţ ë­ {É+ŕÉVýµ­xŽů Řľ ćD€ $ íj×;ŕiňsŢë Č;jo„tăaÁú-Ď^çßLxBÎNuda9J¨>ÝŮOty»č¸6:ÁM0|Ć#cŘŔfĎ „â5†'´2ŠÎhĹĹ Rń‹Dš ™XA'˛ŽŚŹ“˘ÇĂ8 ‹MӢ̞&+6ÂŁŠK["˘ §ĆQ.däb5čx5;–ŚéjÔŮČE’‘”¤ýŻLŞjŤ[Ó¤'M%G"~r”˘ş¤]ąCľDe6A%ATéV¶¨†ď€%JdůWÄ–'Á%Ś2Lţ9­ Ťä˛‹/‹ ”c"Ó'Ę\ćMšéL@3š±T$5 fÍkNešÚ 7»é‘o‚Ó"â§CĘiN† 3ťY';âÎwę#žňÄ=ë t°`źüě§?˙ Đ€ t -¨AŠĐ„*tˇ m¨C Ńô­¨E/ŠŃŚjtŁí¨G? ŇŠt¤$-©IOŠŇ”z4`éZ*ŕĄ2@pÓś N{ Ôu¨B5@ pŁH]j’Š€05ŞS=U­Š€¬jU«2ŕ*ş:Ż" ¬dëXe0Đ­2¨Á ŇęÖ·şu®3 «]u°ţÔŻ|ĺA_uŕ×Ŕ¶ÝzŔÄú ±‰ýc›X đŔ±’­,, „dvłšýÁ€Y"᳢%íh ZŃaDÂjWk×!¶°ť­mck„#ŕV·I0‚o{ű[×ÂU‚Ś‹Üă*W P śëÜ%(!şÓU‚tŻk]ćŔŕ®w»űxó.ŕĽXÜ ß÷Ę·óe}ďËŘwúm@ 8Ŕ.°\`– ئ @ě`űTÂ=€P}ŞÔŁj8ĂMMއ;ĽÔ¦"ŔŔÁKŚâ¬šXĹ[ÍjWłÖݦţuĆlĄ±ŤŃúÖë Ç{Ő^}üă˝ćUČ|Ík^ýzdĽK^¬“yđä(3v±—Ą2gŻÜYÎ@ł ĺňgAűĺ!yĚbţÄ,0 ¤yXs›Ő< d ÎqŔ40 Ü9Ď|Öłźű¬ D@„.4ˇPč HŃŠFô-GKşĽ”ď(˝^K·wÓëí4§ß»÷6 Ôů]}ŔßTŁzŐümŔŞ S+¦.…iMc:ÓśÚ§?ť0Q}á 'ő¨L…ęSť:U©.ŐŞRĹj‹˝ęb±†¬f-+Ť× ×·¶•Çuí¶]˝ €!°la?‘‚„@»Ýh÷şÝÝnv@íćý{‹`ŕ·żű p\ŕ'¸Ţ (ü ·ĂîđCśágľ€š>çŚËyăźsś=® ŕY"Ďó O.č”zІn9˘}hČÜ»2/ĄÉŢś··Ľí•o|îóúş·żůµď|tü÷ż°Fđ¬őCÂĆ©M @asxĂ\7šzÔ{©$.ű‰UŠö´«}ílo»Űß÷;euler-1.61.0/docs/images/pref3.gif0000644000175000001440000002350607414306114015465 0ustar ericusersGIF89a6xĆ 0AJuśJqśJu¤Ru¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™ÍŐÖŐ˙˙˙ĹÂĹ”•”R¬R´Z´Z…´J}¤R}¤J}¬Ruś‹‰‹R…´Z…˝Z‰˝R…˝R‰˝ZŤ˝ZŤĹR‰´Z‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍAm‹Z•Íb™ŐbťŐZ•ĹZ™ÍRŤ˝bebbe101ŢPRRŢRbebRPŢRŤ‹be‹ŤR˝ľ˝˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,6xţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•–—‹›śžˇ¦¨§Ş«Ż®±°´µ·Ľş˝ÁÂÄÇČČ2ĘË3ÍĎŇŃŃ2324Ö253×ÜÝÜá3âä;<;5ćę=ë;ěďî5ď<=>=÷?÷÷@úü÷A=řŘ` "2$ČA"AB”1DE†’1ŁŽC>z IňŁ‘#&Q&1ÂreK/ŤŔTb„¦Íš8•°ĐÉ“Ĺ%:ýITÉOA (4©¦OŁJťşéi€«J]-Ĺ5+ŞR§¸Ę‹.ZhĎŞ˝ekW.·ţlÄť{cî1ÉňB;¶¬Ů5Ú® LXđ8kăv(N·ťătç ·;ÇŽ‡—3÷Čw9_>|ú>ů|ČB…¨OźŽ°bÄ!°5ĆŢ;cmIzdb„7Ť¬.Ľx.•¬ÜŮ„gsA XĐ@ú‚éŘŻkĐűT«Q«~ęô‰(Q©ŇŻj5K–ű´lßţú X.`ŔŚéĺËĚ´ij“Ť7Ú|łÍ8’“ :’QÖ<ďČă=î€ÖĎ…űTІ¤šB =TŃDŤXâFe´‘Hş•äâI)×KÂÁTŁ‚8đ€Ž<. #>>$ŃIä‘FVţ·u 4p]“Ű5•SP}Ţ•OiĺX^…őU*c ‹ZiÁ‡Ë-ĽŔµ 0rŐ%×1uí§W_Ô6Řť…aX {v“X:€>&č9„NćŽ;B¸ŕÂf…樅ţhřŹiVšC­…X"l´ÉĆ©l*â’ ;–ÚcŹ츬®ęj«D. etÓ9™Ý­ŰmgĄxĽ~âÉ&ć‘’Ţ)Ş ňJí%{&.şĚw_}Đć‡@śsöŤVsÍ€Ű8C6 †«¨ Fv¨.á<ďXá» ¤a‡©éřć»Á¦mp‘F„*H,AÁ'¬°$ěŔĂ@±ÄţďXqÄ<ŞúcHvld’GVWťMJ·TR'+•»béŐV[ĆÜ—b@-©ł™iö,×Ďsáő&xÝU-_€i Ö¸p ÓL?íô ă¦K5ąŠ‘›.:Š:–nşŤ[™˘š‘ݨgŚ˘ťŹľů„¦±/Bs'$ŕ­wŢ|ë}p$\ŕ„n¸H0xâ¦6î@Źů«®>બK.9ťćÔĺŠ+vݱ,UŻ›äPŢ顫ž±¬ űŢëe®IK/ô=‹_1ÂěGg_L#ŕB4ă>ó; N˵ńŘ{µÓ5(ĎĽ˘TŹuŘé¤ËâëHŘöÚó°>ţ÷|/Ľ‚Xp`°ţŔ/üńO Aý÷k`úăÝŢ3ÂF@B aăŃĹ.Ö¸Tm,U°úÇJ&2 B‰d¶ZĘSDgĄďçW2 aXZ'1ŐŚ®Řٲڂ&ŚË-.Č…\ކ—ßŐp\Çř2Ş–Ă¦=Ť0U“šaľ Ć,f’©Á ĹÄ%žË‚€ú,Ŕ6|Y }Xdű. ż tŃ‹xcßƸ7ż đ` CŁĂ¦86&®aŚË!çŞÉµęޤ•¬jeťĎm't$ÝxDá+BzÉK6k{`7&ř¸`v»řÝ[YźöÂ’;T†yţ·ŚßQ [NÓ–ńŠG oĚ`âĆ4U– ßsbev Ř’¸%:Ë]rŔč@0§(Ě LŃČś˘ŤąLöy`~Đôbýşx?1ţaÄć¸F5˘b;zĹäč8Ť ÉGyś ČhuÁ ¦LJTâŕč®3Í,.č>‘eŠGšÂʬE@Ń2P.Ë’.¸…%ć7!Ă:Ěäď"Ú—U&­•x¨5,*Z~€¨b/9‚[v€¤ľ<©J9p_¶4™0˝˘2eŠĹ+rq‹Xô˘N˝¨?k’ń§z 7w°Á5̨m\âGÎ9˘ ťxŚ ćöţ9?Zu¤çx\ `ą€K×)ň©Šq­â«°@iC¶*ę>fő%ź5QßéE¤×jĆ*˙ł×k",`KŘŠ€°‡=,HűŚ€ŹŤě-‹R[–Ô˛&E©1‹yĚÎĆ™ěSź/@?ťNřłźj˙׿l µ€LăR6Îr6UHĄbŐ9Ő˛X‰ŚI¶ş u¤„Ő×Yˇ>ÁÚ:1­§,*ä™[ZŘ36=‚ř >P‚@»Ţ ďw K^¤čý¨zÓ RDö˛#8©-OZŇ•Úץ,őěL™IÓĐNŕ¦˙ÍéN˝ť†¨@}-áŠĘFţ¤.q‹k*źjGĘ )s±Ň#ç¬ęąâ‚çĂܰNÖŐ±ÇuÉj¤Zt1;_<Ëv‚8 N@ă“ 7ľ± p\‚ű¸Ç@ţńŽąk| ě`“LŘ%/™°‹]Żd§ ŮÉęňĘż4)0‡ ĚÍę7¦Í”"4KKć/˘Śü 6]{ĆŘ®b'Ćj+áŤ!!ťx.;G&”Aĺť+3î'¬‚-Ý󞼲ˇ‚¨ŕŹŽ´Ś!=iOÚ'Ŕ´¦3Mwş»źö® ¶űÝR‹÷Ôä=ěy»ŢV@˝ A{oYŇú˘”ľ)e)~_šßĎÚ”™v€ąČEťţö”o¬E°4 7fK pv¬TĄ2n©¶]•Ş háĘy{VťłUç¬Úťët§;-{ŠéžŇŐóŚâ<©Ö2AďzŰűŢřηľ÷ÍďH°ŕ߸ŔNđ‚üŕO¸ÂÎđ†;üáʏÄ'NńŠ\,hĆ7ÎńŽ{üă ąČGNň’›üä(OąĘWÎň–»üĺ0÷8 0óšŰüć8ĎąÎwÎóžŹ|ćȸχNô˘ýčH7:Đ…žô¦;ýéPŹ:Ń—.őŞ[ýęXĎúĆ©®ő®{ýë`Ź9×ĂNö˛›Ýěc?»Ú×Îö§§˝í7ŻšÜçN÷şŰťîpĎ;Ěß®÷—»ţę0č»ŕSÎ÷ŤßýđOĽÝ[ řĆËýé1€ă'?®Á_˝đŚć7ĎůÎ{ţó ˝ča úŇ›ţďNŹĽéW_úŔ[^ęwëgOűĐë€ôµź=ę[Ţűţ÷Ŕľđ‡˙{Ť«>÷´żýëaOóŹËůĐgýíŁúŤ»~č®?>őKŻüĺC=öŰ˙ç§/ţĎďţú>Ď>îË?~ô{?éŕgůÉ/˙Íźżč꯿ç»˙ţ¦Ç_˙ÔGúwD—¸yü×H÷|X¨qĹrîgrŘ€ ¨€J×|÷|ś·~Ř€ű‚/|´G‚~h}+wšG‚/µţ—8uŘq¸y˝×y;(‚ś÷€08{(Č‚ĽG˝G„Ľw„X„IH„Ú÷‚$ظ‚5Řs …<¸~ľ§%(P¨…]†?… ·…1Řf¨yH…×çznH„Jř†Lř„%…¸§… †H…U¸sW†\x‡\X‡„(2†¸‡<řyb]Čykrm¸„LČ„“Čq.gxśč…šG}ČsHz`hŹh¦Š‰ř‰v†Ť8CH‰l‡”h‰x‰tHŠŘ‰«Řy Š:7Š›xŠż×‰Şř§8‚‹čyŻČ‹jH‹w‰rh‹'‡ą8Ś©(†íŚţ6t —śŠĚhڰ‚0„ŚXŽÎř)‰µ(‡ŇŤ™(â‚Č8‚Ü8tÂč…ÇXŹÍ8Śc¸ŚŮŹťI¨„m¨·č„dČŹäŚ$ř‹ůhsű(‘:(…őX‡Ú艊hŹĚ¨‘°‚ŮsóŮřR¸‡i…7Čqŕč㨌X’<—‰úG‘-ąw/ix2zAř(6ąs8Y:ą“.÷‡?yŹľ”âW”:w”ň—”JÉrLŮ”¶•á'•9G•ěg•W©rY©•í×€çG|ją–Äg|\)~b9–(W–fů”h yo~q)—&G—uů‘¸{IG‡9Éţ‡|I–=©q”·ŚŮ'uŽ™’9™”Y™UC…±wšy•™Ś×1š˘9š¤Yš¦yš¨™šŞąš¬Ůš®ů𰛞9›´Y›¶‰š.y —™1`™ľů›ŔśÂ9śÄ ś˝©›Ç›‚ą™ĚŮÇŮ™Ţč| ąśÍYť–÷ś»é™×›ÖŮťŻ‡ťÉ©ťÓi”ŐHv†yrÓsç‰}’¸žĐtŕ)sâÉťSYžaçž$—ž7‡ź7Ť)§źEź§śýY‹‰„lş„ ZŤ*‡ Z‰oˇľW„ Zˇíů —¸ šţůŽÚˇÚˇÖw„wˇjsĘqţJžďřž+ʞ ÔHŁöi‰ę†đ„î(‹ň‡=šŁCJŁ+:Ť<ęqIJŤ•s-şuóIťű٤8:Ł"‡¤Š ŞĄޤ1ÚĄ^J¤@:¦M*¦eZĄŠŁ?Ц:÷¤÷˘ĘĄúه>Ú I˘YŠĄö)ŤŁrúĄş§'z˘zşĄdjŁ| |;ç¦-§0¨Z¦`:§a:˘„ ¦kúž’¦7Ę©j©;z§‰:©‹:tŽ ©őI§đhĄĄŞ©›Z©iş¤*«¦*ŁŻŞ¦5:¦Fꪺš«¤Zs©Ąé§¤*J©yz‹) «xš¬j¬¶x¤Ë ˘|X˘şţsş˘M¸Ę*˘{ĘĐşˇÖꤹ ťL‡ăéťťŞ®d7¬ŃŮéĘ®€*Ż]ç®ç “ńJŻ“ŞŻVgŻßŻü°őZ®Ůů®čJź›°YçŻŇ‰° ű°Rǰđę°YW«,'|ČŞrüY Łú•čŮŻž‹Ż‹u‹r*s'k’ˇşŞ%·˛Ť˛ň9˛†°ű9­8Ë:+®Çšźî¨˘ŐşłÝĘ Š­™j˘Ł ´F8´Ö*®˘DËs{°RŞ˛Ďj§»ŞŁĽ¤#7¨LęŞZűµW›µ–Ş©8ŞCЬi«źN‹µ~şŻ07µ$[µ0÷«bk«ëł’޶žZ«lZ¶źţ¸¬úĄóú«EŠ«Ěʢ2; Äę˛é9kŞî™˛5:®-K­§ZąGşµL*§栆е±ş¨¬1'·5[˛5Ǧwk¤¨·‚Úµ}»ŔzĄz¸fŠźűłH މ+¬‹ë˘Ťë±Mh¶c‹·\k»{ ¶™ŰşÇ›±NŰąÇ ¸k{«„ŰĽ0[r¨«6ks(j ş¬ŕúµ=›±TŠ Úz­č+ľč+ˇé˝I µŃ(żĘĄî˝9·˝ź©şęů˛r™˝ «żŰI·/¸žšŹ ±"'ŔÝ»şé;ŻÜhą Lr Ěż|Á>WÁŚÁL®Č9ł÷šşÜÁ$·Á Ą4Ë˝ţÜu6 ·-łl„J§ęŞÁj·ž1ěź+›ĂŚżějĂŽk¨ö;´äk·%š˘ŐzľBűŞuĘ‚îç·.Üś@LĽÎ{ąŹĚűĽ;˝¸K©o Á°SÜżµëĹ—Š¶ëz·fj«‚k±Šz©\ťc<ĄĆ›¸PěĹłČÄĘ:ľ™űĆdJĂśKŻs<ĄđKŞwŚ©YlÇ}Џ“Č`‹¸ň:ČŢ[ÇKşĹŐ+˝lś·aK«1ęČi «<Š’<ÉDĽ­ó[Ą|l¬>ĽĄÚČŮ*æ{”ëÄ5|Âo:Ľ.»|š|Ŕ%ĽrŁlµý·Ë€ÜË*÷ˬÂĹÄLÁ¶ü¨¸ĽĚĐÜrĆÍţÔńMµ˝}vß]Üź>·ţ.ËýťâűMÚRĐâ.ţâ0ă2>ă4^ă1~ÝaWáI‡z*Ţă+NŘ6äB>ä6Žă`§ăHÇă>ľäů äDţäPäFţuH®ÚŻŤâLžĺĹçäQŢĺ^ŢâSŢ‚¸íË%.Â79ć,§äZľćĘĺ_ţćDć˙iĺĹ\ćM]¬>§ćlľć,ç~.ärľÓMć¶˝ÎGÍszľçYŢçŢč3č_ťŮ‹]čŤ}č;—芾äŚîčśî⎞ Ľ”ÎŮ LĘ=‡é™Ţă›ŢéśţésłŁľŰťÍ˛yž§©®énÎęŽîę‚ަvÎŰ´~ę¶~몞ëşţçĽ.»^ç±®Ýéţ>ěÄžâ«~ě~žě]‹ć)WĺF‡ęÓţăůlí­Ţ ţëł®wŢţí÷]íâţĺŘîÝć^ęg—îę^ßěŢî]ţîPÇíE÷ě™á"~ĐćęěŢŢ_šë}đ š#~tü^€őľčˇń>.đ+ëň®ŕŮüđ˙ĂńľÝOÍňÝ9ň§áwá(ow ot&í~Î1˙ßďďÇ âß®- 5âPđó@ôB?ôD_ôFôBOÚS°ôLßôN˙ôPőR?őOŻď×ó}‡zHżő\ßőGŻôTöb?öSoőđÝěäíó^żölŹô`Oöp÷ToöŽőF©í)§ţőmż÷|˙óo/÷€řS@÷wꚍöňíŮÂŢ}ßřl˙÷‚ůcOřMKçÚk÷Á®szďřśďö„-ů ?ůä~ĚC|ş©—®qťżúFůˇ˙úNOřŕkůĚŚřžů©Ďř¬żűAďú°˙ű˛ľË~ů¶oâqşřĽźüPŕűż˙úÁ?Ëź]ĺ;Ď˝şŻü¬ĎüÍúϿŊ[üfŽúČoý×˙ůŮźýŰ_úI=đi÷†ßÓŞ/ţ«Źýĺ/řç/Ĭţ‰źőď˙ś/˙óř€ĐÓRhx¨¸ČŘč¨ă2¸ČŔ˛č"¨ůŘéů Ú EZjzŠšŞşĘz*HhČ95ţK[k{‹›«»{űú 9©Xy™ą¬ĽĚ8Úú ˝ę[Č{ŤťÍKÍÜÝ= ›hŚ©¨鍮̙ΞH\¸Ţ._ř>o)Ž8Ž|~˙Č\Ś <0ˇÂ…ő d1˘DúţGÉąDćâY´#¤Č‘$Kš<‰2ĄĘC*[ş| 3äG‹‹iěçq¦Îť<{úĽ/ă±rÉ~=Š4©RzAmĺXt©Ô©T««)î&QV»zýZë>­Pą‚mä"­ÚµlŰş} 7n\‡rëÚ˝‹·âŮEbńŰšs/˘Ŕ^ 6¤÷𡾆ţ–%¬rXÇë)FĸăÁQ/ţ,%´čѤK›>Ť:5in˘ Qy ;¶ěŮ´kŰľ=›µgC™[lţlvw몋?žš5'ÜĚ›;Ç­[xďßŐ‚ďć„<»öâĘ]?˙žyôÝÓÉr¶ÎN$@ěŰۻݽEřůôcŹO§7ń·¦Yźž—ĚL8úˇĂŢ{"_} †w_7ę!&“<ĺů€č čMn\=Ë-bs z“ß<nô@ŢŁ!‡.®ćˇw!ÎXŰ&‚ˇ2'âôQŽĚ´řb ŇH¤l6ىüŤEau’řAş8d‘VąL‰.é—yŢ#`” MIf•V‰Ą2Z¶ł#``"&&qdţNić™3¦Ěšě´ůŘ?˛8ćś/Öi'xŁg:|¦(\5r JeŚňJăˇ^-úeŁđ 醄RZźĄ]aꤦ›>Úéź‚:ź¨V‘ş)z—=ą”¤‚Y&—ŤyYŞ©Ml°'l±Ćäă^°¶&«b1= -L,EKmµ%™Ę®šń+­Ř~ ®RËvnąć†Ąë¶Mv{n»î5ngďÎKŻ=ń6{^úî»/]üţ °[ÉžuŻ·^śe‡ VÁŘ"|”­Ę2ü•ĂľREĆoĚqÇ rČÇwEÉ&źŚrĘ*ŻĚrË)»Š®¶ľqË,ÄUq"rÎ:ď2Éţ.˙ tĐ-ĂL•ĹšâĚsŇJ‹ěłĐN?í2ŃSýfśK_ŤµĆMCÍu×WHýHE*šîĚëÖ¬"ĹŔ ťuŰĐ»îűŮŔű);ńÓO^˝ő]cź$„c{ă|dłŹxůćCŤţOíçű>üÔW>áőűt?ÁHOK“_˙„öţżžp/6łźÂ&ö­žĺWÇŞ ° cÁ k{I‘ X¬ÂjM+„$ŚI»‡˘LŐk…,d yÔÂĘ0śˇ [XĂęp^9ěJŔ~řCqúâ Rzh•ţä{1bÄ^見݊‰ s"Ľ Ř')Za‹\좿Ć0ŠqŚ^ŚÎĆ4ŞqŤllŁ߸Ćň‰7+ďÇ<ŽŃŚpěŁ˙řF9TᄉČ;ňŚl$©Bv‚$qJ¤%/ÉĹE:r“śÄ‚ Ŷ"˛ÉLohÉL ‰ÉTR“ťlĺh78ám”ż“×ç>‚JUę’Ś¬tĄ/ÝřÉţĺÍR?¤ü^ăÖ'Ź\îr™_ěĺ/ź™Ć`˛ÎŠ› Ą÷lĽJ2s›]t&4ˇ)Íô‰’µÄ~´ÉMnzó›ż 'ď†)”ö*›±^:ÓąNvşŇťwgĘIw T˘.´ćCKy4;Vt™Ũ#!9IJ…˘#ĹdIMĘH”~DĄKaiK-ůRľRu•Á"ŁB:E‚[4U 5Ô†+©LU*Q}ŞÂF•pŞ.!UŻj’z ;ěę ‹ęŐ°^¬b-+Á :OłŞő\d= ßz!Âu®Ó*9ŻiNţ:K¨‚¨Ń ŃF)QT¬_çX ¶Yh¬c ŮČJv˛”­,d㣅Ějvłśí¬g? ÚĐvV¦4I¬1…Ă ËŞvµ¬­,fE ŰŘĘ6´¤H[Ť’ÚÖęv·–}íl \ŃÖ([ŤbD{*Ţ*wąŽőmpź ]-h´žđt(WźÇЉ2–ąÜŐ­sŁ ^ŮÂ’ŁÝOqłĐđuw˝«ýnxß ZŤ:nKçýiă6Ş^öęw˛î…Ż7+_Ň÷®=mz`ÜÜîwÁÍ•ÔzŇcM4Ą/­Fď„®śn‹\;ÍéC—6ŇŠus_ůÚD»ţÓ¸‹Ťóźç(jŰZ¨zfj|¶€ë\ëz׼ l^«yŔ«Fo«kťÔ[{ŮĚn6°‡Í¦YŮT¶łŻŤí`C;ĆL"ń•ó4’8Q»Ú’ʶąĎ­k~†›ţŰ]Âë«')îq[ĐÚč®·łÇ«˝*“ÚŔ÷Ť·ĽŹEo{ üŮÎóŔLŕ÷{x˙®`Ŕń]«»ĽĚĐ4uŢpc=<âﱏ͛pV§ĹôČx±6Îq{ÜŠ˙x2Knň`ˇ<ĺ_čĹ;rc/Üß1źČĚi^o›»|?4'z.ór=ĺňĄ8ŃĄíf¤ëçK7÷¶EÜm…Ď ćR‡Ő«Ží«˙ę×áz×ňu°ß»ŕgÝ7“ńçęLÇš¸9·ďĎ~ÁĄâ="s×wÝĹĽC ÚŞ‚§ŞŞ­+rL+~Td_ĽăĄrŻ˝K~ň”Ż|S— ęĚk~óśďĽç?ź–}[~ôţ¤/˝éňwő~ő¬o˝ë_ű—3§Ż˝íoöŮôĽď˝ď|ÍëţńÄÇ)‹ŹüË?ůĚ?Ëň›}«+ľ=Kľ?ëłA‹ľC+´Bë훩íë©Oű©śJż¨ Ş¨ÚŞ¬Şżů «©Š«´«şĘ«,şŞ«k;¬n ̬ Ľ¬Ë:źńYĎš¬×j­l€ Ş­€k ß ÂâZž#LÂ%lÂ'ŚÂ)¬Â+Ěť;euler-1.61.0/docs/images/pref4.gif0000644000175000001440000001704707414306114015471 0ustar ericusersGIF89a6xĆ 0AJuśJqśJu¤Ru¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™ÍŐÖŐ˙˙˙ĹÂĹ”•”R¬R´Z´Z…´J}¤R}¤J}¬Ruś‹‰‹R…´Z…˝Z‰˝R…˝R‰˝ZŤ˝ZŤĹR‰´Z‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍAm‹Z•Íb™ŐbťŐZ•ĹZ™ÍRŤ˝˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,6xţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•–—‹›śžˇ¦¨§Ş«Ż®±°´µ·Ľş˝ÁÂÄÇČČ2ĘË3ÍĎŇŃŃ2324Ö253×ÜÝÜá3âä;<;5ćę=ë;ěďî5ď<=>=÷?÷÷@úü÷A=řŘ` "2$ČA"AB”1DE†’1ŁŽC>z IňŁ‘#&Q&1ÂreK/ŤŔTb„¦Íš8•°ĐÉ“Ĺ%:ýITÉOA (4©¦OŁJťşéi€«J]-Ĺ5+ŞR§¸Ę‹.ZhĎŞ˝ekW.·ţlÄť{cî1ÉňB;¶¬Ů5Ú® LXđ8kăv(N·ťătç ·;ÇŽ‡—3÷Čw9_>|ú>ů|ČB…¨OźŽ°bÄ!°5ĆŢ;cmIzdb„7Ť¬.Ľx.•¬ÜŮ„gsA XĐ@ú‚éŘŻkĐűT«Q«~ęô‰(Q©ŇŻj5K–ű´lßţú X.`ŔŚéĺËĚ´ij“Ť7Ú|łÍ8’“ :’QÖ<ďČă=î€ÖĎ…űTІ¤šB =TŃDŤXâFe´‘Hş•äâI)×KÂÁTŁ‚8đ€Ž<. #>>$ŃIä‘FVţ·u 4p]“Ű5•SP}Ţ•OiĺX^…őU*c ‹ZiÁ‡Ë-ĽŔµ 0rŐ%×1uí§W_Ô6Řť…aX {v“X:€>&č9„NćŽ;B¸ŕÂf…樅ţhřŹiVšC­…X"l´ÉĆ©l*â’ ;–ÚcŹ츬®ęj«D. etÓ9™Ý­ŰmgĄxĽ~âÉ&ć‘’Ţ)Ş ňJí%{&.şĚw_}Đć‡@śsöŤVsÍ€Ű8C6 †«¨ Fv¨.á<ďXá» ¤a‡©éřć»Á¦mp‘F„*H,AÁ'¬°$ěŔĂ@±ÄţďXqÄ<ŞúcHvld’GVWťMJ·TR'+•»béŐV[ĆÜ—b@-©ł™iö,×Ďsáő&xÝU-_€i Ö¸p ÓL?íô ă¦K5ąŠ‘›.:Š:–nşŤ[™˘š‘ݨgŚ˘ťŹľů„¦±/Bs'$ŕ­wŢ|ë}p$\ŕ„n¸H0xâ¦6î@Źů«®>બK.9ťćÔĺŠ+vݱ,UŻ›äPŢ顫ž±¬ űŢëe®IK/ô=‹_1ÂěGg_L#ŕB4ă>ó; N˵ńŘ{µÓ5(ĎĽ˘TŹuŘé¤ËâëHŘöÚó°>ţ÷|/Ľ‚Xp`°ţŔ/üńO Aý÷k`úăÝŢ3ÂF@B aăŃĹ.Ö¸Tm,U°úÇJ&2 B‰d¶ZĘSDgĄďçW2 aXZ'1ŐŚ®Řٲڂ&ŚË-.Č…\ކ—ßŐp\Çř2Ş–Ă¦=Ť0U“šaľ Ć,f’©Á ĹÄ%žË‚€ú,Ŕ6|Y }Xdű. ż tŃ‹xcßƸ7ż đ` CŁĂ¦86&®aŚË!çŞÉµęޤ•¬jeťĎm't$ÝxDá+BzÉK6k{`7&ř¸`v»řÝ[YźöÂ’;T†yţ·ŚßQ [NÓ–ńŠG oĚ`âĆ4U– ßsbev Ř’¸%:Ë]rŔč@0§(Ě LŃČś˘ŤąLöy`~Đôbýşx?1ţaÄć¸F5˘b;zĹäč8Ť ÉGyś ČhuÁ ¦LJTâŕč®3Í,.č>‘eŠGšÂʬE@Ń2P.Ë’.¸…%ć7!Ă:Ěäď"Ú—U&­•x¨5,*Z~€¨b/9‚[v€¤ľ<©J9p_¶4™0˝˘2eŠĹ+rq‹Xô˘N˝¨?k’ń§z 7w°Á5̨m\âGÎ9˘ ťxŚ ćöţ9?Zu¤çx\ `ą€K×)ň©Šq­â«°@iC¶*ę>fő%ź5QßéE¤×jĆ*˙ł×k",`KŘŠ€°‡=,HűŚ€ŹŤě-‹R[–Ô˛&E©1‹yĚÎĆ™ěSź/@?ťNřłźj˙׿l µ€LăR6Îr6UHĄbŐ9Ő˛X‰ŚI¶ş u¤„Ő×Yˇ>ÁÚ:1­§,*ä™[ZŘ36=‚ř >P‚@»Ţ ďw K^¤čý¨zÓ RDö˛#8©-OZŇ•Úץ,őěL™IÓĐNŕ¦˙ÍéN˝ť†¨@}-áŠĘFţ¤.q‹k*źjGĘ )s±Ň#ç¬ęąâ‚çĂܰNÖŐ±ÇuÉj¤Zt1;_<Ëv‚8 N@ă“ 7ľ± p\‚ű¸Ç@ţńŽąk| ě`“LŘ%/™°‹]Żd§ ŮÉęňĘż4)0‡ ĚÍę7¦Í”"4KKć/˘Śü 6]{ĆŘ®b'Ćj+áŤ!!ťx.;G&”Aĺť+3î'¬‚-Ý󞼲ˇ‚¨ŕŹŽ´Ś!=iOÚ'Ŕ´¦3Mwş»źö® ¶űÝR‹÷Ôä=ěy»ŢV@˝ A{oYŇú˘”ľ)e)~_šßĎÚ”™v€ąČEťţö”o¬E°4 7fK pv¬TĄ2n©¶]•Ş háĘy{VťłUç¬Úťët§;-{ŠéžŇŐóŚâ<©Ö2AďzŰűŢřηľ÷ÍďH°ŕ߸ŔNđ‚üŕO¸ÂÎđ†;üáʏÄ'NńŠ\,hĆ7ÎńŽ{üă ąČGNň’›üä(OąĘWÎň–»üĺ0÷8 0óšŰüć8ĎąÎwÎóžŹ|ćȸχNô˘ýčH7:Đ…žô¦;ýéPŹ:Ń—.őŞ[ýęXĎúĆ©®ő®{ýë`Ź9×ĂNö˛›Ýěc?»Ú×Îö§§˝íp÷xŐćN÷şŰ˝îqďúŰówţ|ÇúŢ7~÷ÂţđoâŹwĆ;~ńCŹŕoőÁ+ţĎĽć7ĎůÎ{ţó ‡čGOúľô¨Oý üîsÉSľň4˙¸ TOűÚg^§·=éqŻűŢgžő-€đ‡Oüâ˙řĂ׸ë_/uËĎŢ÷Đ÷<ďŁ/ýÜS_őŔźĽÍ'ż|ćCÝů×˙ ¦/ţŰ[żüŁĎ>ÎąŻ}ď;üč‡>ůŃ?˙ř^ý7gżűż{ąŰß÷ő'~ř›‡ۧ|í·HX{x}Ř€«·q“—€W'§ Řt yç‡yřőg|Şw~H|ˇç{ř'|Ç‚)§¸€ýţ×qϧy·y7(7‚˝g‚h}!‚*H€.¨}.X„H€1t‚ç—¦'…˘wz@H…¦—…B¨y<ŘyĂçS…Ö×…^…b†Vř+|Dlř†Kř†ÝׄE÷„Y{U¸…Zx|¨‡i臛G†6†a¸‡…ž‡‡[¨…h…H„l¸„nh„t8u3Čq5†ś¨…†ř‰ŚČž¸Q‚€č‰ŽČ…č…„Šź8Šš·†‘x´X„Čq–x‰>g‡ŽŠĹ·ŔŚŻh~8ČŠÂ芤XŚĆŠ­hj‰8‰-X‹¸Č„ş‰Ar›ŚţľČyÝŠzx‡ś'„řŠČ8~«čŤÍް‹˛ř†pX‹nŹ-0‡×ČsĽXŽ®řŤűŽyxĘý‹„§8ˇřňx‹ó„Á—„ąxŹ:—ʧ8… ‰ŠfXŽŞ8‘HŚŢř…č‘Y±x‹5‘‰sv¨ ’ń h€)iŤ+ąs-é’A(“ň„H“1§’7Ys9)>É“č“3‰’Ai“CÉ’™Hx.©zHŮ{U@ sBů”/W”S9ŽJŮ“_y’J|fy–[É•-ç•c “ô–˙|÷­Ď:¸i:ŞžšŞ;«˘Ę«ű¨Ű«Uj·sÚąnú¤‡ëŞŠ;±ŚË´–şK ¨<ű¸¬Kµ›­‚űˇ¬ęąľJ¸%J»[¨¶ktJ{ş<·z[®”¨ąŃą—›ĽâÚ†’ĘĽr;ąž«·ŤĘ¨t;˝Fú«Łk§Ąű±ŔKł©ű¸Ň+ą} şŤşŞ˘+ĽT«µşąI ą×[˝đ+ş‹¸ş˝%;łG{¨R ˝^‹¶ŘË‚‘ężŕZ‰e rMkµ]ˬ_»ż^ëľV+¸)ŠŁĎK­ň›sż‹ż-›ÁwÁÜÁ%ÇÁ Â"\ÂřJżЬ‹ţ›ŻŮÂ.üÂ0Ă2<Ă4,Ă(Lś’‡–:ĽĂ<ÜĂ>üĂ@ÄB<ÄD\ÄF|Äf›7|§’śNüÄPĹR<Ĺs§xÜÄTśĹZĽĹ\ÜĹUcĹKlżó‰Ĺ^\Ćf|Ćhl`Lş*lşušĆpÇrÇk¬˝mĚ˝oLw0 ({ě}ÜÇsČ‚<Čj¬Äl,ŻÉYw€ĚÇŚLČŽüČLwuś®büťděÇ{üÇŤ ČĂÉžüÉi<É[ɉĽÉšěÇ›<.‹ ʬÜĘQ,Ę0{Ç÷KĆśśĘ¨|˸ěĘşĽËĽ Ë?KĘyŚË§<ĚŞĚËĆ|ĚŤéËm Ě´\Ě·LĚŤŚĚŇ<ÍţŚ§Ě‰+Ëc\Ël˧śËÔüÍŕüņlÇĚŰ Íś,|áĽÎělÍő‹Í–ĽĘě<Ďô|xîśÂĺ|ÉőĽĎü,ÎW,ĎýĐó|Ď8 Đ}ĐßLĐLlĐÝĐǬĐ̬¶& ±ăLÉđ,śťŃá|ÁÝŃÓ =Ń% Ňa|ŃŠ"Ň!,y!ŤŇ¬Ň%]ÎĚŇë҇¬Ż'-ÓLÓälÓ1ťż~Şrť¨AťsjŰ Űş¨C=ÔH§Ó ÓE+´8+ˇWWÔjšĹZźeÇÔŁlŇ=MÔ“ ¶ĚZŔ*ĘĽOK»|úŔU۬`=®-JŔ l¶aŤ?Ę×ęşŮş°$]Ó{ÓH‡ţľÖ+ľëŰľ™ ¬|·ä» ·ďk·ś«şě‹˝s™×;˝×]˝~úŰĽŞËżŕkŘ™}»ý˝Ô˝‹ýą l˝ś˝Ô’ÝÔ<ýÔŘ ‘ŻkĽď«¨l·˛MÚŽ«ľË릵˝Ű×{Ła żú«Ô)›Ú[íÔIç×H]Ş˝›ŘˇŤŞĘ ŐoŞŮÉ=Ú­ µÔ]ŐľKܱlÜ} Ú¦}»ŐűÝé»Ü¸ëÝ ę·Ś]»´šąŠMÚ­§ÝżĚŐ¬Ť­ ěżs¶hÝÖ µ`{×nŤŔ \­ôµĺ{ĽĐ:ÁîßG§ŐŰ˝Úî'Ü8í—đ˝Ěňýŕžu ßÜÍ|~á8—áľáα ~Í"ţ>â3=á&ľÚ5Üâ.ţâ0ă2ţÂ*ţÎĺŚÄ8žă:ľă<Ţă>ţă:LÂ(.˛B>ä$ţŇ6mä'[äJ^±LŢäűäPž°R>ĺ[ĺV~ŻXžĺďşĺ\Ţž^ţĺçćbžd^ćđŠä{Ťć{ćlŢśnţćÇçrN™t^ç€yçxŢŞ“-ł{îžzţçC肾’„^č÷xč~Ąjî狞ťŠţčMé’ŽśŤľÂ•>ť”žéî·éśÎ|žţé”ꢮť—îĆĄnś¤žęp·ę¬Îv®ţęj벞ž§ŽÇµÎ窽ćąţ”´Ţë`÷ëŔž´·~żĂn¬Ĺľ˛Ç.‘ÂľěX×ěţÎnuĐíR7íÔuÖ~íN—íÚľ°Éľ´ÝęßŢ˝áxÜ^î;îěľçţî=ďňž˝»îčő>ęîžďú®×řÎďyGďos?đ1Wđ˙rźđ.ëďÎđm·đŻr?ń(Wńorźń$·ń/r˙ń#Ľď"v!_ňwň(ÂŹę+˙ž$˙ňZ§ň/Oó+oó(Źó%Żó"Ďóďóô/ôOôoôŹô Żô Ďôďôő/őüNőůnőőŽőň®őďÎőěîőčöĺ.öáNöÝnöÚŽö×®öÔÎöŃîöÎ÷Ë.÷ÇN÷Ăn÷ŔŽţ÷˝®÷ąÎ÷µî÷˛řŻ.ř¬Nř©nřĄŽř˘®řźÎřśîř™ů•.ů’NůŹnů‹Žů®ů…Îů‚îůú{.úxNúunúrŽúo®úlÎúhîúeűb.ű_Nű\nűYŽűV®űSÎűPîűMüJ.üFNüCnü(Žü#®üÎüîüý8-ý2Mý,mý(Ťý"­ýÍý&ěý%ü»3>ţä_ţćţ1üí˝ţÔÜňµ‰ţđ˙ň?˙ńßçż äřź˙úż˙üß˙B|ď€Đ"ŘShx¨¸ČŘčř)9IYiy‰™©9ŘŮÂŔâ9čbzŠšŞşĘÚęú +;ţK[k{‹›«»+K**ę+zŚ—V­0MÝ 6WמÄš˝5ö*ÉhU#¦őőőâ۶¤čşŤ†ŐÝ…SIĹťřwŘ^†}™ĺ-6ř`áN#6ö•Xábe‡ËZś,čqCÍž"ţ+~۬˛ŕË =qć;1FĚČD óÜLe§·Ąź±>­¬¶1ÝBS[v&{oa¬Źą†,|ö ´Ă™Ýöý¬ks_ӓ᛺rmŐwvĽ.wRcËk{Ţ)ű0éĘQ.oá^yůή·Pżťz|řđiďďĎÜ2Ĺ^găybŢwÖ g_1Ę7_|ľ×[zŞ1ŁŰŇǡ†*čKfSZy˙QYŔQČ_‡ÎעsĐ˝Űn¶Xâ‹âµ4ř“#Žç18#†ÁĹă„1Ę8âh®—ŇŤ0.jÔă3?Ú ”Ůä“Űyč"} z&rb’§c™ů±Ě•Äţ¨"6´Áyć0)b]—ýu¨$yfV¤x5¶)¤›IŢç ĐɧpQÂą$4{Ţ×çšů ŁLÖ©fl“BČ^§ŁH©1r‚—Ą3[ęs髲IŚŁ„jŕE« )¦€ ę4A cë­iJŹüř¬ž¸F3,­–>,D»†Řj3˛âkł‘:é­3˝n{O·ż›k¸ˇeËLM ˝K °|ÂK/$ÔÎ[oľŤŰëLţţ pŔ^ůpÁŚîl/ĚđLĘŽcŐ§LE MŻI]Ëą[lĆ ilÇAy¬ČQ‰ěS g­Ě Ĺj-ërĚ2ĹîĚ6ßÜZÍ8ďĚs'ţ(÷ ´H?M´ECŤtCG'Í4B:7 uNKGMu>SWŤµňw“ô݆÷»ĺ!o“štžň>éIć96@HiĘTjäžöĽ§=ńO}´l_-o™>řérşäßö÷Kţ`ňOĂěźţô÷?dćO=`&źŮhJł Ä`5;Mv a7ABpaśäg(&` `@ť¸;ݹΠL ň”'&  Hźúěç>˙éO H (¨A ęV@ ]hBŔP @t˘f¬¨PQ6^ÔŤeŁG; ÇĽ±"Őăę(€>Ş4Ą,ícXšČŘ r‘±{]ěl';Úéîvą%‹TLrRyČk^ô ÷<ęMŹy×›^ö\ů˝WŽO|á;źůjÉľřÁĎ}˝´źWď÷UÓŕ Š| ký€[ŮúV·¶ő"p+8@רŕU#ŕ@_˙ę×Ŕr@°-la-PŘX`±X¬ ŮÇJ6˛ŤEçÖůXzjvžśÝ,=ĺůY d ź­> ŠÚ޶ =¨kŠP„:`¶_ś-+ZF1ęÖŤftăĺÜßÚńŤ~Ôă)Hä €Śi"i€čJ2ş‘ŚdînW€J>˛“śě®ŕ<äҨĚ+ĄyQąşôŞw˝ěmŻ{ß ßřŠ.;euler-1.61.0/docs/images/de.gif0000644000175000001440000000035107521265054015035 0ustar ericusersGIF89a@ ÂfffUĚ3˙™˙Ěffffff!ţCreated with The GIMP,@ ťşÜţ0JŞ˝8ëÍ»V^(Ž!Hž¨h¦lk­n|ÂríŃvžázđľśB@,ŹČ¤rÉL*ШtJ­ZŻŘę3ËízłŰŻxĚ “Ďh¨9Íţ®Űpě;NźÎëř;ž®ßĂ‚„…†‡‰† ŤŽŹ‘’“”•’Ś–™š›–śź ™žˇ¤ĄŤŁ¦©ś¨Ş­•¬®±°˛µ´µ±ş»Ľ˝ ;euler-1.61.0/docs/images/shot1.gif0000644000175000001440000004437707430536546015531 0ustar ericusersGIF89aRŮç 0JJuśJqśJu¤Ru¤Ry¤Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaAa‹Je‹Ji‹9]{A]9]9aŐÚŐ9Y{9YsAY{A]{9Us1Us9U{9Pj1Pj9Ps1Lj9Lj1Lbb™Í˙˙˙ŐÖŐ”•”¬®ś”•ŢŢĹŢŢÍ $ ¤Ą”ŐÖĹŢÚĹćâÍŐÖ˝´˛śś‘{{}{bebććÍîęŐ141˙˙öćć潺¤ŐŇ˝îîŐîîî9<1ÍδöňŢîîć9<9‹ŤRPR”‘ööŢöňŐ˝ľ¬{ysś™‹sJy¤Ry¬R}¬9a{1Ujsť¬JYZ˝ŇŐ¬ÂĹćîîîňöćę¬´¶¤Ş´¬ĆÍöú˙‹®´9LRîęćsqs´˛¬”˛˝ÍŢŢŢŢŢA@9{‰‹îîöbaRöööby{Rms¤ľĹA]bJUZRq{¤ˇ”¤Ş¬îęîbabĹĘÍöňöćâ欲´Jab1DJs‘”˝ÂĹRijÍÚŢŢÚŢ‹‘”śť‹R¬R´J}¤R}¤ÍνÍĘ˝Őν{}s),)ZYR¤ťś¬Ş¤JLJsqjJLAÍĆ˝ÍĆ´ĹĆ´Ĺ´ž¬Ĺ¬Z´Z…´J}¬RuśR…´Z…˝Z‰˝R…˝R‰˝ZŤ˝ZŤĹR‰´Z‘Ĺb‘Ĺb‘ÍAm‹b•ÍZ‘ÍZ•Íb™ŐbťŐZ•ĹRŤ˝Z™Í˝ş¬b9DJ{Ą¬ŐÚŢ´¶´bqs¤˛´JHJ‹™śĹş¬˝¶¤´˛¤‹‰‹ĹÂĹe˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,RŮţH° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠ €¤IJ  ’eJ—+Q® 0 š6sŢĽY g<řIt@ŃŁF“"= Ą@S(QžFu5ިP¤°ş5k«ZÁ~ő 6JXł_Íš•¶­Ű·…ÚĆe;WJܸ†ěJÉ‹wŻßĽ€˙ţ-dp!M†Ţdx“ˇĹŹ 9ÖdȱĺĘ/kÎśŮÓ&Ďž>ýY´hPˇ=ˇ>ťµkŐ°_»ţ4»v(P¸EáĄ{·ďQ»ă 8pRĹA!?®Ľ9ňçÎťŹ"5˝:őëÓIQ7Ą}wí§´ţ“ ĎťüxRĺŃźĎ~=)T¦N™‚/ľýů¦Táןţ˙ú €«X`~&¨ + 6¨Š˛bÂR8á­¨2a†Ş’ᇆâ&´Râ‰&¦ŘЉ®¬hB‹+ÂŘJ‹4ÎhcŤ- d€°cŹ?ú(¤CIä‘H&™$ID2©R“DY“”QâTÓ•VfySM[ćÄ%N= `Mc ÔSNĄ‰ćšj¶)Ő›TaUUVX]eUť‡H‘çžzJHźlĺh[śúÖˇr%JW[|Va…E 餒VJ)¤‘=ƦŹafhž€*ęg¤‚Vj©¤ĄVZj¦ÁĆÚ«ţŞ•Ь´Îj«¬şáj«nĽň¶[oľć6\oŁ»rĹQ7ŠuĚbçlłĐ:Űťv¦d÷ťzÔš˘í¶ÜĆ·­|Ú‚‹ź¶đ‘‹ß}÷ů§î~ů˝˘Š»đ6č.ó6Čŕ˝öć‹ďľ šŔ †˙¶p,&”KŠÜŠ@$  ?¬€Ă(€ŔĂ_¬qĆo|±ąŁ’KéäÉ*ťtRJ$±Ô˛L0ąäĄN4ď4”OBýÔRJőĚ3Qlb§SvŇÉWb%MYiťĺôźF]×Ô‰öeµ_}¦ő^‰u]b’5™cmf6gg[fŞŞlŻćę۲Ĺ&·k›Ô¦mw«7ţ°ľ%7\p€3'xtĐ.Ýł{×ÝwŠSgŢăęAž^{”ăWź·ôťű_ěr.ŕçŞr č’Ž/…Fxa…ýZ¨Š@ 0űě˛×>;±7€;şçŢđď /|đÄ?üÄ#_qOl±Ě_˝Ä;V/¤őÖ‹|äČ$w_r“&9%NTRůĺů3w©~Íe¶ß“™:íćüň m˙śsmçXQ|•çź˙ëŰ"(?Eí€pIÔ ô–FćQ‘:Á .e© Zęk^3„bN°‰pę•Y[©N°6žę©JáhXŐšÖ n±˛Ő vECYáƆ'–Ő·ľ‡8ţ¤au–ÄıY'H\Żk‰'<ŕů–µ%ÁpIńrXÔşö#Űy‘v· Łěv·ôÎŚ¸CŁîÖ¨Ć6˛±x ^!±8>¬Žë=¶GŚŚ{ÜóĘŔ>•ĄL&/{ŮK`†“őŮŚ'>ÁŮΆâłJţěLô›Šýô×­ miaĺWFé´Ż°jm‘ e—2P/wĄČ—˝LĐÁ%`&6°1ć–b bŇĆÁĚó2ÔŚŮ–*·‘Vq#aÜčV›â ´ŮaýĆMâ19Ŕůćr§ś$.ZĚ:Au޵ťî@q’;w’î`ŕžřţÄŔxĽu `™0Đ‚>ŕ EčAĘІ.`ˇ=hDđĐXô˘ Ŕ¨F3*;Ž.ŔŁ ť]Hm·»Ţń®¤Ć+žJSšRä1ŹxÎsŘKˇ—Ç™‰GBş©NŹÔ#íyď§„|Ň“ŞT>ňe KH=Ş– &2…iLbr ęG?5ť`MWŤÂ śrU®žŔ*_]`ťľj´<-Og=YĄP¨UÎň­…še[Ů:Ëĵ®d‹[ßÚŔ F‚5„ #Á 6‚$,a+XOžđŕ§ ë‰Ć’0T  MŮÎj– QehA+šgFv†ˇAí'$čB ‚B•'(ţElcűZşV9„mmqŰ«×ΰ83T'±t“DQŁČ'>§Ďé4÷:y¤KÝéZ·şŘ˝ît#@Đ…&ô Xhx:…–—Ľć}@y׫Ţö2Ŕ˝đ}Ż|đĹúбڷkŔĎČ_7¶‘h°î,ÇßĹŃb»ŁĆ\1Ť=ŹŹîăÇBf¤î R¨ťPI†I˛á$2&‹dÉ#kFł÷Ý,(“\ĘV•˛âĄĹ/öjWź˛UŞ  $«V®:˨lő­ŁT%)ăŻů«|5`*őęWćUŻ9Žĺcă˘J[RY/šŔ%-O ‰Yf°äň”ł,AĆ Ćd¬ţdTédÓÍmFŰ›=ÚgÖ™În{íiT ŠĚÖV5u›ˇźýŚZlr°¶ľE´o~ 8 pÓŃ;’;Nä„°0­i džľDMęQ›şÔ¨65" ęU·šŐpu¬amÝXK×Ö«ž®AwíÝ^7ô×ŔöD'Ú€…ۢéGEĘ쎂±ľúÍ]íÖxRýR[w+Íöń`Ęí†ĹôŰÓ ÷óÂťSžnďÜ@M·’ś”Ué4qqŕ=ŘĆ;©ő^ßůęM&z·xĹxŚ›˛U(tµŕ3¦Š*}Ś•¬ś¬Ze¸Ź%±N|•k5k•ůjW¸Â–ÉM^2Çţĺd˝&̉=ě_UŘÇŞňä™Róc,XÉJ3nţTf=KgŃv°´Ě|a«>ˇ˝…§9zž˛é P@ą÷¤Ŕ¦§®i©WÔXďtÖ!P¬w˝ŐŞ;Ř/ ]X×ě·Önv×®vµ+ôíż6DçţĐňÖť˘í}č{őŽ÷÷[ľĎ0ŮHyČT_b&;ţ!đIŃťđCUAăpC#'ć9't'ęÉ?ca@•H@m! őyźů‰źü©źýŮźe ^©b‹^i µ‹ š  ş Z‹‹şh—»—Ľč‹™ˇĆ¸ˇÇȡÉȌȸŠ)Ť$ęXŤŰ(uÚ¸˘ÜŤaŽ)č)XvăkćxŁjGšpçP¨ŮŽńhw?:ŹňHŹň›`”Źř5FřexLŞxNÚFŽGGQjGTĘ`&aXĘG>Uaś'T yH†ÄakXz.Łz2ăH$IjZ{”Ô—ôłgIF!ž?ůžäźJz:J1 0€ú§ ¨ţ~ `¨z¨ŠŠ¨"Ŕ¨ŽÚ¨‘:©’jź•ZźŤŠ©–*]IĐ©źŞa9Ş˘ZŞ`YŞhY Ş —ny—®Z—°úŞz‰—´Ú—ýG«ż€耇ľętŔĘ"úŚ%úiŹ)‚”ą¬$ج–É‚Óĺ‚`kÓz]˘IŘĘkéhš:Ř­xÇ®…l¬©lć*xIš¤&Ą;©Ŕ„îÚ„ľÉm55ŻŇŁ[S÷şS[HĚya'CTU2>«TÓ‰%úv35ńT ;A%@#±±ű§k±~Z±ű§›±"ŕ± ű±";"[© '›˛ö‰˛ö)ţ™ę˛ô‰ź1ëź4űź5«źš–qy «*— úł ˇ±(´¶řCk´şýg€L[€ę´Âȡ :µĐŚU{µVK¬H˘ŽÉuŃȢ.¶ŰŘud;¶Űޱ¶‚)Ř™0k¸†ŁÔĹ]Ű·č^âu·č•·>Ę^ďE¤~[¤€[Źô…®§Ź‡§ŹOŞx†‹Ű¸ht`›< 9ąvĄ—·1 3a2ĚéĄ]Úaeş(b1!b31b¨;"±ş¬Űş®űş°»˛;»´[»¶{»Q0ş»»ĽŰ»ľű»ŔĽÂ;ĽÄ[ĽĆ{ĽČ›ĽĘ»ĽĚŰĽÎűĽĐ˝Ň;˝Ô[˝Öţ{˝Ř{˝a°Ő˝Ţű˝ŕľâ;ľä[ľć{ľč›ľę»ľěŰľîűľđżň;żô[żö{żř›żú›&°˝'€Ŕ<Ŕ\Ŕ|ŔśŔ ĽŔ ÜŔüŔÁ<Á\Á|ÁśÁĽÁÜÁüÁĚżţ Â$\Â&|Â(śÂ*ĽÂ,ÜÂ.üÂ0,Á* ÂŔ˝1|Ă8śĂ:ĽĂ<ÜĂ>üĂ@,Ŕ3Üż5üżA|ÄHśÄJĽÄLÜÄNÁC<ÂO<ĹT\ĹV|ĹXśĹ ĹE¬Ĺ^üĹ`Ćb<Ć ĚĹ6LŔ)Ćj Ŕ)ŔƬĆk<ŔmŚs<ÇlÇ\ÇdĽÇ|ÜÇ~\ÂţxLÇČ lĆF,ÇLȬČyŚČśĆrĚČ<É”\É–ŚĆŽ\Ŕ’\Ŕ†¬Éž,Čl ÉĚȬÇqÜŔ˘Ŕ˘lÇ©LÇ­|ɰ˲ěÄĚĘ©lĘ›ÜÉĽËzěĆŹüÉ«ěËw Ę‚ÜËƬʳśĚĘĽĚ<\ËÂlĚ˝ĚÉ4|Ć‘|ĘÇ,̨ ÇŃ|ÍĂĚĘ ÍŘĚĚâ<Îä|ÂÚĚľĽÍ¬Ë™ÜČß ÇŁüÉßÎ lĘé¬ĘŢ\ÎúĽĎüüĆŽ¬Í÷LĎĚÎîüĎŤĘňĚÍ]ĚŤĚÄÜĎŃ-Ď íĐů,ÍDLÍíÎęüËĽ¬Đ |Ń×ÜŃ]Ň&MÎÎLţĚĐ|Đ(@ĐmСĽÉ С<Ď®ěŃ*ýĚx|Ę'ÝÓ>Ë)íĘůÜĆŻ<Ŕ.ýÓHťÔJÝÇ2 ŔG˝ÔPŐR=ĹMÝŇÓ|Čř|Î|ÎE]Á\ ĎSÖbíĹ_-ÓUýÔcťÖj˝Ö<ŚÖlýÖp×&ěÖr]×v}×2|Őx˝×|Ý× L×~Ř‚ ם¬†}؝؊˝ŘŚÝŘŽýŘŮ’=Ů”]Ů–}ٝٚ˝ŮśÝŮžýŮ Ú˘=Ú¤]Úž=ÍeťÚŞ˝Ú¬ÝÚ®ýÚ°۲=Ű´]۶}۸ťŰş˝ŰĽÝŰľýŰŔÜľťŃ]ÜĆm×Ä}ÜĘ˝ÜcťÜĚýÜĐŤÔÎţÝÔ]Ý=ÝÖťÝÚ˝ĚŘťŔU˝ÝŕŢLÜÝśĆ+đÝ.ÜŐ>ĚÓâÝŢúLŢ‘Ě-ŕ/đĂi\V€Ţ靉Š@ČúíŢ>ĆđĘ02Đ-0îÝ ŽĆ)pXUđŕ ¬ŢŹś‹ĐߊđßYŤáâ{ ßi 4žŕ3PžÇil6Đâi,áWpZ€ßg­őś?-îĘ‹°ŚĐŽđ^Ç`-âJîÇäť7€4ĺľŕ9 ;á1 ă0ÎđS>U@ç0ţâZÎĺ\®čUťĆ^đc[`bĐÔ*€ćh<dP~Ţ®Üăßç‹ u~çîá{ľę}ÜäAB0mNč: @@00ęZľĺŚÎŠžčn_páKá®érŚi*žjÎćnŽĘ. “@©®”@Ô?ÎęÜÄM^E`Gđ´nčDpîn˝îë)°ëŔîÝj`Zľk€ă…ŚěyĚĚNĺ)Ŕéž. ^Ďýíß׎íi,ęÝžđYüíH?@ĺ¶~îD J ëęŢčíîîďîÝX°ßŰe^fŽŔ™îţÝ> â„žĘľď ŽĘíÎľćmľí _ó1Üä)Ŕ? 30¶ľOńJŔşŢčżëŹî^0ďŞň"˙o`ďëŚďŞś2ŕ´žú®â9ĐŁ^đďďźNó6_ö+ÜäM \ńA/ôŃ~á[žńGă! N_q sPQźËTŻĘč'żŕ´N_źę”í+ßěf˙řIÜäNŕ.…~îBOńOPôrôŁ®ôkňqPvĐwŕ÷RĎÉĎĆ+PčKVŹő—źřN • ő,ßődůĽďÁ$nř…~ë™_ńéŢůHŻß)`OŹy=ţ {Ŕzß’\ň^ĺźĆ?ńąŇŘn —€ )Př=Źý»ßűčŹÁ$Ζ_ë@ônßŕínü1.˙~ŕUđmĐh 1¨Š)PDPʼn„ ¦ Tđ`Š9tYC˘CŽ(RdÂŇGŠ$2\̰„ÁŽ-]ľ„SćLš5mŢÄ™SçNž=}ţô§ L´Ś¤C)•D”y²f Tm\­š3…™*oňĐŞeKĎ-\[.”)u˘E:fg¦ŕĺŁ—Ż‚-P^tŞQč^ľ}ýţXđ`Â…;5Ú2ĹE¦DËPkł V·’çT©‚ÂN.tEţîx‚!M–+żíŐK"Ĺ”O†[ölÚµmßž‰ř¨bŚŽučŐ9ůµd>]Ńěľłŕň‰ĘŐ¦`›÷tęŐ­_Ç~[·Ë˛'šú¦tÉËĹű4ž§iőŮÝż‡_ţ|„ŰąNoűőúý˙0@…˛Ź;ţD0Ad°A t0B '¤°B c‚đB 7ä°C­ËđCG$±Dm ńDWd±Ĺ uS!Fg¤±FoÄ1Gwä±G2H!‡$˛H#ŹD2I%—d˛I'ꄞÇ_¦¤˛J+aL/K-·ä˛K/ż3L1Ç$łL3ĎD3M5×dłM7ß„3N9ç¤ţ3Í~ó,EăłO?˙4PA%´PCE4QEe´QG…4RI'Ą´RK/Ĺ4SM Eá΀ÔB UϢLP!…MWeµUW_…5VYgĄµV[oíłS:j§“Ţąj«ŻĆzÖs1VČ׍ۅZę¦QVúä’Ë>›iŁĂ†:ß©ŰÎ:nąç¦{Ń­"ř뎑Ű]›ËN™ęŔ‘v›mÂ?6ąnĹgüjfşńS˝ Gűčn‡{iˇ•ÎVíµűŽÚr‘CoĽtÓOď÷qʞTwrŇ[^fµĎ®WöŘoG¸ókm§9÷{Q>xá‘ Zh]góá—gľůVTň —ŮyëŻÇ>RŐ;’žÝ˝ł?|ń­ßďî§ý~|ő×gżîňj}úG Ę9ýöďÇ?î÷}>źăJíý$@>}Ź€’:`ţţ¸@‰íŻk@óŢ˙•ŔEQp~ Ä`'ćŔŚA}¤ß TB@-§O$ˇ E¨Â+ta CčÂŞ† ěXq¸CŃŘP?˘Ö<Ĺ5ţyĐ\aKX@&*Q‰4á učÄ(RŃ€'l"©řD&Žp‰4„bĹ8ĆMqp`ý›y޸F)ÚP†ôłß˙F,fqŤ„˘Ó÷Bzń‰j$c 9)3Ć/‚wDä—¸E6nŹv´ŁůhEDî1‘Qă 5ąÉGŤS„#$)9JL6Q‡Ź$Ą${čDzp••tbeJFrŇ–·ĚŐ;bČľ’•tc …ţ‰ÂZS†RTd2‘9ËQŇŇ”“Äe49éI#‚Ťbt%¤°)MnŢ’šČ«ëř?hvÓśü¦üÎąNv:/ť‡lg<ĺ)Ľwörž¬*ç=ő¬z1P”@/¸)ţsź-V?­‰«‚^Şˇ7{(B%Š)…ó•lć źI@q¶‘‡-ühW9K‹ÖŁÂěâ«ŘQŠt¤}i6':SWU4• ä"#yIe*s§ŁJc9΢ň’@íb6øT‘Z˛–4…ęŞlzŃ,fŇŹzL)K TrŐ™8jzţ©U>25Ź,kU ČFFŐ­ćŇ%GxéOGŞŐ‹;-e[•ţI˘6Ň©+§AźI»6€}Íi^yúVĆZjŞLĄä]WzJRötŽ]MjbYKP.–ł‹U뉵¨âţ GUŔfEâU1űGî öĂ;ţńW%ěH¶¶˛ś¨}±iÁ ĚżňU¸Ň­1‡ÁŰAěŘŻĄĚ#`ŞŘČθ™-Z»\b/6ĆŠm±Ł|ÎsVČ’•ĺiˇ‹V ˙ÔĂź¬tă ă>NÖĎMs$ëěg Ży˘7Žc[Ůâß^–‚Ţh1ÝŇŢ29ŃIŚófŹëhJ'YÇj6´4őkY‚Fşáő^Ojꎺ̵ęń·R˝×|˛:ŔS>Łkm˝kŐşš×żŽ/®çşĐ}ÖźłöĽUť!űŃÚ„ö–“mÎeď×VÎƧµ§Ífa7·ĎĆiF­Üh#CĂiLŮJ[˛ţRřÂęnđ Qa—28Ă4Ţö&«}QČ^ŮÉ$tPK,T-W´^έ^Óťć3#6´ 7xľqąo…'•¤•,2˘ĽúS%•Čí>2?nçTf<Ügž°%ŢMŠ“˦,xŁśą¬1¦.Żúl;]ćĂłíIm[ÓßľżĚwčę3ß®u‹¤ă†-Ýĺw{Ł;Ţß~Ú‡<~Ąşűäß~°…ĎoţM'ůčýřÓoŇ›üóéţ­QZóřăßúŇÇ" /`ů9“¬+@[:·+cŁľ“˝Ö“)şťÓ˝‡#84Şë7 ¬:,21c22*ô!łbŔśc¬6CłÂ‚ł!۸žËŞŃę#˘¤y;2–J@€‹:ă±ä@ \739”+¬Ü3 ó@ł,±ş´ŔzB'ě­Ďł±éłţ2›ă˘Ě2‚Ă=M›9ŚąÚ‹Ŕ$#Â/|ą4±~3)üÂ=KÁE‚¦Ľł€sľ‹3ľŮR:ŞC|ëŔÖKŔ:˘ÁGĚĂě=E;C7ě5+d»44c´ůÓ»>„7Ýz7v3C##ĹDĚľ–Ę8Ď+·íK9íó1±Äă0_»|˛AÜ@`$&_ĽEKF=ÜCQdĆćŰEp>âS3¬ všĆ­ Ŕ]ň¶lśÎÓ¶kK˝žÇÉÓ ŕ3ÇtT tTÇ<ěolGtôĽr,[Ś=˝c¨IĽGJˇGčkG¸ţÚFąň¶Ă˛9x|˝ÔD|,Âă“¶Ű;â3,kÄ˝Ľy\«č5„\1† ÷;?żsÇÝŁČŠtĆęK«Ś´©?c¬? B7T\Ć6zŁűcżz»Á{KFysIJóH4t1–ü6›Ô­së4ś<ĂŔ¨dC+Ś9+:A»:Ä}ÉDAJ«»˘Oă¸X‹Á·t´°˛ż ě+A  lK Ôą©Ó@LÜÄŽ+&‘{#|Âł$¤’B„{ąŘzČşĽË2ĂBJÜȬtżWtJfô9KT>(´żż LĹ Â…ôLĂü®€l-×QÄţÄ",@1»„ĹË,D~ >LÄ#UśDË<0ŘĹ«-k,L0ăÄĘŠÂEtMŇT.Ód®®ű:8JM;EśDÄ«\Eµ“Ä`¬¸×äĹ×T´ab:zë¨\´GÁtGT̰=ްĺ\HădĚ»h”µp¬Fł”Á1JsdOÂëGZ©OsűĆüTOđaÇ˙PÓ Đ5PĹ)PcńOýaŘ UÖçE.D¬ž´Ş4Ě›ł8Ś+E%óÂą\KŤ]Ă™íĹŽő8@“ORMYČMpĄR>}Y:ŚY†C||A8íQ4|¶šťÚ%S?C“=Y†(ɱü2źśVËĚÔ=‰mZş4Z4…3ŰěMŘś3«ŐĚŰĚLKŇgÚN,íZ”ELI=F^MQ`â´öŁ×¤ó>8ťŃt[żµŰ[ɆXLű×JăËŻ„æ<ŮűÔO…”ĆXQء—ČÜŰtUţnTÎěrPϢU•UZÝו×…ÝŮ}ždýHĂeήĘŃĺGZc]mÚ]ŢͽϽ]Úm”lMĂŁÝÖ‰äV®ĺÜ<ŰŢ]ŢCqYč}XăµŰ=5,FnýP}l(âť5o$Ţ•Ĺ^CáĂý¨YĽNőëE|ŐT™lIÁ˝E«ŠŃš 8ď+ĎúmŞËU9Ă}Qť,Xž<_óę[‹}ŔyőVÔRlŞŞkNŽkŮŢĹ |`ŻŠ,ĘÂ͉íÖ3m@ˇ-ŕă=ŕ3ĺŢríÂNŢ,Ć©%*ŔŇ Ĺ[âZ±]=­ˇ6­\O á?)ÚeSď…ZVČ/lÂąUÓ‡ÜŘ$­J©Ąa ţâ!ÎÚÍÜaôýZő˝Čn^˛ÝÓę=Ąĺ F\çëÓÄüÄŚ]ÚTÄKůýbĐťbŻUW*#ŔÁm4kß%µGM:qO”"ĚĂőÇŻŁĚ-ĄcśÓ[Vt_¸ĎđkăAŃÜ[ ÉPcŇEá7Î5ÔDÝdű]I.ŮŐäNfdíőäPžäŇČÓĄŢĐ›˝OeŢUeČŁäa«^VÝçMĄĐ?nĺi:`VţFUÎ⡨đÍe»{ĺnśż›ś˝xĺLđła˙Sfc Oů‹?®ËćÓ±SA•^C Ű!YŠýÓ=ͱź´$aĽfzaŘ ^c%aŽA"˝Ó.ÎHÄN±=gţMgnŽĺş cpfJ ĹJ?ĚÂé˝gÇÉg#Ne%ÜâÁęâÉDҧ5ZG„ş¨=hŕIßJ­Ńd¦_î;A:Óă÷…Ńh†ż¶óJCŽä‹ÖPvdY–›”VéáádfÝ.`ŤéŇ™é›áśÖéó=Ż`  Ţ—`ęF)ę ö“ŁNj>Qęë!jD!ę¨6ť§†”¦>¨¦jšš* ćęL±ęJęŻ.”¬ľę˛FęŻ.j±®µ6¶î·vë[‰ëD ëŞ”ąľ§ź6kLÁkŁ~”®Fęłfę»lńÁk¸ö–ľnëI±jĹŽ'ůk©ľjÉžě´¦j¬>ëşÎě˝ţĘfkĘ&ěţŔ.ë´íŃĆě»ÎjĚ&íĘŢě &ë·.lÉ^mĐNęÔ>jŮžl¦&ëĂ^ęĚľěÜvm´öěß¶í°lÖ®lË®ëâ”Ď&nĺnlŕ†*öŠěÁ&íëŽí·^nëíŇćjÚ.íÎ.ěîmím´ćnÁ.oÓVoÎoĄ>îřöî÷¶nͦďC9mňćě߆mń^ďďţďî–ďý®ďönlđoâoí^ďf,ć®sďÎ^mӖꦾíŢđßkű”üöď ńźpÔ¦ďŮ®đÚFđ®6î§ľngđţqOm¨ď GńčlŐ–pđÓľmŻíAqn7pBqěŔ{pä9ţîí%Źp/qý†qńćŽňń¸¶oůĆngrĎn*·ňűÖď×p&˙pźňůîň(s woôFó9çňďCsĆ7Çđďćď2Ďń8wí Żň3ĎńęNo)_óĎŽíĎmăt,sG'ď'ó'ňI§tC‡íŮ~ô×nÍľôBĎpN÷sř¶óSďďK7ó5źî<ÇňŕnđáţńX×sá¦t ×p¬Îô1§pO‡őŢ&r·p_7đUGđ_GîM_tł–őň óP?uaÇő?oĺ¦uMwv?Ong?r$'ĺÓ„U#Ď o/–[§qZ1÷˝ĄŐugw–c˙xţGWžîiăµ÷{ź]˝&tżň;_ëxWS˙÷Kqlb§„‡…g§­FôHQô4·zgě‡s€u^ďwŤďwĹsWˇř1ů1Ňë‘ĎxHŹ“˙k‹÷rŚßř4?ňľöxą^•'ySEoćFv/îďs[×maßň_—ńćÖyGmťßqlßyĄwń ú_ń¨Oz¦_úÖNö·ôO7zt§z˘—nŮŽďËnvöFöGőĽÓČŢî"oóUżň\?t¤‡ű:GůďóDGő]űOűą÷ű"Żń´źunżó ˙ř?vľ§ňHĎňDo{ą÷m›"~§óäćsUÇüßsţÎň&tŔ~öĚÇqó†{Đ×őůîvéűŃ÷v»ďőÓ/o݇rŇçřÂ?yRżünvj·ýý~vÝćőÄź§’ż|‚Ź{ĐŻrIGó6lkgvr×ű»řÎq‚Gţ҇}'§}V‡ůC/ři˙űÇţŔwó‡‡ňW—óčÇó$=źţR|t7qÉgvFçnŃo{úOoÍ_ţ˝`OśFp Á .LءC† tXâć %bÔ‘c‹ -r”1#ɉ'7Ş,iR`Č";"|2&É“)AŇtéó'Đ B‡-jô(Ң(NüJqÔ¨PU¤vÂ&¨n\ţÉ2ä@™aŠ…H¶$Ě•^)Şý8Ň,Ę—kŮÂťé5­ŮµjEžĄ[V¬^ľgńúe;7la—ao"F‹¸o_Š?!Ýë±nÜÄŹ;>ü8)čТG“.tiÓ§RŁRµŠU+WÓ˛}î$:w6sóîí›÷î߇/nÜ'j§«YW˝šu«Óă˘#Ű–^<¸őěÚMcßîý;xăÉU/oívôđę׳oďţ=üřňŹ_>µůkčó÷óďď˙?€ (Q}ö™—_l-éÖťaá•J8!…Zx!L)g ~ĎĹv·E¤“bšx"Š)ŞŘ^ĺuFŠhOh­x#Žţ9ę¸ăQ-®v ‡é±Rd#.6XŤIň¸$“M:9ˇŹR cG%~UeLyŐX„Ozů%aö%s®YĄ•™e6˘’hŠů&śqĘ™™÷™Iĺe4^ą'›z¶9'  gť(L©źMЉeWnÝőç ‘J:©‰…úá~ćµ)\ަ™ĄˇŠ:*–ľ¨P]rG*«­şŞž©w˘”ŞŻÚz+®űĹzެąúú+°¸ÎěOÇ"»,‹’÷㩱)ËŃ,Óşdí Řb+QµÝ&{-CŐ%.QÝŠkî±č†Ëm¶ŰĄ ”¶Éšë“·ŮÎkď¶Üć‹/ąí2ű/xĂžIPţĽţ–Ôo»Óľű­Ľŕú»ŻĂô˛;1µŻ ńp _k­ĆĚpÂ{3ę´ł.:éĹ—î¬}†F+¤ăeÇ˝ţuđBOÝĽđ‰#ÎráˇË-yĺAŻŽ{R¶C.úç“g?ĽÜĆ«ňĘš Ř­Í1ő¬o{˙ćŤÇ>~č–C¬öą*64©u/zTZÇâw7×QÎp´ę¶ľ Ĺtý#ßô §@ĎŤfÁ‹[ă¸'Ľ .x&$ Öv'˝ç=Nu÷aýîWB˙Q°†ěKMň.U¬ß¤/4ő;N«—› şm4>;âůl¨Ä§´ĎEďŰá…č).±Š“˛ ł¨ERaq‹^üb ş%5)‡IR­Ž5îćŚ~JădhGMąiUt¤cmŔ8,‚¨7sÔM¦ŠRF<ÖQ¸ymŽňGąţ‘Qłiä§*ÉŇpÉ-nĘăoţ*1ZR6š¤Őt:™)L¶’Ä9Ł)IĘDĆ6z¤šéH=Ą‹äa 3$qf$3éL!ĺ"IVŽŃAÔá”d|ɧ͌E.[şŁ0eM!S”ÁTPNrů”0Ó.hÚ%3µ¤¨^Šňo,d–˛iN]r¦ťÍÄe2meËFz3'=éT=ót%m˛r’1ŇRź^Kśüó-{RÓAş“lŽňš·4h ™({B””cŚ‹E j͇ƲDcYTšHäÎ2tŁ”âdeѶ\ňźżtd×iÍJ&Ô1hÔ(Xf©RĂ8´Ś*eĚg†©¨sr´ţŹőHmc$˛d´˘r¤N‡Ő~Š“D }ĐŻ8ŮĆ}ţ) \})ź„jJí;=jźvŠŃY¶’¤k­©@mTVIöŃ©j˝ !oIQ¨Ş˛Łr…©Pą Í<~’PM„Öß"KcsMíŠQCĘQ•ŚőžGíç])űVżj$¨’V ęYŞÖ¨±[­+R5»ĚFˇőł5y%TA[ÎF=V˛9µęMk;ŮAń±¨äDf‘.*MoŽÓˇ’ą ?ŰäţĹ/ڎěG»KčN&śÖŃ;λį~…$´^ń)–u«y®řzoŘĂ (˝¦c]ýÚ{=}'|ߍŢ÷#Dşű(řúĂîýů›˙Ë(PŤźÍiĐçÉ]ÂĺŚč ]˙Ą^Ţ„ÎbřaáT¸€ś]Ź ™źÓ1čxßy`đţ9ńŕ׉źŰŐ_5 JźęÁ޸ěĎůťő!ŕ˝QĚŠ řýOćí^Ůť˛ Y]úžÚŃ ôažřđŢĺ™ű!^BaĺY  Ę`ĺ|ŕäaáÜÔ`š ďŢčťDě ęyž}ŕô=N®ż¨ ÍŘ}\˘]Šźéyž¶ťv]ŐáÚ! jôF!Ja!Fł`¶ě ˡ˙ťŢ"_íóÁaÎNÎaË$ ]! úť }Íîŕ]ű•˘ËQâ%žŢřuNđ"Q ¦"ýyĐ,ž!Ŕ¬ŰÂůĆËREťtDÎý 1cţ"Ó1 ţ/2 3bH4Ę4\i<Ł5fŁ6bŁ6văŔ śu¤€8„8–ă ”ă8’#Gô˘7¶# €ăq¤‡SËÍ#CŘŁ;ćc¤ŔŁqČă9®#@ŞŁ?ę#AÎ ?†ă?¦ă¤d<’#CžcE6ä=B¤F‚‰DŃă? dFn$I6IGľ$FŞcI¶äŽśäo€¤H˛$>&¤KŢdŽŔ¤o #C¦ŁE ‰Lâ¤P¦NĄQęMQĄRî"ËR>e %%TNe®LXR„"QĄV6XS jÁۉŇžm%YľG¦]ĄX¦eY®e€Yu Y“•Ů[ÚŮwq™sŐţ[ćĄh„‹yžˇ“ĽŮ•pĹ™^ćhřŮS-Öfa~‘™–éVáĄaN&u%žÔXS)›nĺVGUš©™e†fIČ"m—]qWcZh-ŰWЦkţÄłyƬ}›8Š3ŐĄ§Xť˝&oަeöŠ„đWoçý¦ßPż§rş„T.§s ‹q˛cË‘/¶G5&ăś\çs2„#2˘9NőEn€g3Ň}ˇQ$ÝÖžz€âÄýávćšçĐ‘§ŇiâIÝď,Ý m ĽŘ§.v` ęg0fGţ0Za|ʆ-Áť 2çHßćť!ćQ šŚâÝůőůzZśćţ|¨ćč‚'ąO’L(š_řéâ€â˘ěüźÓE^>čfâ*ť×¬˘‹šbŤ`‹vźŠÝi÷Şg‰ŢІ8QŠnŢü4iŇ€`áÉźwRˇyjh"(ö¨ř< µáăĺa%ŕ”ęá’ŇItZ ™Ž ‚iŕíˇŠ˛Đ‡Â]Úq‡öť•Ę)ěT(ćźľČŐÍâ®é5¶iJ)Śęg•fO„Ž ÔŃ!Ş))>ę‹n_ÎśÎéžg%Ҩ¨"j)ŞF)÷ť !ҧޑ(–Ná}¨ë_!bž¶áÚ˝ 1ę§j§#{’މ6)bĄ¨¶¬hŽš)ţ×Řß Ţ\š˘"•ş"é•\jć'˛bŽ*ŢáÎÎůŕ&†+NjŹ +G4'ą†1žÜ~r¨Öbohç¨ĆÇ÷™+lšj…(©ŢČ«˝úşö+ŔfÇż¶d‡ŮQŔâ†URRÁúŃž’‘|GĂĆŰÁ:Ť˘¶ć*U¤d%Xb,ĶIÄöeXÇÇ’ęYlľfnĚČ|ŕttÉČzÚÄî%ľÎ”˘ Ű]Ö¬•“4‘gÝl“é,5=•tŤ®Őe\IÎz,91Ťĺă"GŦ.]Ţ&±=”›Q[gvVYĄŕŢ`˘®ŁMnŰ.¸ą–®µ„gň,tŃŮË®ilj[§í6i[sé¬s±&nŽ—L[ŢZm:/÷Bm|ýŰĂęîÎN/‘pn¶©îę2ç̆FňOµoç®XúVfÜÖWŽüŽNţ’FrÎďÔ«ý>©˙°x¬ďCň+R puŞ˙Kw>ťÖ‘,®Şľ–g$Šg}NđŐĺbiţđ¨Î `zާwpÎupÇiąZŃ|® 'ŢĎůç⡽0Ű(ĺĄđ} a»Ň˘–zęţńé Ęp nđ—ş¨Ż®!vNa/K2 ˘b†J¨—’ĽFčźa˝Ţ0ä5\áuaJ!ăq*Ą"Ís+vâ*Ť†ńŕÍkwé^üŮé›Ňľč±ţ ¦^ˇDZ(*ßiŕńENňĄÜ [˘Ëĺ^‘¶¨xRkľĐ!#)ő)źîŤb"ă^ȲĄö]_ŽRq§Â+ťî¨cń(ó*¨ţń˙ŕßşňź 22˛Š1—î鸺 ŇĄâé,Ş)ł˘‚nűéRhţ»Ök€~çϱ»îň·r (ĘYŹ®J˘kbžöŘDsłjˇ%çâĎ!ń&ëQÇń-2łý¨2›b ŽqŁ˘ó§NhźކŇ*†ňZžŰčŚ:ň=×3 ݧ7{1y¦é.C GĄ©®săń'!ňp·´<›`ľi*ck0c3 ޡ÷ů°€ţ0ĚФrŞ­ˇ6{´–©ö ź˙,ń­<°Ç`µn łîq˙ÝJ/ë-N"¬J ϩⷪňă¸ţ§űtÉśŤŻč+žb+qH“b^+C+týĘŘÜ ă;26ówjWÓgx€5Rç»:›+ĄKŻČZăđ— ţ,Çő°>KguŠ8čV[G[˵ŽŔ4T1 'ń^_Ü>4_żĘ Ç3?§ë_GkY»u~†čʶ«”łböt2vFĎFUk^ĄŽ3e_ŃĚâ(’J˛üĺréˇ)6ß+ăá¶2u/iCô©Vphlj'«¶íˇ]¤˘˙ŞD/"3·D‡ł2‡*‰Ţ¶AŽvíYtô˘ş0ä\łµ‚ęüT3ÍA+G'´rÖUŰ[Vw sóq>G7p+˘c!Şuvčđuw«$6qKńtgˇyGéŚÎę»0kë©ţńϱ®ś'î5|_3˛g÷÷÷H`˙A˛EĎ´2őS{ÝÍłuËtţ‹öw#śßuO'¨fC6uv†sdZK —ř n¸Ć©¸‹ß+‹ĎÝ‹Ďx†Äx —z”.Ť/%iŠlZîćŽeä–ŇâąĎ,·m›2É‘šĹ©9NňĄm5nQáÓ A9Ź›*#%.†ő•Z]—übąFyń…är¦Şą­·dŹë—™źmj~¶íšocëŇ,•-­Đć.[mŻmÖů7ž8y, w#\ş˝:˘ «˘‡8o¤ř˘cš˘.ń‡prGzł%vĽ†0`ă5¦g:ľ"0łë™~z Űx‡żvP˛ťňpQűęšúĄĺ6ŁÎ÷ţąş¦¦2¤ËúŢ 3F« šö7ţ®ňGóúĽYvq׺Ť:´ě­Ş±űB{­+xKbuŁ·~?;źx„Ż:Qµ…ŕNs·¶“ł §g2V:şźuąç\ďz»»cŁÇ{oÎ;˝ż&·ß{żjşľ'z¨÷{Ŕú:Ŕ3úúÂűŔ»¤ŔĽňţ»Â<ŞĎ­Á7<›OşÄ›«˝WüZ^<Ć“ĄĆoĽVvĽÇO%ȇüSÖ‡ ś<ĘźĽŚ“|‰&Oľüý˛||&0ÔĽÍß|Íw¸Ě?g}¸D‹ďüĚkUŘGUÄ<Đ/'ÍÓ5ÂýŃ'Í˝T=Ó7}˝ =ÔŰIÎŰ5ŐçÓ_˝ÔOýÖ»f׫Fkؼ·=ľ[}ÎŁţŔ×=ÚSf×[EŮ›˝Öż˝hĆ=0´˝ŰŰ}aâ˝Ţß[ňľŕ>áľá>â'ľâ/>ă7ľă?>äGľäO>ĺWľĺ_>ćgľć݆ÚăüÍĎß+ç/‚¤Ľéź>ę§ľęŻ>ë·ľëż>ěÇľěĎ>í׾íß>îçľîď>ď÷ľď˙>đżđ?±ĽĽń?ň'żň/?ó7żó??ôGżôO?őWżő_?ögżöo?÷wż÷?ř‡żńţć—żůź?ú§żúŻ?ű·żűż?üÇ?ç‹ü׿ýß?ţçżţď?˙÷˙ý“?@ 8`A&T¸aC‡!F”8‘bE‹1fÔ¸ţ‘cGŹA†ÄxÂ&T¤(‚eK*QŔ”)’fM›7qćÔą“gOź?s’4‰ćŔ˘ŹĆş”iS§OˇF•:u©Đ“)W"U9Ó%ף,•R;–lYłgŃ–µJ4ëK`ĂÎŚ)WfŇ´wńćŐ»—oÚµX ¶t6î[Ă„ĺî»qcÇŹ!Kü›Ô.âĂtŤV™sgĎźACťÜ–4ć—3‡V˝šuk×G>XőéÓp_çÖ˝›wäŘFKw«fáĹŰ&ysçAK^­rúsë×±gżř›zjíßÁ‡O;uÜăѧWż»üz÷ďá»oź~}űÍ˙žĐżźţ˙˙ PŔ ,ĐŔLPÁlĐÁ!ŚP )¬Đ 1ĚÂčLčĐĂA QÄI,ŃÄQLQĹYlŃĹaŚQĆi¬ŃĆqĚQÇyÔѤ RČ!‰,ŇČ#‘LRÉ%™lŇÉ'ˇŚRĘ)©¬ŇĘ+±ĚRË-ąěŇK“ Ě1@L83M3ÓÍ2Ń `€“Î;묳€; @O?čSĐ-”ĐC -Š…"ŠFeôŃGĄp )  4ÓK ¨SO;ĺÔÓ(>%µSRI•BŐUYmµU_U5V)^}ŐZĄ¸ŐÖ\y˝Ő×^{-Äa Ń„Xc‡ţÝ„ŘM I¶ŮBŐÄf©ťÖÚj±˝öZO6áÖ“OĽ·[pÁĺ[OĚ-÷\sŮE×ÝvŮý$ŢyCĹ^Qěß|ů%_íý%e`P .á… na†G!%â‰%®8bR$6ăQ4ĆřŚIůXc‘C&ed“KţXĺ”IAĹ”SLqf—iŽŮUlĆŮeťoîçź}öy•ź‡ľyčŁUa%éĄUaÚiVLhj©ŁnşU˘ľ:kU®îšëŻ˝Ű„VĆ.›ěł[!Ű•´Mp€´×†»•µéžŰîşMZ řŢŰo˝`pÁ÷f€ÂOqśqoĆţ%§.ĎóÍ5ď|s>ôŃ ]€Ň8]Tg=u8@Ře vŰoÇ]÷Ýyď]÷0m73xÜç,ŢNă‘?^ůäëPç›?Ôů>§wŃFÍűíµŹÔRI-ť4üń+ĄÔŇň‘"ýőĄŕDýößWŐ}ůWť~ú[euÖ[Uĺ?Wb‡@P€$ °žŐ¬Â l`łh-vËŢŞ -x®q…ë\äęŕ=.w©«\ĄĐ(LŻž_-dá ]¸ŻŢ+`ű"… qh1Rڇ;ôáĹ*¶1¬c¤‰h %.‘‰L4 ( H‘ŠS´ţ"*@Ĺ,Z[Ä".1†QŚ@Ď(Ćk<ŁŰÇ5ÎQŽuścî8Ç<Ŕ{ôăý¸€@úq„|€ )Hň‹Tä ąHI6’’Ž Ü%-)8Čiň’“Ódă09QVn”Ą$ĺ)EÉ9\nu¬\eę:Ä–«›ĺ-Y—K\î’u ¸Ą/Yç»ŢďL¶#&™Čd¦0)óMl‚Óššy§95OŐěÓź°(Dm3QÜä&¤Ŕ >F•ďRçŰÔ§D•Nt®ÓTRhgŞňOXÍSVóÜŐ=ő+}Ë€Č*Ö˛žĹ,g5+[Ő–A±ĄA…z0„߀ţ!ú.‰ĆË$Tč€:`QŚnô˘đ(F?Út4¤%ő¨G?pŇ ¨´)]©K; Č”¦3µiMqzÓ Đt§3ÝéO T üt¨;ĺŔO9@Ą&U©P*śÚT¨NŐ©UĄęU­jU(:u«S„ŞWÁÖ0ŽU¬e%ëYËjF2F`­d|ŔŢ×6Ę•Źuíă]íš×=öqŻ~ä+ ËČ= r°äŰaűvŘ˝ńŤp—DÜcŮLv2r›”\ŕ8—YĎmVł™+E—:ÔµŽ´˛ŁÝěnwÚÓÚv¬¦0ʉ»ŘŠiN°“mk»<Ý&ošv˘fôö4=9j¸Ú3.÷*{Üî…“|çĘiľ÷±ŹşďűŇu±›]ín—»ÝőîwÁ^ńŽWI;euler-1.61.0/docs/images/shot2.gif0000644000175000001440000003477007414306114015512 0ustar ericusersGIF89ař Ć 0AJuśJqśJu¤Ru¤Ry¤Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaAa‹Je‹Ji‹9]{A]9]9aŢÚŢ9Y{9YsA]{9UsAY{1Us9U{9Pj1Pj9Ps1Lj9Lj1Ps1Uj1Lbb™Í˙˙˙bJy¤Ry¬R}¬9a{eR¬R´Z´Z…´J}¤R}¤J}¬R…´Z…˝Z‰˝RuśR…˝R‰˝ZŤ˝ZŤĹR‰´Z‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍZ•Íb™ŐZ•ĹbťŐZ™ÍZ‰Ĺ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,ř ţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•–—™š›śťžź‰˘ŁĄ˘§ŞĄ­¬łµ´µ·»şżŔÂÁÄÂ++,ÇÉËĘĘ-Ě-ĎĐŇÖŐ+×Ú,×ÝŐÝ-âăäă1ćčçę-2-çíđěňń21őő3ö1ůő42ý˙bř›!ĂźÁ‚*LX 9Bś¨˘Ĺ3âĐ1GÇŹîA uĘB÷M¤źDaôźˇJĂGy´Ń°¶´Ň¬˛Ęd+N¸ćÄá†CőęCRL)%,TÄF5UUÇb%ÖŚËŽĺlXi}U–´A¶ĹÖ\FÄĄ–¶D˛߆ î¸ß6€@ąç2`nP¶Ëî»îĆ ď»T"`Ą˝T* eú Ŕo—śm&0hbŠ9ćÁfšfšj¬­[mł1-ţëÖ›śĽůVÜĆ{×ĚÇČ)'r5ÍMW2u(O—čĘä,şh¤áĄ‡ŢĚ•ęĂOAďý3P¨öőĚł¨@óÇ_©ţ™Š) €±6č4JPĎ$R %é”®XóęĂŐz(T "•ÔŠd«X˛W%ăÚR BîŰᦻ€Üt›;·ąx#÷Ţz÷ Ż˝ě®/”R>%Ŕs©8ŔžŚđ™ §‰¦)¨°˛ć*­ĽIqśąĐÉ .w†®ńžĘ ŤéŃLCč Űęú7ă¨Ě˛ËŤ®©<’ÎĂNz–Zš©@Ľ§Ä'j~@—šÂň)Ť*Ő¨ŞĘŞ+Ô˛tő¬·Â$SNţąfýS Aů ěůMý€ÁúěcU¨ŤÚ‚8đ€ýÜźżţű÷ď˙ Ř_ó7ŔĐ€ 8`¸€‚Ë !®tŮM]”—çµA(Ő‹_ôˇż¨4Â(e¦2ś9ˇ w°& M ‹!lf>Ś5¸ŃMnt1€ŽůcĄărţÔ'‘i:HŚNs˛c”eGOlAąĂ¨î'f4ËbyR°E{4/)X›·žĐ yóažCšgĆ56ď!lśH#Ň<:.Ď?˨¦4>¦€$TŁZ‚7HAîѢZLN˘ľö­ŹWîŰI$y"@Ŕ’Ľ¤&3ţÉÉKF€÷“ŔţD™ż ěĎ”ĄŕLÉĘU>€®„Ą)aIËWŠë–ä˘[ÜPA»őŤoyc@ß„i.ŔŮ«]Ç,\—úu¸Ĺ9`_ŇRăZ¨°j `¦Ŕ¦(´iąT`ÎrŞŘś89Ç‹Ďů"Oč ťYPÓ©N€Z]5ćé:zŇv,«˘>i·ŽGůł3#@Ů‘‚|p1 őࢠ:ĆŹ‹gôóĆ3†±˘Ë[hAÚXG‰ĽŃyu„^óöX‘ę 0Ô˘ő¨F*" T¦B`©TĄĘţT©ZŇŞKݤý¶ Jüýď«` Xó×&p‚Lëq‰K^˘ ]ĽÄ9HWy}0_ Äkżţ5Â}ők…Óä 5K&Đ”˘3Ą°a K‰íf6˝Řá.2¦ ütóXČ’SÄΑ:Ě«N Ä1Ú¤ ;Ě+miˡZҶC Í(˝PÚÎVŁăYžzîF0ţ#Ś]¨D7*4rtŤp\#ňöˇ5w"F“©Et 씎\|j]în·§ŕĺnx+Ŕݧ*ő¨ćuŔS5ůÔ«nň˝ťŚď&óçUŻúo€Ş$ *M@ţş2€°°*iÉV¸é˛‚»<×/ Lţżuđ]…«’áH¸ŻgZ8°˘yˇ™$ÇáU¨É›®plcGě‹Î™óçťťÖé§ŃŁ-ÔhW‚jÄ8ÜNiegZŇžc´ŢábŹg;dŽvˇ?Ö]l»ČĹ&{Ń=ímq`FŤFTٵ˛ń0*.Źę!1ÍtM% d@Ŕ€™×¬ć l`Ío6sś)° ŘąÎu®ťŻ›çëęůĎ~´ž­;čťöÔĐpRťTô:úĽMŤt{łę^ýqőŇ–îęţěÖüz:€< ¸ 8jµFn¨ŽŰ[1ř­şşúÁ ˇ˝úJkľ®p`c!a kÍÖȰ5Š˝!‰#v›ţ¤Ŕb8öňăÔř7Ď&NŤ——Śg+Ç,HÁµ« ›–5HAsF{˛qŁ,ÜP\mk{lÚ1şcÝíĹs Ô{fö¶GľűQfd€ŮĹ€ż5Đ3Üŕ—3ś3Pđ7;ÜÍř›+qŠO<€Îx  ˝ÝërÜ» 'oOE’“|˝(Gą%'=i¬Ę÷ĺđĄď¦ÁŠJW¦˛żűp,w^ËTXŐ˝T°/Ltdý_†›đ2ÇtgFS׆j&'9nŞÄ– 1mR[‹Ű)¸ótáu;M›ěxZö´—}Śg7{ĆŮ^޵gÜ:şÇ¸ÇÎîĆhőÎnÓ®ţ¶Ý>¦bŔqÇ{ĎĂđő„8ŔřĹ7žńŹĽä?yĘ3žňçĺ˙˝yÍüĚ G3š ľćŃŻ™ákN8ęͬú8CĽŕçł gŻńÚ úĐ@ý)x+ĐhHŻ×÷P}ŞSłJUJ«VĹ4WeŢéć÷Żć°Ě_©×Jý[˙mnĹ`\ő¦}Xż„řúWľ¬´×ň/׺6Ř®ŁnÍĂ Ŕë4Ś×‰­ąYô˘7«,e/ Dqvł#ó'…b2ăĐDÍ!  Ř€ 8(yČy˙Ćxčořo ř"‚˙Ö˘—pwf­·p q.(q.hqţ‡q´·qwÝuh%×]&Ç]=x^)‡ręĹršärđu„/Ç| äi5ׄ9‡s87KwKv7B—…ELGwL“tÖtbhaą6&¶,ÓALĎ.ýŇCĽÎ­ĚŞ,ťűĽŇâ|Ó8ÝŇt Ěä|ś)ěĚ,ýĎő\ľ;-´&ĽĘ Ô=Ô7Ý·Ö Ő)MÓJÝĎBÍÔBĐO=Ë=ť?=Ď^MÔÚ|ŐÇ<Î[-Ď]}Íţ,×:ÝѧLĹ"Í |ś×ßIţŇ˙™Á.Ë×zÓ‚˝<~ ĂYš›]Ř޹׌=ť‡}רĽŘŹťľ„-Ň‘Ť­JÚÔr{Ô­\ÓrÖX]ŐË;žú<Ő ÚjĎ9ýÂ*¦~j¸ŤŚÉŁlÉť|ϵMŰł-ʉ¬Ű lŰą]´ąŤÇQ ǽŰ!ĚŰżíŰw<Ü·˝ÜĘMʵ]·ł}Ü \Ü9ěÜ‚ś ýśj «—ŤÔžM̩ԫÍÚjÝą—}Ú*]Ţć˝Ö_ýŢNm×ŐśÖöÉŢ\×ňŤŢl˝ßNÓř ×®ëŢ« Öç=ß%]ß˝IŮ•ÝÎáíÄ™­Ĺ ¤.ľN˘ >á®áÄyáľËá^áŮëÚ)*âhţmÖ¨MŕamŐéÍŇbŚâo]Î'®Úđ]ŕţťZÝž&®âí-ă3ľß:ÔXěŘťg­ß@®ÚKâŐ>ťâHÎŮAžËŮ<ŔîăQ.ĺJ~ă\<ÖŘěä0žß>ć4>Úś}ĹPnäinß+Îß5ţćuťŕâeşăŐęá šátθvî¬x®žĽúĽ{ž¦DţŘŞ›ťZz>č_Îá‡îËd®Ő3]ä6­ĺˇmćÜYč.ŢăâMŐ¤mŕ.ç ŘŢŮ1ŢéžŢćS^Äîąăťę¤ýćńm̢~ʆÚćęyĺ¨ţăźîŐŢŘs«ëźélîć,Îâµ>¬°Űî ÝĎ-Ýţ»=ČÖ íήݽÝŔíĆý쎌Ýu<íŮ^íŐťÜněíÔ~îáŽîLÝË î„lîďžîLŽÄ-«čŚÎ¨}n«Ź®¬őÎ<‹~ďa›ď±şďĘJęţđš*đ­Jđ#Ťđ ŹŮó·`®ćśNě›něÇţ빎µÂNŢń NÔÉŢäeMńb^éŞîëŻăĄNé°~ćÇnă´ń#Şđ+Źĺ»Îă˛~ŢóíĽókţň¸îó1ň/Öô]ó˙ÎAO㥾ęý˝ÁÂýęĽ~óG_ôtMóyîđĄjóšĘđţůď\OňY öý)öcoŇ^¨fźźhźö&mĹmßťë?ęĂţţń˝~éVoÚqć.oőđ;×vßĺIčýNô¦>é8Ż÷–ŽĎ=źĎ0Íô_ě@Źő3Ďł^N÷‰ő‹/Ő•oůžő-^ňVŢô\>řłó†/çŚĘkĎúyďńŽźň|Ďĺ~_řN_ű…Żú2/űgĽůÜůło÷=Şéă«őtżě…*ŰâţüęŽíĚ-ďÓ_ýŇýÜnýŮŹýÖýÔĎýÚţŢŻýÝýĄěú»ÚůĹoü>ĽsŞęĎţ¶Šü~Nóß­ŻřąNő:óľ_ú€"8ňBx¨¸ČŘXč8hy(9ąXi‰é¨©ČIčŮi9€r¨˘‚¨:ęúú +;ţűH»i+Ú¨‹ČʨŚ;|›ůę;‰Ü;ŞĚë,ęZzJ¸şXML¬Ś=«Í=Ü› é+ ˝}žëú~yĚ<,źŘž"ŤŠžo®źÍźŽ[ŻVĽbîöQň‡-`·€ËÔÁ#Ho^ĂQ÷RµRu ˇ,;zü2¤Hc#KňăÍ>A×Zšt„ňĄĚ™4kĘ\g3稖*rÉR'!žB‹=Š4bR¤D!ů 5EFťM—Z˝Š$ì'_=•ú3¬Ń­Z’ýĺPDĄl'"=› \$Őî’Ř6E•Ô0úťšs®FÁm)¬‹7Ż^·G {š[ŹÝ@;úúr*Ć»K ţS†uŘnbĆ‹+'őĚ ň;Ä…-Ł5Ý“ŻĚÍbÁ¶nlöhÖźKű~Ť{Nŕ˛"?äÜűé˲YţĄŤ0#PEUąZżŽ˝_vŐaŽ XźôÚ‰şo?Ź>=lőůĚ+ú®ąăř¨ĺŮŰżźŢ3~AîÁO…Í_Ö^$ë`r ‚~˛ ĂĹő`! B¨`„ 2há„fČa…břˇ!Rb‰"šHâ‰*¦Čâ†#ş"Ś+Ęčâ‹Îxc‹9ŇČăŽ>jřc„“|'•_Íg[rĺĐn˘Ý¶śrQę¤ß”Çń6škRFY‘#!Yŕ–c1i““eů›ÄU%%B®vĺZJţ>Łĺ"_…™d>šµ‚&•dŇÚ™P®—&]Áń#É›X"'čśhvŮśs¬ŕiR›čXş&śqöY¨šž:¦?§©śuŇiĺ{‘ţ$ Qýík¬‡ĘjÉ«‡xy•­´îĘkIŠöz®¤¬Ę•°Ŕ‹¬>fe¬=Ä2›l´Ň–5-^=‹Ő˛ ýéM©śf n9§qëf٦j%Ş„27MvÚj‡¨nޢ»nˇâľEnŞ ž«$¸űf i»Ř˝+oĽMÎŰď§źŢ;k>Í0ú$ÄŽ˘đJ}긢Ľ)˝ťţ 2ÁĚ/Čëk˛şűG,ĄâYDiłŐÎLsÇ´6űHĐ%‰§Ěţ5˙ tťűáü¬ËčŘsĐJ/Ť0¬D Ěj«Ń%3ÓV_ ŚČ3=mqf¬”l“¶Ş5Ť29ôj hľg·h˝ Ëu-ÔIM_ž—‰w‡1˘!|ďť·ŤWň7Ž›č÷á"Ţ`âzţ¸ŽC.xä=6~ąŢ‰*Ś?`ĺSS$Ýü )1›j§Ĺ:Ř ‡|rMb§mrÂ+§ühÜ]›„ú·˛Żnsę¶›ťÚÝ’L*Űźš{JrS-ßĹ|R‡uőÖ ˝×TcěęőŢ{oüGÚXŤŃ%ůü}úŔţš˝î_ŰfţHč«O˙®á#4>éđ7ś±˛·]6áÁ®3Ŕ«‹6$Sţ2•ůKUĎ_üFr?˛ýŹTĽń´ÁÖ9Ścě[ Ű:ĄŔ×±¬Ů˛ĘěFĽö‰aýŰ _‡@â{Ŕ• o¸±.oxdˇęrX¦tĄĐ_!¬Ý»V>î e~ők"Ż2HŚüń¬nTq˘­E\Hq:śExŞvĹ0-‹´Ř"ôü±3I1‚‰bl#{:x3ľoj¤ŁÍ%ś ⑆śŇ]Ä@fÍäÜś‡ÄÍ @vÄ!ňŽ7ÄB®0v49ˇ 9CC6o/Ď3ő×H‘vô]í|(ÂJp‡˘Č¤ÇŠ8şŹŽ‹»Pśä,W¸up¸´eć@çËţ\ţ2 ťŠvI9^ŠDź[f2źyKĎmîqȤP3§L÷Ѥ%žŠż©´?6BŠ^›#őŔ‰Îš‰sääÝŮ™ÎxÎlťőAdűä‰ĎhÁń%íĚ =mGĘ€đ DĄU9JHŠ¦ŹŻÜdlHx•ŇP ,%%j/GúO‡k)âa©ÍiÔ…—dĄ ĎFÉ™X’˘r2(:$lEt¤—Ň# S‰ŃpŃôcëŘ!eR{f‡Ťů,ęvÖŮO¬Ő¨LµŽ8“š«¦JőXűěT­˛Ô©jU”ü él`&ð­rʦÄiSz“±ŢT’kčD aĂ#MoŠh}ÉJjR‚ţÂĄ\ÝhIoę7˛•“»+IďęZ)µ† ÍéÂvšGŽ.Ö@‚…©Sd’ńĚő­vUlYőJHÇPcʬč@AëŃĹr&Ň)ß· ŰőÉĎ«sSbž¦CŹ`ę¶—Ľuf4ł Ía·»ő­p;ÜâąĚ=®s‰Ű[Úş“@ŻŤ­uźČéVv ÖużK+­]Ug`ýlgjÚÓ†ö¬Ś=oiͤ^ŕúň‚…r×ôćU’|±H’Ľ_˛0Ă\ŇńL;Ěŕ¶­M®°{ýĘR‡xľłrfË+`OآkĺrńŇüä˙וć(p™…š™ąâÖË~/…+ěf Â9$PţóíÖKY"šřľGân҆ iüśĹČ‹ĽŘ8#Ťiű…ŇtOu3 ęól…Ó¸ĄŁłÝ䦺ąĐ5n«—ű\ĺŞÚŐ˛fu­c˝j\Óz8ŐtnL[L^ęšZ~f3íÇa¤ĐĆ®+˛_ú_FGOŘ&Vs±#ůÖgg´Úq^3¶WüŕN rµ_µ´yű fĽJ™ţÉoć6ˇĺĚ燸•dŽ·´qüĂkó÷Đón·“ßíí}§Ńu®2žŻSăP+\Ą“ uqô(Ăá9IxÄ/đOkřžď8W|Aq±b9˛mł” *Ńx7[ŕňÖ6ŠUkć‘ű)ŕKÎöÉ»|ämią˝.•/ lüć^a>öÍýť_}×ÜýNW˝7î.ČęĽäFĘĄNtu‹ąçϰ3a·©çÍ"Ââ/ű˛˝{đíBeĎh7»ŰýéÍ´—›íq»Ýr=Q»žwď{~ó~0ťŔ4_·Í­Žs|“Ľčή,”+w4*1>T„ő«gMĚ[_>š×Äü3{Í·Î^óţ¤źĐćumůĂMłożě|Ť`ýë űÔĘöłż VĺÝVşá™Îu˲Kö˛ś#žRÎô(+ßäGúĐŚ{BśyŃN°|¸—Ʊű}ű4Žy÷ąţ%z?Čá/Mż5ó«_&čO«Ěł®äß7=Ůî&vşăżuÇ÷†ÜNĹ:ôY~bşwuď÷KÇoómöf}IÇ€$Ĺxh%€‰—o÷·|ć|wöuQG€;g€üΧxS÷€śuű7~q´~)8[‘·c*č‚Ń~ð3Ů×v/hú¶t7dw?ÄÇç(xt‚¶T}nÔ§€AW|ŠTţgWxk…„ͧ„BçaLČsúçü7]ÜU{q{¸IH\e^H‚`hp(W3hNwł0€‡0 y¨‡‡{‡€‡‚؇w~¨‡…ř؊Ȇč’‰‡Ř„‰Ź‰”‹¸‰‹h‰’؉•8‰ XŠ‘hФ¨ŠźhŠźŠŻаxбH‹§Š®¬X‹ˇ#‹Šx‚źD…?(ŚIqo§S‡ĂŚBQŚâ1Ý”ŚĎXËŤÓ,ŇHŤ×Č+Öx]~48Ť€ˇŤŘáŤ.ČČ}áܸ}ĺŚŕ¸€÷ˇŽ~ÇŽćXCďhńŘwó8Śî(…×aţjôXyĐČŹÄ+řxwú(Ś)ŽhĆ©p{BK6‘Áč,ýtd¸ŽzF b§~y[őh‘:!xíH{&ąwG´)ů%‰’žćöH’'ąŹ4Y“,Éby.y“0ů’te'2y‘6Ů’DY”8 WBi<™FyL)’:iůŚTY• É@R‰Ť[Ů+čČ•rő5”G‘_™”#I–gö>b9–gé•gÉŚCX7IÄ'ymé–z§Hj ”wY‘ZÉ—SčhĎA†tů‚vů—b|yą–_i‡)‰i“„邍é:™b—‡I™•éE—ąvĐ!™*¸™ś‰Łš˘ţ©”¤9m–pš)8šŞů“Đš®™š°i›3ńš2č‘· ›ąi™É›•é›´€Áy—ĂŮ™Ŕiś‰ś˛PśËI–Í ě‹łhť«¨‰ŮɉڙŠŐ‰ťŰ žÝÉť˝čťĺ9žµřťâžäyž×ižë‰žď©žóÉžđéží™žż8{Źť*„ŰŔŽ>Řźöźş›=8 ţ©źHV„nx„҇€Űöoöç€ZgpX/bwK8‚ꄸ… Ř… |š&Ęal¸xşejč6Čw€Ř„-g˘ł 3§˘"Ȣč˘*˘mH˘X‚axŁ— )X !! GĘcIš]Lj~ţN*>PĄE*r9 2ĘŁZ¸†?ş˘řwˇ $|Ť ťbLXˇ`Ú˘\ú˘ ¤GgPH¤,xe3ÂpW(f ˘]ú|F…Nˇołhµů;â:t†¨§=ŞSşŁŠJŁbŠP‡Ćr¦TŠiRú VyNš!zcšĘš śKu¨UŞů$ަé”Öb¦¨šŞŕ´Ş¬ŮŞň(ź ©+—«iȦ>Ú§ú§‘ Tc“fiŚH ¨Ů€«e8x#Ć«a5€XZ€§B4©±§3¶•©—k9r©22zÝZzŔ$®©®žsL¨çyś·®ęjkš\çęzß*LŘşMµúG;ţˇjІę%Z.uĄhhű:¤qH©ĺć“|6ú«é3«˛‰•Ú÷ËÚ°Wó°]Q°Z±Ór±8čT0ş±ěgĄ…Ę…;°iö¬ß­^ŞŁüú†’j‚tę¦î—[Ë{É÷ˇŚúXŽę˛ÔŠm6¨Ćş$KȰÁę¬ţę_7Kˇ#ú¨^V°:˛%­˝«=…{{Ú¦<«ĄZ­E¬A)´6±¤*˛!{Űöcłf‹pQ›~˝b˛l{h‹cË&e+·®@·@ú«ę° VË_Xë«!Ą'+¬*f°ö*RZë·p(€ôŻĚ oo]›€s*‡×·łł¶1šł˝Ú¨S ¬yţz¸nł™Ë;aJ˘KJťk«ź ­Č x §?‹¸űj_„ZšűSŞLăşy»‚¨;wä!±ľű»Ŕ n  Čšv+qÇ‹Ľ+Ľj—°Ĺk=Đ˝g«Ľ¦9yŠi‡»ľă®ăzízyçĘLézzë;9ďľćű·ńÚz+BŻľ¤¸cČĽ›`oň¸“ąUh{“ëą–«h× t~y¬ř:ł=Kµž€:»{}Ű´ÁJŔ‚jŔĂÇZŘw ÉJxľ'nüŔ »ł¬;Á¤[Á3tşkΫ¶Ů«¤Űk,c.śĽ2»2 ·ŘKĂwż+O:ĽĂÖŰĂ·Ŕ[Ű(p”˛'ł˛ĚŔţ&l»¦‹łe*°8:Ĺ6“Z¨•´8kmUĚr' ´Ő¶$˲…klż’Äý˛Ä„;­üÄ…<»$ÜÄ*{x± ‚hĘ´s ¨O{˘0|>RÄŮ»·Ű€Ă?ČŔ;ČŘPČ@sČl›Č9[ŤĽ±ŹĽĆ4ËĹ»ZU‚şc\ɵ‹´PěąRÜŞKş[ś¦FÜH Á+Ƨl¸^|»,ĘŠ°Ä«Ĺ˝wÉJWĽWwÇąĚĆźěĆQ¬»GS˝·śqŔ\ĘösB“ĆxĚ·z\şĂś¸\Ó =†·ÓHÉiiËuwc’ś hŰM®Ő»C&ÎĐŮÍtEťăĘ­ďëľď,Ď'˛zóţĎđ[®đLľîŚĎú\´dẔɻÝĺŔ¸ěĘşĘG™śĹťĚ=ٰ ʸۗ`×Z«ËÉ~şĚÂěËŻkĘyŚĘBZŁ/gĂrŚnÝŻÉ Ę"¦´VčÁN¬ŃÖúĆGUĆ{´jÁ>˙;ˇ,­Ěž\s_ÓCuqé\™ë\F'ÔIÔł°Čč´Íá×O‚Ů=e×ÔÜGNb·Á%­ĆݬgĚ §$»TlŇ\ŰĆrĘ‘‚'ł©ŐXÍť…¤ŇČĽ´kýĘc ÓÄĆR{ŃŁ»Ő/ͧ ×_ĘÖ{Ň0'wW°LŘŐĆŐTűĚ lĐ=×|}ąe-7ćü}}7ŐfWŐĘy~ÜwÔÜţ,]†ÝŮŕ÷ŮÉ(G´ÜiĄsiĺ—ŮWŐCÖ}‘ż3ŤĐF»Ř y!ŠŘ4]ątíµ`\XPýI Ŕf(ŔÂ@ŐŘ` ٵ Ň0‹ą*Ľ]ÄťÓL»(+ً܏-×ÎM°ÝĚ}×Bč“DȸލÝ=]KO×:Ö>›ÝüÓs8—ÔĆź*ŘÚ‘ÖÍPÝÎůlĎűěßýüßç ŕţĚĎ÷Śŕ>ŕ.ÝcÍ7XÚę—Ô·uŐKζůÔ‘×wÚŇ{­ŢY’Ű+mÝ.`MÍť3–ýË»ŤŢŠß(ĆĘxýŢÁüá'.Ë-łv,ÎÝ€MÓ·ý1ÁŢĚÝÝíŰ“Ťâ8>Đţ+žŐzťŢ†ąüKŰ3:gE^Ŕó-=± ÉÓáv7á°`á™–ß±ŐĺŻđĺ`~—O­FQ˝•[îqídÎXžÖĽÓMą ˝Ý ÝÜDţâ%Ýo®ăx>ä'íävç-ĺ˝˝ç_›•ŰĂŮ_ö繪r>^P(Ĺć‰ÝâSžč,Ţp,äJč»úâ¬Č—¨đ]ăd}äAç¶PćAćř”áăH­Žq•ž©ˇťă’šNšŻŽNnžë ĚĽ´îq¶.dŔžäx©Ŕ†NąZ,齬Ű"ŢÉ–Žč§^×”Üi~: ůÍwţ×-kéĎîŐíídlî]LĺňmלŚÔĺÍîŔâŽţÓeEĄNăŃ7>Ţ®PÎÇĽŕ®K ŢĎ®'đßj˘'\č;đÎđżUĎęŰľ4Rż–3ÄĄ#ëmŮ÷}›ľîDČĎĂĎńôăń˛DĘ!Ď›#ď°ÚµęŠś *ď=[ô˘-珮ˑęË˝ "cď.míżmĺýÇěîě9˙ŐDčđ.Ń&ŽęúÎäoJçţKčÝŢ7ŻôĚôמęHDóľá%ěářţŐ±,=ĎÓdßôŻ{'ÝţpjěFuÚ-? Äî‚që^őś]U±xźNsďb! ó4#ó3oó#>ç.ţóY[ÝnÍ伍ł[ôë.ÓCŹőńnôä~î—ţĎůZźî(LůHŇŹů‹ŻÝŽ}é~ÝůŻ+ůFîô•?ú©_ô¦żÉWŹŇbOí‘˙ů|^ń"1Ľ˝,ë\ËçüÂĎ+Äď™BŚĽ~Oň~Ü™ŘěöÍÄVŻUÄďçŔ©ż×­řjíĺnşçNű ŹíŮĘíÁ~| ÎľĽVđNđíĎzń\O®n˙óđńŢ /‚/)…)„††ŚŤŽ((Ž”•–—•*†š)śť—‰˘Ł¤–ˇĄ¨‡©•§Ą­ ŁŻŤ˛…´Ş«¸‚°ą¤¶¨ż¬Ŕ±ĽÂ”Á”’˝ĚŤžśĎĹÍÓşÔŇ˝ČÇ®Ä׌¶ŮÖ˘»ÚáäÍţŕŢĂâÝéćĄĘ“ĺą*ôŚôž•0ňűüýţ˙˘ H°ŕ4}©ŕä‡pˇĂ‡#JT4p˘E ßEŠw1WĆŽ CŠ©¤É‚G)<9*%Ë—0cž«(łf#—VÚś%“f*źŽ|˘Ëě›)RŁ9(»’îHéÜ ©ŇiB·­{z+ęI ZĎ­jĘÍYž 7REkőŘv?Ăr­uô,ˤýŢV•»µZ]»{ĄŞ]řëU±cůfôďËDăäéĄW±W¸—»j\F¸ÎΠCßť,ÚágKSמ.ÍşµÄČ®O®N6¸óěظsű­»ăíF©©ţîMĽ86ŇĆ™ 7ţ|'ňĂy—âZv1ĺĚ#‘ńV‡{uÇŤÁŐÜćs·Đ±M·^üřëŹ}eĹš=ăö™i–_xŻ^ˇ{~µµ›tő}gÝ{šÝg+‘Ć”wî! „•ě4›ĚŇyŘAč‹}agTLLQG_eöŐ!-úŐvQ4˙]˛\r4Öř‡622c :ă'–ěăD΂cŽ;öh>?R"d‘Pą]”©$éb@ýádŚ\˛‚W-_ć"ÁF&fŽ©fšlžr¦mzł¦›sĘg™tމfž|ÚŮ'ž~ č { Z螪(ś‰2j¨Ł„Bşč›”†)g/Ú“a„ţŮĄ—Ë|v8!‚Gîso*~¬*ߥM¤e“­šT*…)˘¨"§Ż†č«­¦†’Ş®»8ę{-b*«#jŇ­˝®§j€Ž(ęły2¬‡Î-˛«(‰žJKl·Eq m8Đľi.µĆűí·ÉĆŞ•řć{Üş÷¦Ąlżú,p,üÚdĺżÂ ¬đÂ^ ÓÁö&ĚđÄĂ%ġ9Ü]t'žË+…ÖĘ+ŇşDýň Ľóz{l˝÷Tî´ą+jČ®’D2˛ś3Ż&[á•TiĚĚÍsësĘŢŇĽŕ€7ş 3şs±.ĐÎąŚ^Ń(ăŞrŇc{őt=ݵĘ=_űţŐW¬öÚAMÉĆ =ÉöÜEZZܶѭ÷Ün†·ß{ľ¶Ýoń…ţý—řŃ˝qÖH#­´Ö9>tè]sĘRű{¸Ź›ŇşůČ/{,3ăé(´z__.NRdťÎ9ăŔˇÍ_č›Ňn‘嬛nvę"ZÍôăŻ÷=ş„e‹ü3Â˙¨ĺń^ďşďĘK®®đż•»Đ“ýËÁ(şŽ‚—oţ1„Gô7–ýĺŽa—čë)éü•Ę_Ł÷?š¤űOZ'˙˙óźýH?öŻ€L ţ Č@ęŻŕ[—Ćgąťď‚ăAÖw!ÜÁĎÄ '¦Á~p°yöXśŮ*W:Íţu+r[› YŘşŢAîUVÔtÇŰaď.-ĽáŻPG­Í­îSAÜŮŞŚUÂŮ­â"ąjD±ý®CÜZô˛7=!–,‡ăH^÷jÇ<óüĐT˘^÷€'Ż#ľ‹Űň⪚Ř9TDQ6#ĚŁgb<ňy.4!ÜŁ GĆíś0mL¤"Á–Ă©•±&\¤$÷xČš¸ŃŠÖă ťÂvŠŠo\âyĆĂBÜXS”ž 7)J®•2"Ľ«˘ «ç˝E0—T#Öd9Ë,úŇ•OśH,C)»Q2ń•§´Ů%“Ć^jŤŤF\f94ŮĘ5î0¦ôaL"9Énb°’2á¦7Ç)8p.ţiqÍ 9׹NsD|ąs;çŮMwbÉ[Â&,“XÍ'rňzŻ„Č01ÉĂ®™Ú|'>ź÷Ë-±™¬,&0iICUňR‰P#Ą>“ŮŹöm‰ˇ”Ű?%Ş;/ ¨.) C1Ćë–ěK§¦> ŠAŔŕ¦0@NsjSśęÔ§=˝éO…Tž B¨F}ÁN‡šÔĄ•©P}ęPŁzT V•¨WmŞU•šS­b•«_ëO•JU°ző¬eujVs¸Uµš5­mŤëWÝJ×¶r®d•jP§ ׯ:ňsy_>éIŘÂŞ$ˇ÷ś`< ËŘĆB±1M!HKYzr´˛Í,@.+šÉjţ 2ýl¦ČXÝ„V´‰,jrZΆƳ«•c»¤ł=’8°Ą­5f«ŰÔöđ¶˝Émo›ÁŰáúăy®…I–śaÜă.¶ąľÍ&pM ]~·şĺ@.dI2+f»©č®óŔK\g¨P»Óĺ.:źË,ňŽB¦Îó®{Ißx˘·´/a{ç‹ ý~ż˝đŻjIŰ Ŕ00‚§ˇŕK$W‚]:đ‚żëľ 3ŁÁ¨ŮîH0láđÎtŔ~ď‡aű`‰p8Äô1ŠWqbŰâ—%-^ń%b,cKĐř·/>‰xk\Šó8Ĺ’%ʆLdó•¸ČH¦Ř‘“ ďjbV”0“<ä)›„ˇţ‚ýŻ–­l8.ć´Y’GĄěĺǦ·ĚWne4gřĚnÉóž‘%8δ3ž;2çĹŇŠĚh^ňžĘÜ5űyĐBÖ3˘M¬ćÁ†ů΋ćQ•# şB;Zq‰t™MéÚ˘BÓ›žt§! äQŘÔ6‘0¨C­hT»ş3ś~µ¬GëYŰú"µľµ®!’ë]űş ˝ţµ°ýěa»đ@˛—Íěf;űŮĐŽ¶´§Míj[űÚŘζ¶·Íín{űŰŕ·¸ÇMîr›űÜÍŽ„ş×Íîv»űÝđŽ·ĽçMďzŰűŢřηľ÷Íď~űű߸ŔNđ‚\Ţ@ p0<áţp¸"Îđ`â@°ńŽsĽ/Ŕ>>ňüä@ąĘSÎr•Ż +`ÁËc>s™ËĽ4oAn^śëÜç=_Áυ΂ź˝çEoŇ—ÎôĄÇŔéPşÔ[ <˝ęX§şÖł.t˝ë3đz ÂŢuČ ěgŹŮg ł»˝íp»ÜăŢvĐ9°;Ţ÷®ľű=ď}<řţđ<Đâ{ x0ľń÷Aă%ŻxÉKţ:¸|ću€ůÎsţóž˙DOúŃ›^ôAřęU˙!ü ő®‡ýë[?{×Űžö¶Â‚ ÝóŢ÷»'‚ď…üáAřČ?ţľň‰Pä7˙ůĚ'‚¤O„ęOßú(ŔľöĄ"dżűß'B÷Ç/ţň“˙(@żúÓĎţ#¸Ip˙âďţřŰţřż$Đ€řż˙Č ŔH€ýÇp€8€ @€ ĐŔ€Đ€Ř€ €¸Ř 8‚ đP‚ p‚ €*Č‚  /(2H5h8:¸ G ç„7„W„Dx„Fh„%7KČrL(rOr3sT8…V(s0‡…4gs[s^xs1W- †70†-P†b¨te¨†K·†g؆MguKWuJG‡T'ţv_‡‡z‡|¸‡iwv€(8xvw‡z‡‡{wwyç{—w’‰7x~§@€‰Ž§‰Ś×‰›č‰ ¸‰‹×xŹ÷ĄxŠKpzŞXz¬¸Š§§zŁÇzŞ—z0{łČzA‹ş¸‹ą8‘ ŚÄ8Ś@ŚÇhŚÂÇxđŚÎřŚŇřÓÖHŤÖ¸ŤŘŘŤÜřŤŘŰ(ŽđćxŽčhŽ pŽëhŽpŽď¸Žńř đëXŹďXŹúHŹô8€ţč€ţ( 0Yą ™"‘%(‘€&h‘)Č‚Y‘ą‘) ţŔ‘!ą:Ř G —’ ÷pqGqçp§qW“!r%'rĐr<ąr>Ůr5”0‡s`Čs<tH)tA×GÇ”?‡P©tO'•Q§uW'‡\·uZهd7vbgvh‡vs7–t7–Ťx–“¨x•Hx–(x‘`ŕsY—tÉu‰—wY——yůxÉ€‰— P€™ ŚąŽŮąŔ“Y™–i™P™™9™@đ™ )š@šPš¨yšŞ™š¬©šŔXšŻ9ڧéŚ.Îx›¶™›¸ą›ş)ŤŃŃř ŤĂ‰ŤĹů圕ȹśĘ©śćXŽĎ™ŽŇÉŽÔ©Žţwť˙wťh€ţ¨€ŢůŹŕ)(Ůxžć™ž"‚¨‚)8‘*/(ź0XôI1ź$Y’6h’ţ„E(„Š„š„4Y„÷„—r Z…j…ˇ4—…A)sđ…B'tb¸ˇfȡ÷ˇ ˘":˘$Z˘&z˘(š˘**o;euler-1.61.0/docs/images/shot3.gif0000644000175000001440000001310707414306114015502 0ustar ericusersGIF89aî Ć 0AJuśJqśRu¤Ju¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Uj9Lj1Lbb™Í˙˙˙R¬R´Z´Z…´R…´Z…˝Z‰˝J}¤R}¤J}¬RuśbR‰˝ZŤ˝ZŤĹZ‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍR‰´Am‹Z•Íb™ŐbťŐZ•ĹZ™Í˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,î ţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•›ˇŁ˘¦Ş©¬®Żł¶¸ą˝ľ-ľÁÁ.ĹÇĆ-.-/Ę-0.ŃĐÓ.Ô0121×ŮŮ3Ř1Ţá2â393ç3:čęę;3îđď:;óő<;ř=;÷úü;ú>xôŕ0ŕ‚<*˛đÇF\ń‹/j\A„ăŠ"DB‚I¤ @‰R€Ë—/1ąÄ ¨›6GE U¨T±‚şJË,XłŇ@PÁŇ^6~IÖËٲ«V­şˇ¬ÚVm1Â^Ű–¸o3‚¤]k®m9tţćҡŁG·^]şřćíĂÇŁoß}FxĐ`B#??\ě°ńâ‰é(™  ,h°@łçÎť¬„ “f¦ÓźŞöóq»}ÇMđőĘ·˘zş°¨ţßKŚäřŘgţĹOÖ—xĘT¦¬ ťMľ@ĺ-Mž9&ö ë~'Ćëąk-[ÖćR!ŔŇÍĆLµH`łN—3 Ő@hIZ‰ľ -it‰–±­xĄÖІđ6°śo‚(äŔ:ÂlŔč@ —wÚPyi›€¤7şIŻnÖ“›Ŕ6EÄ˝ů TÝs@H5UɇcĚ„č~±Â"­â×3I®@,@IĺĆH9Ěun€ĂęźN6ŠÓu5‹–ËĐäłY°ŕZ?Ă¶ĺ‹ x~ĚŠ :¨ B^ĺ„ŕŔš·r`ˇ$#É Tň†ËSž&/ţ°¶ pRmŃ eő˛GĘë T ó÷Ö°3Ań‰x%üâs&&I1}řźü¬ř3ąďret±fr&“™ÉKˇx™±\łĚŇŚ€¦›cšR4Üä⌜“ÓÁd"§8Ç)q–łśŠDç8°Îu¦…„§#A`ĂÚłžjCôŕ7şÍ-nwË›Ť¸˝#2ĚS©˘, g8&!Ί˛Úbă: *WĘÜ‚rňĄź€‰Ę„Ś˘: %ECľÄHđ|Ŕ/Ťé8gŞČp*ň¦‰Ě);ă9˘p’@Ąä=ď‰C hҨźôd'C˝Qbďz|Ű^*Y ţľV˛`bHRRůĘ?ôŐgcQĘLǬ2ϸ$K÷;ŤÉ4±0±†™­!“l2 śµÉ‚8 NŔW”ŔŻ€- KŘÁÖĄ‚' >Np†Ó±Ś g9mšČv˛ó˛–}',ĐBΆC­§Qő©Cš–ź˙ÝŠČZ˝t•LdbBg[±V-@˛Ę­­j ]Ą¤@ÝR&~5,śl´'®)€ R ‚śŔą{…®^O`‚éV÷ş…%Á`_j–Âô»1Ż9Ĺ™Nť~9vúHJBr’–dˇ%ç{I˘b †JU[R9ÉÉčÝ-}Şö©„©ˇ¬Ś‚±j±ţ%yu«OĆ*ş1Í|ڬMgx•ąM°•Şq+*,Aâ›řÄ(N±ŠWl¸řĹ0ޱŚgLăŰřĆ8αŽwĚăűřÇ@rڱWůČHN˛’—Ěä&;ůÉPޞ”§Lĺ*[YÉ+ ň•·Ěe(ă,s’żĚĺ/‹ůČg>™ÇÜĺ6»ůLY@‘ßLç6“YĚf>sžďlć0ëąĎ€ć3’óěç0űĐuNt•ă·ş×MëtłűÝ𦳻ăMďzSyŢöηľ±|ë}űűßHĆ7ŔNoüŕë68Â>î~3üá w8Ä'Ţp9Süâo4Ć7~m…süăĘ–8ČGžkŹ“üäň9ĘWîh“łüĺ‹V9ĚgÎe—ÓüćL¶9Îw~dťóüç,đ9Đw.ôˇßĽčFź9Ň“ţňĄ3}ĺNúÉŁ.ő‘S˝ęż:Ö7®ő­_Ľë^ź8ŘĂţđ±“}áf?űÁÓ®öł˝í˙~;Ü÷-÷ąç»îvŻ7Ţžf¦ďţýßHŔŞţ÷}Ězáóťx1'>鋯÷ăĎüřˇGžŢ“weĺ~yxWľď›'şĚgľůľł ôGýËMoúg‹Ţâ?˝ŕŃ ôΫ;đš<JŹzŰţܸ7Óî =|5÷ľéŞ_yŕďéÓ7~ö<˙˝ą—z5źiř_>>ËĄ/îĂ >ó×§ľöQÎýp{˙óFô“rďKÍ_?ěqî~błşúŻ×8éyýţűă?őóGsG}ö'k;7€»ćzĽv€8W~Ü–xh}¬&Č~ 7€Ř|č€4Űv€ Čzń7~V‡'‚}·‚Ä÷J‡‚§¨ţFÖ.|řr28‚ď‡xč{0q»÷|ýWÂwŰ„7„üw}ĐçiĚg‚Y§„'¨†}˙7kĂ'…\G…÷}Ĺ~XHy u^řp`Ř€xzłV}­7ugČpŮWlk¨kNř†$‚Ő¶»¦{ÄvlO„9r‚×ׂ|j„xr…(kGxiŤ§~Ć…_‡÷ÂGfŕç|mX‰/Ř#§{”7‡4…h‰b‡‰GŠwX„‰ř„śČú×~šX§¨k“g‚X‹$|ńÇč†aV|˝¨Ŕ艮ǂ`Xi?‡˘‚Ŕ¨€ËŘÔ8{ŞXv¬pţ»‡gcX‡ťÖŤĹ„'Ť'Ž-ř‰ĚHŚß—Ť §‡Đ†ŽÁXŤĂxxĹhŚä·ŤţĆ„ÎŠą¨…áHŽShŽđÖŽ9„ßwÝŘŤŮ·|ą YIŠ ‘şg‘ pđxe˝öléxx&l (‰ť¦jlŘx4ř‘ąhoYe ‰‘y‘if ů2)‘Ů/ą“1‰‡đÖ’Sö’7Ů“=‰“…Č“GIŠ “C “č¨o@ i§¨’Ů”IŮ2éŮ—”0É™’t§ŹĐ†•By}~kŔ&k%Ɇ›¨gUY– •bŮlíŘ”N‰‘fą•3% ‘4™—xy“wWţ—ÉvlS™oIŚZi“w‰“ÓXڞ¨ôX†ě•M&—DY”Jɱć•méŤKą™qÉ”>Ynyj Y€Yl\ jki„•čŠ~¸š”Ůš?iµö¦9„Y‰–łçjk … y’!ą‰ľÉ›˝9—ąI݆›¸É€>{ťiśdąśÉȆsŘÔą†ÓyšÝ–šh¦ťÍYśĎVś}‘´'iꙓb•żižO©nä žřiÇé‰ hŠ^ůź čŔiŚ,H™–n÷™ç‰ž,ířźi†žęxâgŹXšLI‰¨©›ŹžE¸źéI€(©ź#Z|¬w„Ţé•i jn ţŠ˝ů~X(|ęˇřˇ*‰’™yü~Ěůťçvź?JŹ=ꄾYŁ@Z‡eXŠ÷˘žV¤ÖW•9:žZg»Ö˘ ŮŹ§Ł¬WzN˙Y›,:ťŕ†™w)źĽŮX¸źZz'*Ł ’m:ŁFJźqąˇĐélXúťLčzC ˇ‘§úy›)Ł& ‹•IĄ{j—Šj¦+Ş b ¤#ޤdX™Ö|‡ ŽŹŠ UjgGš¦˘J áG‰ )§Úž(úiť†ˇŁşśgú©eÖ©ę¤éyެj©Şş‰Ä6‰ą©‚ʩܶ‘}Ú§’X§öhˇ˙Ř«©JËŠŽz¬Î*žÉŹţ± «:¦ZZ©nÉ«Š:ŽÍǬ'ůˇRš¦jşmzH­k¸©˙؉交Ί:j¦'‰~ŕş’Đ‚ČÚŻ4ę­âŞŁIş’qZ©ZťK¨ĎZmüj«ú*{GjŞ® ;® ŞˇW±Űq´”ű±J¦Íú«#›Ż4H®{Ż!›­Î‰nëeţ ®ľ)Ż»Z˛Ű«˦ÓJ±<벍ڡ󚲦'¬”Wź»°ď ݏJłŕ¬×ú˛™±č:µR»­!*“6Ë´7K˘XŰĄR*ź`+ŞŃf{B´ą'˛H›¤1ąµl{§ťř°ŐşŻP›jf¶=;łeë¶'‹«ë|‰Úł& ţ µÖyy¸Úµň Ą7‹·Şę®m+¸}Ël—×z…ű¸*úµo ¸Ę ˛J޵iëą;·ĺYµ »˛¶¨ą–›˛`‹şĄkşˇ*ą˘Űą• ąí9ł [»©Š»”k·š+¸˘Vx˝®  şąşózµh»q›Ľ)ĽłËĽ†;Ľť ¨»­EŰş ĽÔkąĹk­oöwÝËĽx »`JĽŮ»˝J¨ĺűµ];ľŇ[j{‡®®Ëąń»·î«ľß[ŞőK»lć·ôŔ§ ľ]†wđ ż–ůĽ ĚżTKşřZ˝üĽr?Ë‘uKĽű›Ľ ě»ţëĽĚÁp«Á)WÁ.ůÁŚľ&Â(ţśÂź»Á |żú:ÂľřfĚÂ5ěÁ8śĂ' Á:Ăs$,eěŔŻ›ż|şÚ{ÄDÜľIĽÄîŰÄEÜşSęfiwĂ+ŚÁohĹ>ĚÂ.ŚĹ\ŚŔZŔź ĆYüĹ\ĽľfśĆ=Ě˝gLĆŠ6vn¬Ć<,Ç[ÜĆt\Ç^¬Á? e`WĆzüżyĽĆhlÇ‚<Č‚ěÇ2LgČ;<Ç…ĽČŽÉŤ¬Â|eZGżRŚÉš¬ÄNüÄCÜÉ™ŚÄźšĚÉL<ĹVvuŚÇŚ,É”ěĘlüÇ€ÜʱÜfT·Ę¬<ɵLË»\˝] ˆĚË@<ĂB<ËÂŚËÁ ĚČŚ‡qLȲ,ÂަŹËlĚţşÜËąĂÉ|ÍÖ ĽżŚÍŃÄĎ,Ě٬ÍăĆÓěĚá|Ĺ•eK‡ĚĺÜÍäĚĚÔLÎĺ|ÎčěË|ډ›,ĘüÜĎ \Ę˙ĽĎ¦|ĘMĘMĘšĽeEçÎ =ĎńL·güÎ íĐň|ĎßLĚL6Ń­Ń•\Ń"ěŃéŚÍî\Ď©ě… -Î#ÍŃ( Ń-ŇmÎ/ťsTxŇŔ Ó/­ŇľLÓ.˝Ń,ýŃ1ÍoAŚÓ; Í:mÓ<}Ó=ÝŃ1-Ô2MÂLmÔDŤÔRŃPťÓIŤĎOťd.WÔU]Ó]=Ô>}Ő`­ÔTÍŐ?lr,ĹjťÖlŤÄOĽÖnÝÖţ<Đ-×t˛u×ů ÎyGţq Ú×%˝€q|=Řď(Ř†í˘ťŘÇŘ8ŃŽŤqŮضؔ­®–}Ů[Řš–śÝŮ…ůŮ ­w™=Úr+Ú¦ýśťÚ7٬]sĄýÚŤÚ˛¤±]Űív۸-żş˝ŰˇćÚľ}ŃÁŤv˝=܉ÜĆídČťÜM˝ÚĚýnËýÜZ]ÜŇ-Ć´]Ý>ëÜŘ­Ř×˝ÝÎÝŢm&ŕŢăíÝĺ˝ÝçŤÝé]Ýë-ÝíýÜďÍÜńťÜómÜő=Ü÷ÜůíŰű˝ŰýŤŰ˙]Ű.ŰţÚÎÚžÚ nÚ >Ú ÚŢŮ®Ů~ŮNŮŮîŘÎŘžŘnŘ!>Ř#Ř%ţŢ×'žw)nw+>w-w/ŢvŚ&d4^ă6~ă8žă:ľăqĆb>ţă@äB>ä] ޱ¬Q rE‘@Hq ÖT »Á!D'Áq'"bľ“'2<ßŕ"„b(ă@rˇ(Ť’ć:B>2)nn);0$a†? ±CĐa á"Q†n°*C[¶u [ü1+¶" ˝ő*\0Ń .a\ŵF<R"E´QRI‘@{äľŔG|ä ĹĐ !ňę]q$ aaćfaĚaöňnáď;:;’|Ń~±ěÉcTĐ“TŔýô_x3PJ3`ă7ÝCUł0 ¦P V>¦>śA%ýaˇaV• FţažŔQb˘ä±ˇ O~¸ĺşpMSqĺuR4Â' |b @ ¸Ž/‚°XŤ%NĺX“•S"Uńî¤YŽ´Y2Z˘ET¤eT=tZE7`7CDP®ePŰ[ÓD.ßPŻé’Î[5ľ•%ë>żÂéśţé®\""5ęöŢ:¨ľCžôJżôLßô‚;euler-1.61.0/docs/images/shot4.gif0000644000175000001440000004716707414306114015520 0ustar ericusersGIF89aî ç 0AJuśJqśRu¤Ju¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Uj9Lj1Lbb™Í˙˙˙e1419899<9A@A101bJHJADAJLJRPRRURZYZZ]ZbabbebjijjmjR¬R´Z´Z…´R…´Z…˝Z‰˝J}¤R}¤J}¬Ruś)() $  ),) sqsR‰˝ZŤ˝ZŤĹZ‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍR‰´Am‹{y{sus{}{…‹Ť‹”‘”ś™ś¤ˇ¤¤Ą¤¬Ş¬Z•Íb™ŐbťŐZ•ĹZ™Í‹‰‹”•”śťś¬®¬´˛´´¶´˝ş˝˝ľ˝ĹÂĹĹĆĹÍĘÍÍÎÍŐŇŐŐÖŐŢŢŢćâććććîęîîîîöňöööö˙ú˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,î ţH° Á*\ȰˇĂ‡#JśH±"Â0@@ŔF„)˛LŞLɲ€\"xiA™6qȉ §O@| AŃŁF"D)!A˘Bť„ę"E\ÍšŐV"^Ăk䊑łF° U«6‹·pßbÉ2·®–,x·dą«—o˝\´lŃ8pÂZ+ö˛¸ ›.G^ąKË/k^цó 7mBÝ´Ŕ@ŤZ€ëׯ1şĆ Č۶G‚I eČ”1»NÓ%L3‘A€ÁňžI~JÚÓéŇëÖ­!˘´ęv­DÂţ_Ý ž+ŘŻFľ¤_o¶}Y´fÓ˘ĄKżn}úxçîĹ«Ą˙Áý b‡–Ř] řŘ‚Ž5¸ŕ ’µGg¶!Đ °@ hča‡6°l°Ń–щyÄI0ŇJ0¶L2Ń”SM7Ý´ÓMÓQWuHĹ”SM-e•wG’w•W]ťXcuV|g©UĄ|qeiź]xýµ__^&ffc‰1&™c”±Ů…@<gś,@'†x2'† čą! (k#¶FblÖ†oş‘äJÄE:ă¤Č˝tÓ,4÷\ŹŇv ŮÝ@°€$,€7ŢWä5Ů•zţ°˛0%|h!«•rÝ·%~řݵ€‚ů7&b† $ç±sÚ)çu6Ëěł~b¨ˇ´ ~h­†ž8ۉ&¦Č¨H%˝ŘҸ*±`. ÁŮ„ 8ĺŔNÍ %ďP@eďRE>eęSHö;Uyŕ1éäŔFDY«­W^ŮÖ[ ëşÁĂoŕ%_čeńĂ KŕńÇ;˛$Cŕ€Ér˘|ňśÔ§ž0ď sźŇša†¨©–óˇ%ĆV[n ±tBŔBoB#ÍÂpK/=éą/±ËÂË™»¦°]ÖI°”×Y›ë”ą îŞQĄŠęj_u.xćvĹ««ç^ÄWiÖţ\ó}ź@Lřŕ‚ îq|\â,î¸@9ËÉ&묳ŕąź›hµŐbŰó¶D+âŃÍ‚HB°:ŃćŽ{´ë.ť[€L®×d.íaiÖ=±ű#ŘD/Äľ,(Ĺ©ć˛ •©Îýň¨j%kőF Ö@™ýW ţl1,`0úLĐţűL Aűňg Aá÷s¬Ç ÷ňÇ&S™Yc5ë1K ÍlÖ§>ť g,P \3ÁÔť‹‚˛YŽF4Űp7çBÚIś†.Ú „SىďĐ•śŞ/:ěęZđfµ˘$OzKą!ňŇ&•¨TĄ{ţŞÚ@VZ…!ž§+™ú,€·‡©ď‰ńs_3¸řű˙$ 2Ź-Nd_”˛Ćč;™ńrĎŞSSG­Ôišŕ*Řš f#vš;b´ yĐE­[ÚS"ČÎČ\5IdÓN;ŕ!AxÉ^©ľS/yt ©–˛íx§“VŃŠ7°¤Ż„¨äŔ:ĘlŔč@,—xZÚR‰é›€¤?úI±~V”źŕ6FĚýůd]t@H6'•ɉ•cĚ…!č Ž1Ă&ÍâŘsI°P,@MÇIA vpCëŁn6’…µ‹šëĐĺ»™°ŕjżţĂ¶ć“ x (ţĚN:©‚^ç”ŕŔš¸Vr`ĄD#Ę Tô–KT˘F/°ľ pT}Q iłHŇ+d‹ó"׸sAó™x)ăt.fI3Ťx‚Ł­ů!sąń‚ĺt#Ńfs.Ó™Ë[!yťŃ\´ÔAŇŽ&śgşR<ĺä ť—?Ôɤ$«XÇ*±–µ¬ Eë8°Öµ¦•…«CA`ËZÚµ®ęCá?úÍ/~÷Ëź0ŤąĹc2Îc)ŁL h@f!Đš2Űf;¨jŠg‡Ęŕ˘ró­ß€‹%Î¤ŚŁBK%GS>ČHđ|ŔŻŤţíXg«Đ°*ô¶ Í-[ă:V˘r˘ŔĄč]ďŠK hÔ¸őhGCĹ‘bńŠüŰbJY Ć–˛`rČRVËG4ÖisŃĘPç¬:ą&[w<‘é4˛"p±©-"—Ś3ܵË&9 NŔ_”Ŕż. Lŕص+ >V°†ŐÁ kYm›Đ¶˛őÂ~+,ĐJXΖí«qőŞK^šŻśýŠÉbývĄĚdfbg\ą–- 2˱Íj(ťĄ¦PÝVF~64Ül¶7.*€@R ‚śŔÉű…˛~O`‚)WůĘ&Á€_kÖÂö˱łYĹšVÝ~ąţvűPŠBt˘eĄEç|Qâb –ĘU_r9ĘŃ(Ţ/‚}®÷±Ä©±,Ťś˘±kąeyw™«Sć*»9 }ŽĽQ‡x–ÁŤ°—Ź*r/J,BęR›úÔ¨NµŞWm¸úŐ°Žµ¬gMëZŰúָε®wÍë^űú×Ŕv¬˛—űŘČN¶˛—Íěf;űŮĐŽ¶´§Míj[[Ů+ öµ·Íín{űŰŕ·¸ł €b‹űÜčN·ş×Íns‘ŰÜ펷ĽçMďvż»Ţřηľ÷ýě{óű߸Ľý-đ‚üŕ×&8ÂÎđ†[áʏÄńs·ŕâϸĆ1{üă ×xÇţ=>ňŚ—Üä!OąČWÎń–»Ľ'ŹąĘ?.ó‹—|ä8‡ąÍwŽmmŻ»/şĐ_˘1Hz \ŕ‚¤ËŕéP— ¦Nő©» ęSŹşŇ—^t}3pÁ –@ö%0ÁL`BÖî'´ý pćNw(LáîSpAÝé^…ľ·Ý N‚ŕ™…Â{ý2pÁÓoŕ‚Ü@.Đäyŕ‚Xţ.°‚ćĂŔůÎsŢśčĹ`…Ě[Á¨wÁVßxÇ7}醏‚ Ř>÷Ž÷ĽÜěúĐ~tŁo˝éLŹ:Ô±Nő«c]ëKwŃ˙‚°˝ěfG»ÚŮţ÷¸Ë˝îLĎ~ö÷ţ…ľWÁ퀼oř '~ńŚ<ä'OůË—~óžď<čĂ0zŇ›>ő>`}ë_ßtŮžöP`{ÉVqâ¦{»×{E÷{J|QG|VG|Z÷zË'tb÷|e'}Ó×LxÖGwL7wx—wřsç}€×vâ7~…/ŕuO§x®§~‘ç<Đ~–§y™ňzŁgz§ç.;Ŕt®—týç˙§w-p{đ–nL·{D‡€ čt‰Ç€hĆWuPÇtJ7-vHv¸vxNĐKHw!¨„µW‚}w‚'~äׂw~ŽÇx’y4h? yĄ§źÇ˘ç@zţC8„é·tFřř†M8€>§n-vŮ'†`'…Ľç{ż÷zV(|ŘtG÷u`‡„+vg—‚'¨† č!8T‹TđŠy7|çwfŘg—vη€5đ‹.¨z«×.Đ=pyő7z€Xy—Gy5¸~ŔX0 |×H†'xw®‰ČF€áV‰Čtb¨‰S€[g„JŠQç…I7ŠAWŠ3°‚Qvh§ŠowŘG‹˛8‹´č†ŢWł·v»Č˝h„żXÁ(Ś9@ŚĆŚĘř~VĐŚ˘‡V ŚŇČÔ¨ÖŤ. ŤnÇŤSŕŤÇŽŕ&Žh‰3`ŽG—Ž Řtěxţ…2°uđŘ|HŹöČř†úX{´‹˛ř“"Ř}Ţ7ş¸‹Ąř{ ą YŚ‘ďG‘ö§yĘ؇”'y©Ë· ~µ8’N{)9ŽĚ7t-é’/©x]¨–3ů…F÷u7yŠŇ—‚Őדř“ý(”KHHvJ Ś éOé~QI‘Y•5x•:•I†Kŕ•®–’{?7–h‡»‡Ťg‰–ÉçŽhY“8veWąřw.Đ“z‚ý(‹.”x·—Ţ×—ř—ž¸tŇşIÇ•ĄW.P€z©· ÉtŔŘu)™Ü–—‰™™X–AÇ™śč™ęhť˘)†ĐţgšfšŞiwxך±ř𱂞Ůw´‰vh—” ›»é”˝iżŮ©yÄ „Ć9Ś.śŮČ•‘Ův_I’7‰é†’)ťÓI…Öyťž)š¸ťŇ—‹ŕ—špç¬)žäéŹÜ‡¸Čv¶Ůžî‰Ľ™Ś†™yŔY‘÷GśVŮ ąźŮź]  “) .e’ßf c‰ -¨ Ö™}Řů–Óů Ąˇf8ˇv9™w'žTˇmȡŮťj„Uçş)˘đI˘7x…˘ö©˘‹É˘Čů˘éźĚI™ßH č†Ł™Ř‚̇€čŽÂÇ€2ůt ZtÎ7Źr™v;*”~šwpF ™ţěąt ©ązř§Ś[*•‰yyÇŚÔ袌8¦1ęęś”x Ňé¦Hç’/(§í¨xu ň“»¨Šnǧ}ú§˙¨Ei†ţą…ꢚ¨;p>Ŕ¨Á)•¤÷~Ęř=0©żČKG¦2zw4z.6ęm8…Rč©.™}19Şˇi§ĄŞ÷(~'ČŞ>骯ú‚*«czM·” Ů”ą„»zybĐ«ŽŠÁ©’ç˘űi¬–şŤµ¸¬î†¦g‰ä¸’ŃꦝŐ ŠÉ—ŽF'†¦Xx¨čŞşŞ}Ww_ ®yGˇâÚˇlWvćŐ«CHśUé«)Ż—‡ŚÇXŻŐŻ 9ţ™Ý¨©PxxžZťĆj°W…ŇłlŮ–\×ub¸‚ç w©É}kO@ˇłéˇ»‚×/(1¸‡L‡˛îZž7\;óçy†xú'˘8p~‰WЉ0›¦B7łoZłÁ‡ł9«łP·€Ë÷ł@‹ŠÝ‰†Ek´nč#±M;{¨xvP«|f[µë©Đř[şµ]űµň7ś©7¶Tj¶Ł ±J¨wüĘÍZm4şćb€nű©ę(§rű€8+“vk§qé°DŞ×·Ş}Ú7wÖ7›ů° ‹Ť‰Űző yĆČ«˘ą\+ąś'‘*şzC¸›S{§;~µ×ąź ş4ţ0şmë¶iů‰©«…r»–F¸°Î§­Bëv.@»×·wn»›“˝ŰuP—~ŹyÂ۸7zĆëµ:h‘÷IŚT*˘Ď[ă'˝H˝ţÚmˇ{˝,@şÚ šÜŰ˝ß[·˘(ľaGľEІçŰw¬´Jw{”h´Ë×…y¸~:P÷‹żť×µc ü»ĽÍëĽgë|ě†.°¶Ţ–Ŕć˘}Ł|¶¦Ŕ}yČxBś‡Ú7ÄÚWV§}G§}@«}â'»x™}‚š}€'ĹLÇţ§}wx…Ů7هyŽ«}]K?üĂd@ź—}8hŚŮyAĚt0ŕź¶‹Ă¬Ŕ ĽŽ`ĚĂRGuţ‡šCěziüĂyx¨Tg¶Łxxô8—QL}|’ü}'¸»O[xšů‚č:Ś‹i[ĘÂhědP¤\Ęe€ĆkěyůÁëĘÉ•~'xn?\­UČ…<ČşlÄŤ‡ČYw…đH~°˝‚'ˇ8É’lľN`†—ŚÉ‡w~ˢĆé®˝Ę¢ĽĆ¦\ĘkĚtŞü~(ŰĘöúĘ|ľl™”ČǶ\|Aü‹»<Č­·ËŮ÷‹Ĺ×…@:ť§hŹŹĽvśÁ‚ZĹCËĚ»ŘČBÍ9Ś9`śĐŻÇ{ÍŘ\Ę.@ĘkĽÍťg‘(Kżöú˘0ęwĺü„iȬ˶‹éĘ{XŇ&\Ňéşţ›DČx ©…WG“ŘȰ„W¸)8~i\ÓRŔ»¤]ř‹,zĐ}hy•ś =Ę]fÔJťÔ.ÔqđÔqPGąĎX˙{ąjYŃ+€gjÎęчJČ+ýż"=Ň9`ŇV‹Ö)]ĄDl«Ĺç‰]—ą†‡8-§Y×öHŹlÚ‚š,ś\dŚyÁŃh\ĘKÍÔLçÔPMĘLgÍ8hś2¬xÎGĚ7\™mq`­EŚÄUjÖg͇…Lżk­›FÜŇTg¬Mś­Ă¬“8}×8Đ@KÍ”V釽şÍGMĘťŘf }‹íĐ]ű~LWd Ŕ3¬ą7ËŕÚěĽËUZÖiŚÖ&ţ­}ÂřÜ‡ŚśUg„Ôi‰¨zvLWÓąÓŮ—v±=ĐjYĐŇlŐ:z¨<ĘŚÍۇíÔLŐĄěµ\ű~VÍĹ}~Z=xR°ŃąçŮŇÍĽĚ«}ťĚČŕ ľŕ=`ŐÚ·{(Ć˙{¨L7uiiŞx›Ćd'{NĚ‚ĽGÇkiÄ‘BýŃMťÔgŔtg€.ţâ0Žr0ăŮwgđÔ.Ç ©¬·ňˆŕ?'ŕh­L·z^ ľäČŘÉÎt:°Ö@¬ÄŢë–×8šô¸‚d(Ězť E7µHü×<Řa0ŰĽÔ.`ă-ă1>ă3năóŤă.°ăBÍz1X©@«Ü7JäţV›}ŽäIÎŕÚ·ŕNÎĽőĘ”ĎíÖVgĺ¦JŽY^xĐ÷čÎLť‰KÄbnŰť‡Ę­ćkÚ.ŕćśžăOmßíżFܦXŮ]}Ůآˇ-yNŚ;pŕ…Ś˛pl»5Hŕ}ŚĎ­ŮTľÄ=‹á›ĺĐ×°s-łqâ7ŢL©ňwÍ˝­âpÎtlî..L'ś˘nßCý‰¨Ś×ţ'äę6ÜÎäČŘż*Ş}€řîĎďϨ}? ˘MŚ»®›süËtú™tĽ|¶ű‰ľ^ĄP^Ż ŤČŘR ç/žL—jńj°ż. ńź}s04.rNç•îű×uć^ţ ‹©îë„¶+źňď-O•BÍt@ŕúWŇ»‰KéŇČ÷Žqť}4ŰÓżxóô+ĽĂkyeÎyRÍŘ+ă.NŹńońńźí4.ęsň=ž~ś©ę%yŔáxňL®}ř‡z,˙ň>ŘňĘz‘Ú±ľ‡źóKÜď<ß{śąuWx¨Ĺ=m߸_›Ű,îâďôŻž.ń_őnÎíÜžő ]ŕéµ×¨çÎJyžžň÷iöYęéˇ ó–Gśpěö†剾ź\ŘÇu/­źůt^Ą&ڵB-¦ść-níh@řń_ńĎtjř˙éĎíÇ;ĄnçŚ×u0Pňč†î(ţß™ĎöîţňÔ_zc\益ŕGľz}^ĄAśČuű™žŞ}ŻŮ‰ľ‡…Yy Żô ďâNďűőSoř.řŹăĹŘ"źüQËüWý!Fŕ@ †“Pá2 >„¸0L.ÄXÁhĺGÁ=<öŕá‚%sTĽ‘˛ĆĘ•+˛d™ňFÁ9vÜtń±‡ ŚĆq'Žś‚rćĚqˇF©š‚tčÔZÇÎTŞv˘ÖˇÓ4ÍÖ‚hĐ:ŃE.|”-é˘e mÝş]ŔŠ·uíŢĹË‚Ć޶-2ţµâŇ Ŕ‰*„H¦bD……Ă,ńÇä‚G,©ŁfÍ™.nŔţdiC´ Đ1inŢQp‡ÇČ‚*G6Ň9J›:}ZGpŨ¸ nMó Pˇc)ž5«Ă…Žj›çŤ;7ďtęzů˛ŘÝzŕv1ĆľŢÝĐ…bÁ Ś}~KčˇOlÁi>Ď@q— ”Í+Ç?*ňŁśÓ‚ÎöŐ‡Ä"[ŚKĎôA'÷F]§łĘĘč^:‹uÁqŐČĘ)UďŰ…=nç#w>úŕ˝÷>tçăvt[îr©q]H¶Śo˙sp¸üśč§Kśq)łHěWĽX†‹[V,gŐ+Ë,ŃI'ÝôÖ0*S<2}üJ¦|{Ő‚nÇťbuÇҵŮëĆE”dAf'¬é—tţ˘w˘".qŕő˛×:4HAsČAĽÂ˝î XsLłBöÓÄ#č ‰{®v¦Ś„s ń“2h›µŃŹv.@ţ ’;ßą€wúsAđđ÷¶Pu))IŮďdŔ:Ż-‚[ŕt g¸BJ.Áž'GąŠČ&q¬ÓPVGµîp„„§[a×ţsşŔđ„Yăa „†×±­ đj—˙lĽţ0wą]¨„·ăÉáNěNřŻ(J{Ź“R*˛•ĄTr —Ää%]ÉKVRmU˘ 8•9=Ńi ‹4ň,UBĆ I3dĽ¨ńm.Đđ\ŕ^nŔ—řC0˙ţŕ‚`ţrĽĽźí”ą@qg OăD@±‘wiÁ#!'É "8•\ '1ąINz8V %㼗'8*F!eĽ‹&&ÍYd!‡ĽS gIË.µ¬TÜ%/ýŕKbýR ~°ÝíFµ®.•Kq4 P`yMęd3~‚‰ä€“pŞq7JŮhäÄ$J ę{Ą\HŐ31ˇň5‹ˇ [ÇOݤëm˙ "Z_ Ó§ŕéAý§Pv©âĘCQjZ“˘o ĺ2z”Ť¶Ş JgV;iU”‰4%l2őÎčHš,mŁvb#äĚ{±ŤŚęOSé™.0¦O…ůţË‚Tx{X¦ÍŔä̇J“'M…ŢSńbQmNUŁş*8µšUsd‹,JćŔâSľr;€É‹rĘ„¸UX|Ý\‰XW»4Żzý1ĘËżV7`:aáČ“ĂNT±Ř§d9Ů)Üäć*ÇE.r‹[5T2rˇDĂ3űäÖvJÄ1×ýŽŃÂ%”g:N~ńŞĂěî \ęwxĺ+ ÔöB‚0Č{Ű`S Éüź ŮF¤ĘFUŕoëŇ‚ŕZr Ńdqť’\f„ÁrŠ&ĺgAÇ}‘PS–uŻëť…XąU\™rĽKU0+Hęő®—˝ń…ŻAÚ+ĚţľŇÖvĂ«aVhCҞҷ~ +ąqć7FŚQw•âŽóŞ’)ŐÖ2¬®1Řĺ0["®/˘6)Ě4qyMĹ; ú˛Ĺ€DAÜű^řĘWÍ>ť­†úż˙ĹNÇýő”ĚH cÇ%Â-˛‚ü`đ× ¸' ˝*¦Ä…Uj éě°[&„řÄ!씲WdÔ0ŁŘ‡}@ďZ¬fö˛ąÍ‚hoA„gáŃv¦ ëôüă>çJÁ f0„*bb^żË¦ůµ)Ż?!f"šśťăÉŠ…¬d©‘`yĘ­3˝‹2 É®Äă%ŻyA j‚¶ř˝.Ä Ä=B”›.(÷¸qęúţţáĽĺ…ĐĘx díąÖniÁ­‹›\LĄ×˙¶iŔC%ěsĹ«É^˛…Ö0 %iʆHŇ0Ť¸śm´†×oy·­b žůÔę6wČŐýmAиwđ¦Ę•ŽHď;Ů[Ŕq˛µľLâ Uĺß˝xŔ !/Ńaś oXŐ°‡WyFĘç2¶™8Űćýt™Ď î÷‚üÜI÷¸ŮLL“ĹçŠë¦¨ĚŻ%ö·0Ď·Ěs3h©PĺćĽÎy°M\•bGřçĘĐŹĄˇ˘}`ĎŠŇ)¦¦wzĚdĆë¨M=nŰ Zßş0·ýôxĘ6›Â'ŮŮdvĹâŞ"úĽŕ5ąÉ‚˛ŐQoڱ^îBTÄÇ7DE QqW„˝@­č’XW„ÖOUľ«2ěíű;Ě·źék·™ˇJîŞZŮÁRI‚}2”„2,ŠgČâä\™ýňđ×ű˛§9XľB@ľä;ľĺ@uKłçĂ« "[ş8+3pął*—č>·űľ_+ň#?ňŔ<żx3˛»Ű trżF+“b§`YÁÄ©¸rÁ¤ü[(ţ»«ŕŁ:Ç@D>8@TŔ\1ý‘>"˛3a Ľ> k Ě@^6¸ńŔśÂđKţ—0K9D3ÁçJAÄ–řŰďAá°¸qšŠ…Úż„B&„R/ŞŔôACŘA· „!ÔAzµÄłćYBk·óµśA”›ąQD1SD=™–11›0:xŘ ş.ÄśA”@y á/ăɱk{:"䂪4S7äÁ㪶(Ŕs+·Č¦O;Ä<ÄfRś ¬µA$ĸӿviÄ` ĆşąÂH48ܨDĽű ň°ŇÄNśŤ 2žĺz—QĚ)S|±TŔU4„»xEt#Yü4PÓż[LŞÜŇĹ>ăĹ·óED|a„Gş!ĆŐ‹D›)®¸ďbFĚ13€F˘ţśi´!1#ElDĹq+ľĺ+@oDľrC7Să:Z,ÇxÁEt ÄßZÇ›‹;w|Çx„ÇÚ¸zś{T|ÔG/j´~üÇnŠ+j<1Ö*EôZ@uŰFndČăsČpÇ“ ¬ A*ÝJG&$Ä;0Ä)ôČxŚ"⵺s ă1ÉĽCÉf¤˘ęČ€TzIňŇť2Ű€™dĽ8Dľ›4ÇČúâÉQ1ŞźĚĹ‹T¬Ś4±śÓ?DlÄţéź„ęźaÄ!ŚËB-\?®ŕ¨¬˘/ Ě3Čɉ+Š4<ňęťaŞ/„@Ľ »@;dĽ6<9SIË J¶|*·,Ä€‹K`TDşÔ!ÓÄËţQ™»sQ?jë¦LĚ´Ę#ę’ÄGĆśĹÇ„ĂBLWDľĘ¤IĚ|›’mD~=Ő…JY€]٬XŠç˘ }tĆ®ýÇä †]¨?*Ĺ2ÓY7UŞŎź…Eť·ˇŐآ˘H ™@¤] ăŤk۵ň•=­ÔÁŇCÖk˝¬¤Ý[ĐŮĂv”*­e.Šô˝3 m¨ĂĆ#„su‰<„>Ő»ĄţCk—°ŰčA»ä Y‘%˝*śB|-F€eĘ!{JŘ„UŘżů+ní&¤'¨ŕCD(c3őÜÁ Ŕ;B Ň!><Âz!ŽÔĎ[•¶Ű>v”]ŘőŔ[Ňąi52§4Éz “Ú]` +ß•„[›iş/a@äM^ÇS@ť-łż‚@¶Ń›éµÓ(jCŰ[›kZ|ĺČ$˝ó Xd,É|,X/µ0>9ß`!ÄQ§Ča_÷$řŤß?_â«Éä-„śĽ_ÜýÍŻ‹ŽłˇŢ;•9¶#1¦íµ®ů7şë’Ř©¬0Á,˘€żâHši'‰ <¤ ÎLpőQÝAŻ6ü?6kţ>rsĽtłĚůBOZD9ËSĚk«`µ{ŠAb&VV§};–¦\ ¤Ňáeäa ć;هâ8<ű»$6O%6łřlâŞkľá«ć}±®+S»,.ĚűßJ;™ÓŰ.ă{%㛣»Ăµ]e ďŤNŚ ~¶¤ĂÓ [p%Čśâ)ĹsâqsČá Â4ó)5d,F˘i«bőÔcD/F®ĐÓŔ1¶Ą2NąFc¦:’jcÝĺdđä‚)Ž1“Q¦ń˛Ć?ę8T7UŽâĎe^Ç|ĺâ4d™7%˛eýT&ÔeÖĺ>ďóĺŮíµ‚ë N dŰZŮ@fó•©ţ™¤ŁcÂň.‹ł¶j,/˛í6oŁ:« 9m7<$䯓7•ç2ŕbF.°pĘŞĺZË@ł3L2”‰Xŧ‡Ú0źĐ.2ň.ĄP­˙1mă¶=f±ů256›/>„5ž–a:ŕŻ)›5c˝79ů3§[aéľ]öŽn…űŠň‹´IsŚH»´f&bMăŃš$;ą_5ť]łšN5˙Ëé€*čőCY#­Ž!Ĺ+Ń*}C2 ´áĽUżdÄ»Ö)ß‚Hf“–4«6 -Cé‰#LŻ(Ś™¨[âK3Ǭi7sĚ3c5ŰaëýęŻ@é1¸ąî(ţ4\Cç%;®ÖLcöŠ÷ó  ˇÂč°’6ÝRlŁ+ňň!S<łł¦:çcŻ©»ŻVÓŻ;C{%ęˇnǢ*Č2 ®şöŤě,§4¶¬ŁP§Äa'·Âř¬–Ę틇Ýz.3<|ݰţ%źęP˙3dŇĄđ;äB:¤‘Ń )Q&tîÇÚ(č4NZ.ëÎ$PôKí¦’’ď&éÇ(+ńĆň.ď-{•/: ö];€@˙éˇ÷¦©SŻůŢĄú•űV$:$˛gţ.gAüď/«ÂŞŠ®nźŁ¬«*Ěłˇ.óď˛ -+ đ0 ‘Ă֓ġţ MZsáđéóđŢáJřµ_µ€Rbű–ĺ?DjńŔéown§¤Žf.żµ"‹,5hբʆón Ç‘2˘'ĐBĄÂČ.Cś%G8'_á‘rčŁň3„ (˛µ'gbq1đěˇ!뤌R\2·Ä®Z4*‘R ‘>ĄđÖ‘É8ťQőĎafą4°XTr:°ɡűé!×2&_B¨ם§›ťžţi˙:%ĘřGŕVe—IŹ$2'‡2lŐ,ˇŕĎŠp3uR'u–r#T·đ XTŕŐ¤”Ë!@ďť»šu8t%†™\÷Ă?´‘nŮE~´vëÉ˝ ţ˘tK·÷‡27§gBÉSJĎ:+ňˇöRWŹžpŚ#g§Yµ’Ś·wŢŮ©Š őr˙#{—#”@änůňçyńŹ ˛x·9Č *‘ś{{§06ŢôˇëwÁ‰xĐA«ŔŔóh*…ź 'ÁQ©Ëp(cBŻ2w‹WßČxÎ~Ąéř' sĎ>¨Y1¬h»˘bź śÉ=bżČŤĄCá ň©ŚR#Ź@˛ŻšńĂßh¦]ËËŠŔťč¨âSQ=ĘŤ=—¸“´*`ż•ľŘݦ‘MČŐzě® Ęú7__yŤÂhˇő4"‘0!µ? _ߎţvRőM!ĽŘą6Dü+ŕŃ%Ó7RáC#ş<-N–Ŕ¸ |ę°ŢÝHĂ?y× .ş(}ďÂÚK¶rŚ´řµ?!ô‰›Óy–·#â8¦CÜúAĘ)ÔWâ Š[˛™#âr–3¬’}w˙ěÂ_E•ô Ú Ćů/":ČOîšy?űăGˇ‘™Íoţ˛1›Ř h:.îÜÉ“ÇEž= ÷đqá‚ÄBÔcQxđÔqQGŤ 5jä¸C˛LVTňpÁŁ%‹2e®`ĹĚś:wňÔŮ"Đ qĚ%:ń ҤgL25‰ć)Ô¨R›6EęB(J”.Ćp ţăUĄ+?Ćţđᇏj{ĽlëöĺÚf]ý!Ć…1dȸ ´$Si» cřÎ@2„8qbÄőhÜčńcH&]h-łrĺK-zÖĽŮó4jź{WďÍę:Îă Eg+­m{ölŘqXs7ݰ+Ѧ]ëbrĘ—3oÎĽ­‹µcéz ÓwŻ‹˘h\<)R ‚+ă™lޢâ<3ÚioÇĹš5Üźf7ăâkłf•‹&mgjžÖk«ą–•P°]…Q¶9ö]µŰjľm\pź§–CČ%ÇÜcŹ9×VŃő@Ö}Ő]gQôˇ!RH† $^Fťg^zţ–áá|ňAU_vÖ}…– :9OĄ( “9X ˘$Ô„1ř  ·ÍfeP×ńŐ†źYAśCjy¸Ăr9WäDË‘Xâ‰(VÇF™á˘H 6#A–ąp#eč)VăŽďŮźCôŮ)¤uű©’;)Ů$Ą2…xť”eP)Űc :emFYIT—Řő6p G¤‰=śid‘Î=šf‘o–X—C^ŃiçŹy:$#ŤëýyްŠ9´^{. wܱhßűĹ©N“VJi Ő}5Ń©c°ćĺ!&8á_IąÚDa`8]YĵԒ‡ ć0/őÚ‹ öΛš:śŮŞŞV|•ţ¨g¸0ÂsdÖ‘GâÝAčz„"6{v€GG‚e™eJZĺĺRKřÖKmNÖ^Ëd¶Úzŷޢk ”]^:P™–nuëŇŐ.‘ˇĹ ëľ9Ükoľőýč™p–řŮŔ'u0©QŐ|>śyX;$^Ĺ…–qĆ r–ŇÇbĽ+2ľţ™v2Ę*Ż|ęcPfš ÝXeŠť¶îĚ3Č<ĽkĐC ~´‘IĂ)\ŠÖ9Ť”Â{GuGGâFóhŚl•Çw™íRŃi'ůŰm»Ý-WŘ9óu»n3ťyßµw»gµĺaż:.ř˝„އ= ®bV›źŃř0Byź;Źţ‡ĺ†b.aśwěů]ˇŐŰßčk—žZ Âa8~^ÚZx*”髿WoąŞ Ü;çĂ»~#7Ż BŰ{˙7ÔPĂĚţ׿ŘkVĐ™ßočä— mF„‰O|:BµŠ9Śk~d–Ť!~ÓAŽ řÇ=I‘î{ŕů0d>–mĹeë{!ű2†śĄŠ,ĽÝýň§żz Đ!˙űá˙&Ňż>Ę-g!R^¨›8f0`Őę@Á ޡk‘4hz0~ !Éfb2ö$|aIˇ U·Ő˝ĐKP’aWľRñÜđ%¸Ű×˝úç ţpŹ !ë•&#ÇsŘń‹n#'Fţ°jSA¬h,Ň';ŮáŕގȆ‘&%$cO.…F1h«…čccúÜ®ľśJE« ™ÜBî7p˙řŔŠ0t„Î I§ż0±‰iO#هÍčrWĚL%Yä–ˇh›ĽA'c2FPú¤.ń p¬ 7อepë–űTVCşĚ/4ö»żBDŘ žöĽ'=ďYO@Ţ+V°RËt§ĄĚÇ;j€ŕ$¸<…Ę[HB’±1ĘDůËź ň™Ml“›3i7DzpŽł|§łĐ̸ĺ6ݤJ~îŮ™řĹ/{őQź6ͧ>ůI4Z4~M A»ă„Fqţy—ąBŃ’8%ĺL3şOµ-ÉŁ4 L@ŇpŞ Ť+EXăč¶9ňĚ,8!˝hşK›˛Ő¦· ¤ cĽ€ţ´`ŰyŚZ5‡@n"KŞ%Ú±”|%xQͧ ¨ęQ™\5«!ýA8Ăâ~5¬¨[éűhWÇwŇň^»¬A[C[OŢkVsĄ«âŠ”»úJŻFĺk¦AĄfl3+,śtŘŤv”ŚWĹ* ´ęÍČžq˛iT™e/»RĎÁ˛g8<‰öCц–´D,’qää•ÁŹ>y şPŮ"ʉµ= a…¤4Ýî“·ź´*pYđN„,#%écLúR¦«Ąţ“Ëc‚'˘G=F„ť ,Ç(xÁ–A…ż‘i" |ĚfÂ&µďńŠË Ü"$7rôĂq–u)0 ŻČ˙ oů8ń®h`Ń!Ťň•ç»ĺŠĺwż˙ p#ÎćhÄyÎů&K´öü–?·ţÁŁ…>ôŠý–HßŇ?Óľ¦›yßíŃF>[óZëtŇşö¸®ďŻ˝Uqˇ4ŮÇlłź;śd1Ž[Ň4‡˙ŻÁ,—»Đ»mĎ>öÓC‡Ó;Ó˙’ä™đS_Ż?iNSë_Ľ%Ë]^ě8>ćeV¶Hą*ÎÖ8•Gřt8”yţlŢçťWđçC?qŃדôD3}t–î™1j­}Źb_őŮ[˛öľ=ľß=1KÚße{˛Qd_áźť|Ç Š”ßÍ·ÝŹ5đ|×Éľq[ Ś^•đdęm_ątÂ|ßÔ…ŚČŢS°ČVl…íY“ĺ㽜qŔŚÉ_đqUýţŤŹX^ň•ČňIóůĐó%X ŕô`ő ©% đHÖŢ5ŕńxźąŢlŘŽ_–žźâ^×é^ű} ď˝đ  źýˇţĄ`ßđ˙UŰ-ůźç  ôIőŮ€őmĎqěŔé­Ä*Î’ś‚^ťŽAn®Ř…]‰´ äťŮÚÜ "ß`Ţţ1_Ďůß˙A‚ Ý‹5á â¬aÁ°ŢľŢˇ ˇĽ‘źpĐnŕvŕî˝ÎśĄˇ™Ůe^žţ˝Äć€ó˝  Ä #>b F˘˝L"* ¦l¬ž>&Â'¦Aá]’ůIúĺ!ţ ±X±őŢĆ_*žŰ*Ţ_Ú",""ş-Fß-â$†ľ`_ŞDÇcfb1ŁáŐmŃ2®D3Ž˘î!ĚĹ…\ü ŠÉ5Ţź+Şŕ!˛`˙ý6"č‰c.’ăöâ9˘Ű4u‰0> 1ŁřubĘă2c¦ź×Ý#ŘĺŁĚUÚt—q• ńˇ`ü8×´1\táËŰĹ]ĆŃŐ-ń‹‡ä:FdąôÔ´VÔáZĽad<®N_ Š ¤‘"(ýîăءHdJ¦ä®¤Yť•Kî˙Ő‘É ¶ŐäĹŮ]Ć%ÝY,ÝVČĚÇ9NČĹ•ÚPž„€%žR2ţˇoŰ4ţaIâÍ5ÎEKň\ZÁä˙BĆŕ—ÝĹ…ĐÝZŽş­eň UP"ŐŕÉŰ]Ń_¤śöÜ%SŽ™HĘ®Đ_ÁQĄ ‚…`fĺÂu–&Ä X曂ťc–Ą5™ꥥn¬[†„»aŽ×<Ô"™ÜŰŁáĺbÍW…9„}=†äM„~Ą‹Šô×ÇPçtF‡E ¬Ń Ř·9Ş‘ç—E.í™’QÜĐ †mĆcx‡@ř•pN] ŻL‰…HČ„s~Ocő_ÖqÜř`ÖruZ†ŚÉ›ąJśőýXl¦ZŤg‚ĺ’á!1™źŐ ‹Sţ Ú­U١eĆ®YşüÚg.gh.V čü™ć"¨:µYXĚOđđ쏄ťť1ač¸ič’5ŮŠÔ­ŐZfŚ¨Ô aH`ŮÓ,šç4šŁY‹zÔ‹ňăp ßđÍ(ŤŢX§Ýč†ŔÉ«< ŹŢ¶™šöQ˙ŕOl¨‘îĹł$iĆä “’¨“Ş”˘¨ŻMéÖ Űr“pőc VęRoČÎÇHVÂŮÎsí@’m±UޱUň‡‘„Y0 w‰ÍvĽáôŐ|`Y`t^¬ţ´×• ŞŔŤŕt’ÓIŞrqZ^|ĆŢ(śý@ţHlęSĄÚ” i*ju*‰ˇţ¨bލĆV“BMÔŘŮxŽŞň «‚äË˝ŞV^Í*:ŐęűÜęH%krV¤JęŻbNÝÓ°âŔ¬€hWjU˛.«a4ëČA«ÂHë´ZTČN%¶îž¶J^Ů™r˘ŠU¸˛b®îŰÍT˝|ĄžšĄîQiĹ Ľ˘ÖĽfŮS°Ł[2+ĂU“ʇ©NŞF!V«‚’¨8ť$†Arąú´ŇŤćĺíî@h„†.–ĄbhĐđbđč %:]e‚D¨î•˛$ËeŚŞpţŕS,Qа§<Ęg ě3˛źhÂěHeZÍŞ*±O˘ć,!"Ď&G‘äŃ,NęĐYŃžţáŃţ"0I°%ÓŠ¬GT Ź@އQ-X­Šč‡Öú×VË{í^v•؆U{’­Ů2¬ń©¦+FŹą­7ňQ[ÍS†âŹ9žă†ŇÚł^†ß¶CM-aTm•îYî˙ŞËN%ÎyUu(l ­Ź9)ęąŐEŽţ 9ö.u.›)čâ đě$’néĘçéNPęFŃô@Ô]SE Q Đ.…Źt†ÓŮĺî·öĆ·@É4ÍÚŞđrH™:Ä™úŹ" í>Ťc›&/­ĹnJć_(’ă,©pBNר®Uoq6‹ndŻŁ n÷¶,ɬ—jšůJ.k¸ĆظĆ!á¬u,ęŞţ€Z¨E¬Ű˙xnÁŐ/…F!ᅬŏ,2%T_ą3ER˛,Ď•Ś%}b íĚ^“÷šP 4f™_¨ë «ÎŮn03¨;čVj®“°¸™p-“©đ®°‹,ŕŰ ‹G3ý-Ő`QÔäpúfRGb“±×XűĽźK…´+Ý*X Đ[“inćRuˇ_—l¨Y$ŃŠpń]yqxőmCRą‡B™±Â ń0úýđ÷ń(aV˱͠oLŠ Ž®­LŐŇőR¬˛ Ç ˛^i‹ĚGE°#/UĚ$Ă–mĐ4uQQo2ţŤ†UGI̸Ý$qS.sŮĐ=ęî Íńě‹Ńr®l×ŘŹßí­aŠHÎóDʞdfĆđéQÖeRjr餌'+ě#3'3“)çls9Şąľ¤c3nž–O5M€óOŠł@<ňŐ8:JfŠMÖął—Ás“8ep3:ąŃÜÜłÝr…ř†˘j–~hĄkZóńţ˘!śČëg»Ĺp2ôó@Ź˝`­3;{fč$nÉ,.7¨<{k×ó”Ô ąE>ł>,k6d*óN©4N†.]P‡AĂô«ÁLÓ´ÖTÎM»žKtg~ĆŮxY1S F?Ćg ţHlČ̨XŇD\sĆ*Ą“uÔײuŰN„«MÄöÄ“CĚËw*™~HgűĽçD}ŘČň‰Ö8„APŽMw@č‰C W~ĺÖc¤őE ur%ó·Ř33o |ôÍ ĂBŰΖđęNĐ&ľÄ¶a×J[č‡Yě&•€¨CŕrsF¤B Xʇp†´n™ŔI*ű´µo6ä1_6R§TQ ö*­¶ĺŽEný AĆv?Ń6ż(‡!ĚÝ6…RőH™łF·AHŚx`PH0• Ö–A•LYôÉ´€îÚl[7•,H„p‰RgEŻög´oC˘I,Ę6y—w!c±đ¤ó’ţ*”äTFz Je8 }Ź„`ŤM~—›ň÷µ< +ó2'HQŚŠ8Č‹ŹĘGg0DłÎeˇŽFřľ¤‰éq3YÄé‹˙Čb9OŽbÜČdçĂLrH¸á6ĘCŠg÷w±ÍÔŤ„ŕ†ŚăFvÔ¸jsYŐÎÚ}H‘đ¸a# đůX9 ÓG‘ŹóÓ"ąA(ůd7ůex”ż®”k,•¬¤•md9ÝÔ—k‰—ů—Üř]4kľ/lóř¬üř­ pl±}9atµKzŘůAŕy?ůőňyŁř9ŠWŠŠ§ŹÍ$5lDHŚ? „ř§ş0zŁëÜŁ÷M&YŹÇĘŹGţ®¤Šś*2wFĆČ{xz’_D±‹xDQŃö^í”§:¶uët‰—?Ayű{Ĺďz÷+.ś¬0‡Ýă=ĽÇűŢÔÂ0AP}ŕ[Äŕ>FÔČá#JâĂĽoLŚ˝€´@»γ8UU$Ĺ–d>H÷…ěŕąęř™|r4ż‡Ü6d"­o¨ Ď űýęţëţd,ą3 DíĽY“îë:đ żđ+EńÇA#? )ż®3ó‹>ôď…S˙#4@Ě™łĆĹš5u길łđŽ‹<÷D”8qŹ‹z:´łţŃŹ.ş0cFäcLţřábÇ-XÄ”)s+fćÔą“§Îe€‡hŃ8.DŽ<ł”é9Oˇ>uőiÓ‘#Ź J†«‹0_ĂëBĺJg]đPŰ’mKou°lŰR-g}X±âb/JA]0) A¤u6|‡˘D/b̸‘ăGs’ž49fĺĘ–/{ÖĽŮ“tiźBQ—1ZéŐ¦L©BťJŐęŐ¬r%ă¬X1dUŢE[w®[¸rçŞ~V/_͸Ë^:x`A‚.3t±ńžÇ/.vAŮNG:Ô3űĺLV.hž˘qš–OúgęŐDGŠLjvţlŞłý“Ă*ýŠŇM3”|Î,´zh°.Šs‰­\.Ż˝ú2‰5Á.+ě:;đ.ęλĆÄKĚ<ŇhQ:ş"Łłö`zϦřćË1§úP»/’ňsm©ŁĐżI*°+”«¬ĺ\h°‡#DŽÂ,l.C6ś®CëQD-2ń»‰RÔîŁÓx1Ć?«q'řtĚ‘dâq¨ű€ĽJ©!‰ ŞÚ¸TrÉ&+ /°t¸'¬«ÂE1´B˝.Ď@Ď 5ĘsÄČLě.Í…ĚkÓĹéŢ$KB—B»±ÎůîĚ35ŐîŰĎĎţ ”PŁtŰŤÉĹ«Ń)…t‡+łţäËŇÍ0ŐÔ NÇ5TŠFmČ#SŰDu7UmŻŐŃ^•ĎBʨr = ݦĐ-˛\w‘‚7°üĐíÝŃ]âĐmk_*,÷‡ß~+w ÖĐ˝ ]hŃ-]>ř@©2*—ÔóĘÍ6ÓrÉŔPâoq —´qYŕŃÇs…|-WAw5ÔWD•µbŃa©4öXI±,k`Äş”(é2UxShC$łL‰ ŽŘŃĚHĹkYÔĆm1\ŐE6Ťd“Oţů* q%ŇČŘM×Ţ_ÇŇk/}]«8+qVpç±ý™Ă6 3Ú‘†)¦%ŞvŨݤš/«±Îz>®»Ţl@›6¦ţčuůŔŐ^ŽćbýŤT­ u&ř·şŹşłĽÇŰűčüŽpŠťVăS3Ť±jomWqÓ?Ůń”s•<Ş˛-G;ŃŕŘ&Öíąŕţ<ç˛D?é¤f…6,ő˘ĄeÝő3ŹýâŮĄ¶ýpÜçtuwŢęÚë ˙tJPᥜ$ł 4^AÍŁT·=řy•˘G: 9ëCŞÓĂDZÇ=ŘĺA!˛C í¦ŁŰ}&qçŁOúÔg+ŕ­ŚH-#ĘŮ`¬łlnyBVčx&ź•ÎKx{Öő>Ĺ7íELTŢł°U8 ŽŹ‚ą ™wŇ;őéVă Ůä—®8ÔĎ~"ôAţôgł›9OncQţˇ_¨çBNÁ0†ě QdñI‡ă!«|Ä E}?Ň ŚxÄá%‘W‡ ˇJĹšë„Đ#“Ň5ŔęmŃS]D`ŇjČŔ§ť‡ŚÚÚˇ—F5ňDO\ SÖ”#ľ&‰B1XÂâ$<âEŹś‹˛(…!@ĆtÖ9vD4˘ĹL <śeBâHný ’ĺÓÝ$w4«!i?śt_l$gĚ3Đk+]%°Ç ¶íŹyý›^´ôV¶đtÖ«C,·Ăî|'2·<ŹÂtŮ™^ę„NŔ<Ť}řDĚL†­HHä$1›ą›gěI¤”Ň;Gśa ›óË6Ď€€)!ŕśĺţ8!ća‘čŃ%phTAwĘ ž—¤×<ă({ľźąqfořÍ'ţÓ”ź±ć5/äśh ­Ža:¦‡6†śuHEŃY»ma4NÝhÉfeÉsS™FL¦ü°Â%č|Ą<{’”ŇRB¶Ŕ%.§TNAťóčÔt0ÂNIµěť¨–’ŃGV¤°ü¨‡¨.‘;ÍwÔT˛G>bjSYU3dĹ“'ýŠË"%,µt\5áW™!°Ś•)6őBĐŞ‡¬U"ĺś(eĚsÎĚu3uuŹ/¸Qľî©V U™®[¨ÂÂhźVU VşU¸<Ö.Ý (q“©ĄXÖ:U‘Zţe8Ďľµ<mf̰™”xĆ®FUmRŮ8Ĥ45¤“[ŠźdŰLÚVU ‰­PnŤóŢ>1˛żť,P„›Đ˛7!‰™h8Q[~¶2¸„®tM{ל´SŻ%Ó vł‹ r—Áß­\„˘PjÉĽ‹ĺW1¬^ϱ÷Bî+Pú„  jpÔ`\†Ü7żm-@›·Ń ŔÁyËińúËŁ¶ŕŔF™­ü8’ć‡5A‘0X(śF4ĂqŮ톅“9Ţ„7!q‰Olâú®x;kí©E^cĂ̸$ϱq\<ë•Ç\A0­Ľd ™Pý™‘53ae]5JLľ1şžţ,P ĄĂHyoB,â›XË[ľCFđ›Ü/ëaD!â¬Gćčšy%7N3MňĘćceD 2wTd HWĎzyRţüě®"EĂ‚&´”ťčŁřÄŘq4¤˝¬_J»ŔŇťĘ4f‚TăNŁŮşîlÁłˇmiGű%-@Ę´±mílS›ŰĐ®¶´żýěko[ÜÜ÷´Ă=nm—ŰŰí®öąĎÝmpË{Üďf·˝µÝěď›ßýö÷ż% pśŕWÜš ž“XéčN$ÓÚÂaĺpqA|â/MĂíDń‡[q;˝*ä'9ÇGVrž`śá(—Ç?—Ż\ĺ@d9¬X0ţsťÜ\ä׹Âkţ*Çüç@/zÖ‚Ţ“ŁË<é ŻĎ7®Ćˇ|éL_zÓţôŞç|ë]÷ú$§s±ŹťěRuŮŃžvµë(ěkwűŰŃŢv¸Ďťî—{Ýńžw˝Ţ]ď}÷űîřţwÁ^>'üáj'žńŤWóŮůÄ^ň•‡;ĺ-źů´c^óť;|VzŃŹžôĄ7ýéQźzŐŻžő­wýëa{ŮĎžöŁ·Éíqź{Ýďž÷˝÷ýď|áźřĹ7ţń‘ź|ß@Ě€ €ç ¨ţő­_€Ú÷~÷Á_ŔâGŔř €€ś_ýě?@űţů#ňŻý€€üď_˙@„Ŕ˙€`‚  đ‡€Š€°Đ$°‹ŔŤŕ Ś`Ť 8Đ=0 Ś@Ip± N0µ Xp ˛`]łŔą@ ¶@ j°»µ`}Đ ~° Ř  p‹p° Ú@ •–đ W  ˘pÜ  ¬° ±° ŞĐ&şĐŕ ĂĐ Ăđ `Ŕđ `€ ݰ  ŕPĺPâp@`őpýđ˙0úöú1 ‘ú¬Ź ÁoĘďĹOüČOŃďüČŹý’Ž@ţ2ţ1ţ:qţň/ţţoG±ý/ \q]±p!Pż uQyQGP… …‘OđYđµ ťŃ&&Ŕ&¦q. '`2@˛q$`¸ĽqżQ4 % ŐQ@+€%ŕ$ŕĺ± ÁđĂp ϰőńď `ę r  ÷ů˛ů "§Oú ű@ű˛/ü4’)ń Ŕ#ÝŻýŢoţčĎţJ2˙đO˙úď˙đ˙Đ%0&‡PiŃ#ĐŤ l> ~ň„(‡R(§E@(?€>@€FŔ)ˇň)ź’¨˛*«˛¨Ň:Ŕ¸ň,Ŕ+Áň+Ĺ2/€Ą1´1-Ńr-łQĐŇ·Ń#@ć˛.érńÓŃřň ÉP Ó Ńđŕđ 3áĐ@ 32Ҳůŕ2±" ‘ Ŕ» @sŃďÇoQ”o5Ył5]ó5a36e3÷;euler-1.61.0/docs/images/shot5.gif0000644000175000001440000001220207414306114015477 0ustar ericusersGIF89aî Ć 0AJuśJqśRu¤Ju¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŢÚŢ9Y{A]{9a{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Uj9Lj1Lbb™Í˙˙˙R¬R´Z´Z…´R…´Z…˝Z‰˝J}¤R}¤J}¬RuśbR‰˝ZŤ˝ZŤĹZ‘Ĺb‘Ĺb‘Íb•ÍZ‘ÍR‰´Am‹Z•Íb™ŐbťŐZ•ĹZ™ÍeRŢR˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,î ţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•›ˇŁ˘¦Ş©¬®Żł¶¸ą˝ľ-ľÁÁ.ĹÇĆ-.-/Ę-0.ŃĐÓ.Ô0121×ŮŮ3Ř1Ţá2â393ç3:čęę;3îđď:;óő<;ř=;÷úü;ú>xôŕ0ŕ‚<*˛đÇF\ń‹/j\A„ăŠ"DB‚I¤ @‰R€Ë—/1ąÄ ¨›6GE U¨T±‚şJË,XłŇ@PÁŇ^6~IÖËٲ«V­şˇ¬ÚVm1Â^Ű–¸o3‚¤]k®m9tţćҡŁG·^]şřćíĂÇŁoß}FxĐ`B#??\ě°ńâ‰é(™  ,h°@łçÎť¬„ “f¦ÓźŞöóq»}ÇMđőĘ·˘zş°¨ţßKŚäřŘgţĹOÖ—xĘT¦¬ ťMľ@ĺ-Mž9&ö ë~'Ćëąk-[ÖćR!ŔŇÍĆLµH`łN—3 Ő@hIZ‰ľ -it‰–±­xĄÖІđ6°śo‚(äŔ:ÂlŔč@ —wÚPyi›€¤7şIŻnÖ“›Ŕ6EÄ˝ů TÝs@H5UɇcĚ„č~±Â"­â×3I®@,@IĺĆH9Ěun€ĂęźN6ŠÓu5‹–ËĐäłY°ŕZ?Ă¶ĺ‹ x~ĚŠ :¨ B^ĺ„ŕŔš·r`ˇ$#É Tň†ËSž&/ţ°¶ pRmŃ eő˛GĘë T ó÷Ö°3Ań‰x%üâs&&I1}řźü¬ř3ąďret±fr&“™ÉKˇx™±\łĚŇŚ€¦›cšR4Üä⌜“ÓÁd"§8Ç)q–łśŠDç8°Îu¦…„§#A`ĂÚłžjCôŕ7şÍ-nwË›Ť¸˝#2ĚS©˘, g8&!Ί˛Úbă: *WĘÜ‚rňĄź€‰Ę„Ś˘: %ECľÄHđ|Ŕ/Ťé8gŞČp*ň¦‰Ě);ă9˘p’@Ąä=ď‰C hҨźôd'C˝Qbďz|Ű^*Y ţľV˛`bHRRůĘ?ôŐgcQĘLǬ2ϸ$K÷;ŤÉ4±0±†™­!“l2 śµÉ‚8 NŔW”ŔŻ€- KŘÁÖĄ‚' >Np†Ó±Ś g9mšČv˛ó˛–}',ĐBΆC­§Qő©Cš–ź˙ÝŠČZ˝t•LdbBg[±V-@˛Ę­­j ]Ą¤@ÝR&~5,śl´'®)€ R ‚śŔą{…®^O`‚éV÷ş…%Á`_j–Âô»1Ż9Ĺ™Nť~9vúHJBr’–dˇ%ç{I˘b †JU[R9ÉÉčÝ-}Şö©„©ˇ¬Ś‚±j±ţ%yu«OĆ*ş1Í|ڬMgx•ąM°•Şq+*,Aâ›řÄ(N±ŠWl¸řĹ0ޱŚgLăŰřĆ8αŽwĚăűřÇ@rڱWůČHN˛’—Ěä&;ůÉPޞ”§Lĺ*[YÉ+ ň•·Ěĺ.;,ŔÁ|&1+™Ě^NłšŻśeyÍpŽó”Álć:Ó9Ěcľłś÷Ěg#·ůÍ}t ól&=ŁĎa´˘áüçE;Ît>t¤]YçG[šÍZľ´¦©|g;'ÚĚeÖó¦GÝäF“úÔL>4ŞW˝eSłúŐ°Ž5¦Ý,ëZŰúÖIv5®wÍkVëş×ŔöŁ-ěbţ;ÎÄ>¶˛—mĺd3űŮĐf˛łŁMíjł`ÚÖÎö˛±­ín ›ŰŢ÷®Á-îrËšÜćN÷ŞŃ­îvošÝŁá-ďz÷™ŢöÎ7Ł3­ď~›ßţx ń-đ‚K™ŕOx©®đ†·šáŹř”.q‰SĽâż8Ć®ńŤĽă8ČCîď‘“\ß&?ą˝S®ryłĽĺî~9ĚŐ-ó™›»ć67Îsîíťó\Ű>˙ąµ.tj˝čĐ>:Ň™­ôĄ+»éN76ÔŁţmS]äVżzÉł®u”s˝ë+˙:Ř].ö±ÇĽěf§9ÚÓ~óµł]çn{Ďă.w Ó˝îCż;ŢŤ®÷˝'ţ˝ď~g:ŕ˙ôÁ^ę†?|Ői­řtO˝ńš~<ä--ůÉĎ;ń–Çuĺ3/čÍ×:Ď =Ě=?ęĐŹ™ŇK6˝ęMďuƇ{ő_–óęgúg“^ÍŞż˛ŞQMűÝźó–†ýš}o&$ §>=ńa}ű/çžĎË?>ň/Mč2óşůM&~ďEĺč˙ѵ?ňň_ŤýT{yű W2’`|E‡?Éă÷5đM}ôzřďOýőçßçřË^Éě7}…f÷‡dů—}˝V~ú|ę'€U6{€ü× d{Vćë6ĐWGÖ~q¦đ'®·k"‚–$h&čg"}˙ţűW‚¸v‚i¦jŇw9Č‚5č‚7;ČççăĆ{†EX|C8śÖ‚Ŕ¦„]FfC¨‚Ăg„š‡„N¸h`V…VŘXxk ¸€ŽÖ…^‚a(†Z†ŕÇ^H„\&…Ö…Q؆nX…lř„tŘkr¨{®Ô„+H?l}†2z8uX†Hv(GhAČř}`‰Y(‰·V‚‚ޏe…ȉ˙¦‰¶&ŠsÖ€;8…ihkcH†î‡Š€¸ŠOfŠ‹ÖŠgf‡Ť¸~Ň€p{‰@8‰\‹»h‰§ř‹jHŠź‡‹ž¨‹CČ~ÇŤŠ¸ŻhĽx|×ř…Śţ¬¸†[H•X…Č~Đe}H‹µčŤy(hŃ7ŽĆçŽďŘ‹؉‘ŚÂȎĸîXŽľ(Ťő(lčhŽÖŹÎ‡ýčŹŔĚř‡ŘŘű(ʍGŹ I IŤđČŹŰČŤµf‹·H‰žHŽ^¨‘ć'‘ÉhŹ›X‘LH©Ť‰IŤŐ‚ŮŘH’% “'© idÉ’)~&ą“<9“F¦‹×xŤ:ą‘{(“ŕřI™ŠK™“Mɇ=y&?©‹˛Č”Óč”x”ĹčŚ~Č‘©Žëř”wřŚ.)eç¸x(™’Ă–g¨Šdů{ĘXŠpö†zą–[I•]i•i¶—{Y“A9ţ‹CŮŤwąŚjöŽ„)@Y~inYlÉĆf;¨H ™Ůx™lY—vů–p‰Ź+i“»Č‹ź š±ć‘®ř•1ř†5©”’9•e™ŠIš–YHů\)“I™qŮŚ„Ů’bů’©l¬iś® –ńČ‹đȽؖżY”hi™"•±ą~8Yh‡‰˘‰—F™›×YŚŮIB©šĚg–gŮą8śĐ)’»y‘$)ťČ©žXť©ŹäxťăižsH›ˇil•™+ąźH ź#ÉŹr8 Š–ś#ž9žjYžúźÝ‡x¶y›Ë™›©ťj űYŽ Šˇß žřY|±Éźş˘):}#ţZlú '*— ˘*˘Č÷˘ÓIťě •ęoh  ˇLxŁ6z  Ť:Zź*k *ŁGů“6Ф*¤Çé¤%Şˇy©—(ş˘ä‰¤JźZzl•©–°éś,ަIZ“XšĄŔŁóČe¦y“ň©ťŤéŚęˇazĄMZ¦Eje7ůžwš ZĄJÚśLŠž«iź÷eŚ9Ž…:¨â¨¤’ş¤Źoę›0ꨏęd|Ş˘Š§8ú—Ú˘wjž§žz…šŞvZ§#©§xާz§Ü9¤D¨OV«-Ц‚ů«‰Şnš«pĘŞO ĄPć«?úś“Ş›Â˘mZ¬Ćzˇ$Şlţ"¤™:ŞÎ™‘ŤY­śşŁ<Ş~©Ú¦ú9¨jĘ’Ăé­íšŁŚšžÉkŮš˘č©ÁJ©|ú­üÉ~«Z• ŞöŞ›řš¦¶Ú®Í:©öúݰMF°ĐY«±ú¬«°‘Ú­KŠ|9§×j¦˝ ®¤*©ň™§°z±ěа™Š5Y€Ę ¨Ľú°…ĘŻIYާ‰±¤J¨UŞ˛nZ}Ű©óJŻËʬúI±# ­"k«z®ëźȲQÚ ­ęŞËJ˛#K±âŘE;±8šŞ ť¨|…÷ł°¦„]›µřZµU[Ďz«?z|K[«©ö´ťµŹŘŹvj¶‰µB›§5š:‹Ł­Iţ®ĺÚ˛riŻh›ťC ±I›˘K ¸„‹¬[j˘ĘśŽ‰˘»¸[»źŤë¸ç¶‘ËĄ_gJ¬¤»~* ˛RÚ±¸y®™»·±yş®Ër›ŽbűjăW»zYşçjş™‹“µ µ·ËjËĽĚŠ Áꯋ«ęąËć{,+şË¶ÚµAÚĽÇ&§ĘĽ”ű»Ç[«:ű˝Ř›˝t[·Ü‹ŠĽ;»á;»ă«ş«»©š¦ż«ĽŢ+®ŰVľ=˝§¦®Ë»ľkżÎűĽç{eZKŽ˛Ëľ,Ľźűy ĽeŠjŔő ż÷;ĽcŰŔüž ¸eęSHö;Uyŕ1éäŔ3DY«­W^ŮÖ[ ëşÁĂoŕ%_čeńĂ KŕńÇ;˛$Cŕ€Ér˘|ňśÔ§ž0ď sźŇša†¨©–óˇ%ĆV[n ±tBŔBoB#ÍÂpK/=éą/±ËÂË™»¦°]Ö6°”×Y›ë”ą îŞQĄŠ* j_u.xćvĹ««ç^ÄWiÖţ\ó}ź@Lřŕ‚ îq|\â,î¸@9ËÉ&묳ŕąź›hµŐbŰó¶D߀âŃÍ‚HB°:ŃćŽ{´ë.ť[€L®×d.íaiÖ=±ű#ŘD˙Âľ,(Ĺ©ć˛ •©Î»ýň¨j%kő3Ŕ @™ýW ţl1,`0úLĐţűL Aűňg Aá÷s¬Ç ÷ňÇ&S™Yc5ë1K ÍlÖ§>ť g,P \3ÁÔť‹‚˛YŽF4Űp7çBÚIś†.Ú „SىďĐ•śŞ/:ěęZđfµ˘$OzKą!ňŇ&•¨TĄ{ţŞÚ@VZ…!ž§+™ú,€·‡©ď‰ńs_3¸řű˙$ 2Ź-Nd_”˛Ćč;™ńrĎŞSSG­Ôišŕ*Řš f#vš;b´ yĐE­[ÚS"ČÎČ\5IdÓN;ŕŐ@xÉ^©ľS/yt ©–˛íx§“VŃŠ7°¤Ż„¨äŔ:ĘlŔč@,—xZÚR‰é›€¤?úI±~V”źŕ6FĚýůd]t@H6'•ɉ•cĚ…!č Ž1Ă&ÍâŘsI°P,@MÇIA vpCëŁn6’…µ‹šëĐĺ»™°ŕjżţĂ¶ć“ x (ţĚŽ :©‚^ç”ŕŔš¸Vr`ĄD#Ę Tô–KT˘F/°ľ pT}Q iłHŇ+d‹ó"׸sAó™x)ăt.fI3Ťx‚Ł­ů!sąń‚ĺt#Ńfs.Ó™Ë[!yťŃ\´ÔAŇŽ&śgşR<ĺä ť—?Ôɤ$«XÇ*±–µ¬ Eë8°Öµ¦•…«CA`ËZÚµ®ęCá?úÍ/~÷Ëź0ŤąĹc2Îc)ŁL h@f!Đš2Űf;¨jŠg‡Ęŕ˘ró­ß€‹%Î¤ŚŁBK%GS>ČHđ|ŔŻŤţíXg«Đ°*ô¶ Í-[ă:V˘r˘ŔĄč]ďŠK hÔ¸őhGCĹ‘bńŠüŰbJY Ć–˛`rČRVËG4ÖisŃĘPç¬:ą&[w<‘é4˛"p±©-"—Ś3ܵË&9 NŔ_”Ŕż. Lŕص+ >V°†ŐÁ kYm›Đ¶˛őÂ~+,ĐJXΖí«qőŞK^šŻśýŠÉbývĄĚdfbg\ą–-Ŕ2˱Íj(ťĄ¦PÝVF~64Ül¶7.*€@R ‚śŔÉű…˛~O`‚)WůĘ&Á€_kÖÂö˱łYĹšVÝ~ąţvűPŠBt˘eĄEç|Qâb –ĘU_r9ĘŃ(Ţ/‚}®÷±Ä©±,Ťś˘±kąeyw™«Sć*»9 }ŽĽQ‡x–ÁŤ°—Ź*r/J,BęR›úÔ¨NµŞWm¸úŐ°Žµ¬gMëZŰúָε®wÍë^űú×Ŕv¬˛—űŘČN¶˛—Íěf;űŮĐŽ¶´§Míj[[Ů+ öµ·ÍmiăĆţv¸Á˝lr#[Ü,÷·Ńm.vŰÜÝŽ·Ľ]šm{Ţřž÷ş]şî}÷Ţç"·żĹínu<ÝęF¸żóÍpn×űŢ Ź8µ÷p~§»ÝowŔžp~SĽăđ&¸ÄţG퇓üäĐfwĆ žqŤ#\á·xÁ_ľńŁüćÇ69Îwţnsű<áî7Ćiîó‹č!ď8Ďw®óĄ;ĺ-şÔ“Ýô©[ýęX?yŐłÎő®{˝Ú[˙şŘÇNös…˝ěhO»ŐĎ®ö¶»ĺl»Üç>ď¸Óýîxź¶ÝóÎ÷ľS]Ű~Ľŕ˙nďÁţđ{?ĽâÝžřĹ;ľěŤĽä˝ůÉ[ţꕿĽćťžůÍ{ţćť˙Ľč%úŃ›ߥ?˝ęřŐ»^ë­˝ěžúŮ۞ٵż˝îsűÝűžÚą˙ýî/üŰżřł?~Ú)Žü+źěg~óĺýüŻŁ{ĺýž>ë ţř™—;űÚ—vőłľňh?ü¸ď=ßîňi˙ýČżÔŮ_qnźýň_:ý….ď÷O?˙;uďqţç{u8€'w˛w€#·Ę–€ W€Şç€(Ɇ͖¨:°;Ŕ<đl čyoÔĆ\€.Ř0Řč<ŕ^Đ8člhy'Ř)¨‚Đö_ŔDČ1¨1( h8ŘŢV‚§~Ö÷m`G83„H‚"Ř„eiŕ~Ň7x=xmčmÎ&„/¸o„IŘp¨_e‡Ö¶yw†ŐF…Í–€aD‚!Čţ3h „9 4x‡M@’ŘmPřv~ř„ř&€,ČŠx6č^¸0h„9ŕ] ‚<Đ„’HúV‰'…S—†{lb,ř;Đ„8ř‰ (‚p8Šh„0Č ¨Š’xw€‚®Řu—€h~ÇfW8şXŤM`¨„ÁČČ0¨ĆHNŚX†Ě‹<'‹”čRVđ0hŤđxŤc ‚ŘŤEH„]€ŕgpj äř€Ë¸tÍ„$gnBřŽá¸Šy¨‹c0ŹhŹDH„.¨Ź†Ř„ýčŹé8°Ç}O§ŽýÇf஠ŮąŠ’‡h€Mř™ ţD.ȉ‘ý¨nđ‘ćwčxϸmŕö¨‹bŘŹ«xW †+Ů”Mŕ’]“Lp…T)“DHŤü‘qVLJÎ÷“ĺ¨aP”M(†iđŹN–N ”GyNů08“WřWDČXi’ą\I~=Yw`ÉpAŮmei–i°k€–i©jÉl ‰m€c°r)„_€šą‰y™‘ČŘ—]ç•Űv‰ ŮpdŮi–ŠąnĐšođšŻůŹj ”JÉ8‚0 )š·—f‰Śh'šâńVš ç‚M™ ›kpĐšn°•q›ol6¨şţůrĐťč›`—M †ČnÇ‘ŘfśB9ň¦ś8Čśl`ťĐ ťRPźóižÎ¦›Ý)b0T)‡F™ĺ9wÄę9‹S'X°śÍ ›őYźsˇO0ˇÓĆťÝ)ý)W„‡‰ŚR0yÇ‘ś§  ÚJÉҡJ.Z0jm`Ŕźşź`€1 x^™$*qîI›Ň Łú0t`¤Üf Ý©™8Z’ÁyuĐ}ŕ7~? ¤'Ş”Ô0 Ł“˘ÝfPŔ¤Ş™9zŻ)’÷mŐÇž ¤J [ů˘ux ¦řfP€ˇbŕ¤iŠš :Ąţ’§|W*qVŔ8H›Wť.ę˘xQ gfp¦€ÚşŘ O0yÄw¨J„(J›Đ 1’v€§ yp©Vŕ¤ÁČ ńůP¨znpq˘Úk٨p1v`¨*¬—y`ČŠB«‚Ş˘nĐ©ŹW{ąq‰Šj ťy¬v°[P«#g¬ČŠ™Ě ź­é­‹Wz JrŐĘ«iYźyš[¬ńŠrzp¬P ®dÉś­)¦çz«4'vŠj­Nđ yĘ­[P[psőZ¦÷J”ůŞŻn@©ýę‘ÎXvP°íę®xj°›°7·{P¦ß9®ąŻŽyÓJr‹±*ţS°±[@Üşs|˛–Z[˛;±)«˛ëOPźSP´ÜJ2Ës5k©f€ł9Űš„…Űsm´BűE;UPZ [ ±4Ë7;–$ë¬wŞxl—®K°ě:ˇX«µ[۵SđtbŰ´NË Pµf(…?‹sAë¶Y‹´][R×b›w»¨Zę˘Ý·ujëtk­n{Ş‚«T`sKÇĆ:˛†Ů„ZŚ;x8ĐtŹ ąű”K]«í—ąš‹¸aP‘ž»¸t`xŁ«mĄűt‘«–*©H{ą÷t~đşű鞣zu*ş,đp}ëtlŰ„j˝NPt«ÖţŰťĆK›u:·ěżrę«vĐw ÷ÂʆÄI\ż6ĽşděÄfŚ´[›Ć[ű®yzźT|ŐöÖë§@LŞżşĹx×q^Śl`ś–ö;ĆţdČglĆj\ČkĚĆnüĆҦ ‹ˇu<§wLÄä¶ÇƦÁaÜ»ȚܵȦɆ\Čű®sź[YĹͲ{ŕČY\ŞćJwzlÄ gÉ~üÇ™ĽÉζɫŰÄil°ĽĚP[ş•lŔlĐČ&ŞÂsú0yls”Ě‘kŔW;ąlËІË];Čżk°Újó¨[ÚšĘÄ ÄAü«Éln”ÜĚ2<ËÍdÜlÖ¬ËiüÎTĆ٬­ŹzĎŇ)ťÇFĚ&:»ľşxŚs9Đ뫿U¨Ě°,o+;żęŚşµĽşť,Čň<ϟϿűÉÚÚÁŹÚĄŇ ›ç‚ĘŞěĎĄĐ·¬Áxšńhţ­mÎ Ým mŔbüЬklÔŚ´5śµ­ĆűÉŰÁYŰĄ,jťČ8Ě©ÜĎŠűĎ$-oáę°'ťŇÇ«”Ň{nëĹ}üĚ}ŞíěR¸ĽÄ§ Ĺ9 ĘĽĚ­:Í­Ůśµyʢsŕ¶CÎ<ŞŘšÔŰö§Oʡ)ͨv}QĽđöÂÉĐ1ťşś¬ŐlĂ ü¶PĚĆ0‹Íő\ϧŠŘ`ú0őIÔŞ,Á `[mЦsŹđÉw É- ­.·×-˝mUý ÜÄ4˝ş\Řö;ÂëŘŮşŘºĢü00ú|Ŕ“=»ó ŻÓ¦ˇU‰…s¨©đŘŮĚɨ‰ÚŁml|ÚZ´ľţ«ÚćBĆ\żÓ«lä;°°-·ý0Ś ÂŇÝŐY 1ą Ľ]ĚľŤ­[ŕ„Ëfű)ÜÄ]Ü%YŤČ źżĽÜőIˇçÜĄmmĎ«–-‹ĂN|.Öő;Ď<ŞS<ź ő0>ĹyŠĂy Ł€€Ţ˝­¸ż˝eĐ”źŘźßéź˙iŠ›]Ť)†ťťĎÓIťżý®S ©1p Ý.‹ĂUđ»޵’ę– Ż1ëľ×vÔ•ÍĘFzĎŹ*Űyꢀáę­¸»iĐ”hđť›XĺZčN}âŮ oĎ[úĄ.ţâEGo˙=m뾎Ó[«ş¬«ş§úĎ Ö g×nĽĄ÷ÜĄwš§Űü¨ţ荬VđżWŕ®[ŕgâUţ›W®ń¨ĺZnť].ť÷ ć.ć­k.ͨ˛ĚÝD[´jśËT ©Ođą„KrŁúËÔ‰çuŔ˘ç}ެ€.~J凞čâ Śn–Žţšy[Ź*éjLýíßß;rg~Ľ"¬ćq[ÍQp˘ĚY§’ę±7‡˘żśĎhí¶x>Żţç”=ëxčžčđëąëÖ©ężţ0;˝µ80Ó׌ëK›iÎéi\ÍT`Ľ:ë˘S í;׬:+ťő۲ÚÎ~®ś~Š™ŕîZŹ™ëČxŽnżčşîUĐîkvem€č‹§ťnąT $űţš0:pÍsţ>«k:Ĺčß݉™_đx)î ź‘gpâ˙đşßŘŽçY[ń1+¸cNě=«®˙ń»ćŞűér@¶ úšO)ďt+żó5 ó2?óŕnëNŤó /†«ąów0ÂőËĆA/©LŻşEOćĹqʬ”-ű®G‹ĆQ 8«¦o0ˇ—ťuă)†bór°ő\oĺ6ó`ż—«©?ź"<ˇöF+Ö7ÎćmŻńoĎpÜîĎľÚă;ôóyPškÚĘ\—őűIřÉ™^Źř‰‹?űúý ó®ŮLůj|ůôXJŮC1ű»sË [ßäYźXç§Şó[ţ?‘iëXű`?ű‹źČóiäĂÚÖńĚű–ľńÍÖäăLä]÷UPüǨ‰ůś}Źsę§Z˙üĐ•ҟұź“j`ýŘť,Şý±!K–)íŚeËÂ*SjÁÁBbD‰%®`…EŽ=~ü(ËČ&%Ż\“2ĺ–RYĄ"+xlvÁY˛É™3kŕ€T( 9bŚŠ‘“4é¦M™<…úTÇTŞTu^-ÉSëV5]Ő¬»&ÎX•)çśEKG-ť ľuĄm–' YPĽ ŁĆˇ}Š$Ůä$J•-Y¬sJE+VÄŕ¦jVž~-{<ŠTéć¦NŁFţ­«Î­ĄĎxő věj•Ož =kXŕ\‚›8Áíú‰EĽx;îÝxY¸DŔ:—5|ĐN•*[KÔc4ňôÉ;Ď ÷[ôčfĄť™~ş:VÓ\QŁ^ť^·ë´tdł¬S÷|'»;úöÍ8vá#±? ą–”c΋ô0褸`°ÁŞÔŕϢ¦”ĘŚ»î:*ńĆ#ŻĽÓÎóĘ ÝPo=×ÖBŃ˝  0Ą đÓ+Łŕ" °˙LjqĄÚ˘ +2#A¤ÂŁA#ÔÁ/ďJŞB /ô,Ă ­Ť˛ň@ějD-Ç2ńµłÔúR­{j?kôŔ+V“Mą…~”h3 €ţ‚H;í\2Ď<źĚLAîôĚPŞ)u¨’4±Ô2Q7L„­Ń‰p€t8cäëLˇlÄń¤ŐPTÎŽ…:˘“&ÇÄŔSĎΞ¤°O?˙\2PA7,ÔĘ+ĎSTK)nŐí¬ő^ŚÔŻI?.?K;*.Ó5ÇB1!…>ĺhNQUE5ZíúŚPW-ÔC­ćC­VoW ]í» Ra="łLď:wXŠl°M×RVąŽ‚¤SU͢Őw»'MýÂŐWĹ‹U[úp˲ÖÖvÖ\~vÝGŰĄ^çU«^;˘đČŮĆ>µß~ĄX`&°Í¶ĽéS8%pÝýČÜü öČLŢ(ĆNŽŔâŐYzţBČŁPAnLdjĄ•ĂT“QNą´•é{#ęU 桦ąf‰ďĂů2ťoĽc:Ţ ZhÇÖi([˝vĐ©bµÎé§q‹şî7ĘzŮęrłţmkt»îKg5ŹőY-˛7)äUŐ^;OÝ~»é­ć¦;ę˛TŇűLľőó;fŔúÚŘôP<üąś¬`ďÚv»`Ó(wÂnÖž(ŠĚiśY(›yĺ/Mž Źtě(¤RUWÝä“a…;îÉ)—}µÜhźÂöŰůŰśóJűrŘëŔ«ńë(ÝtŹŽGCĺ—'¸y•çŽ~,ů¦Żýzěyjw_?Ż(ôßµů ’â… Č[ź†ţć:ąĚnQ‹C¨ž˘“ů¸¦~öNît×9ËôJ(ţcCŮŔń˝EYć ¨ÖÁÍ`+“ťDá?H śž]0AüĺŹ{űŕÎDHBń™€~áB!G(jë O GfXC:Mp~ő© ÇvX®np{c˘t–ť qD4b¦Pż,±…î{źß0”)VŃŠ·Éˇ·Č=ŽđO`ĽQr@Ć’QDlË[˛ŔF˸‘JÍs޶ä(ś:B*8ÔŤ÷xµ>ö司K‘ŮCşˇQ‰,HřÉŃ8ńigŞä%ç—I=nňE]ôâŚ`Ö=‰„a”Ą4%ZPţ9…,ĚÁ]N”$}®Ë;NŻ.Öłĺ-+Â?|Rsé•/ËXJŘ łŃÜ#3o8K×DšŕDW'=ůCÜőÚÜćGÔM·dĆD'ihÇqâ‹ĎĚgĚp™K«µ Rż ˇ–`Ó¸l  Ëܧ%›éLs>4Ó´Ś5±C1_BŞ ťçBYň–{ZToâÄ!rN‹jpť_l§ń´ )`Št$u¨Ia†Ň+–&:ť:_ŞË1 žM0W˘lŠS ş+˘QI©O›šŚf”ťüÜQE©Ćf¤ödÉTi4§N4‡,}¨K‡ÓľŚ’” ĺŞMçV±ň‡¬T”Ą?3‰ţÖ€ŞŐ‡0ĺ˘eĎA -†i KđYWáÜ•źQÍ"_ó™=JµÂŃ*HE4ĂΡ%‰-)cKE‰öł‚Ď”,8ýúWËňq8•gÝΩτ%®­e[Ú«ś6 Zhęj ĘCě ö­lx lĚ5× +·BŮm^éSNŕU¸AŃčĂ"O"W¶‡e ¤lŰ\ç>$dµˇi)Z]“^»WýŰ™`k7› DĽ·5oPŢÇö4‹ěm©P­ XíZʸ"¤ďtSŰ,Đ·ůýK;Îéţ׺öKvˇ/˛»u3bBH•ÂŮ/iĄ»^÷ÆoUÝ5_ţ/ÁYP‹O,‘čʲÂąđ†×*M8„v 1K沖'čÂ=Vď?¬S÷ľ—ŔB6đGʵ$«eÉtŔ-/ź ĺ(—sĘ~ńz;sY7(ú2ÉĺäşBą·y¬eZÓ¬fwÚĎČ[~‰ŕ™hţxÁn~óZĆËdÓ٤µăťĄśg=c™µÝb<‘Ľžµ†Ó‡î3P˝âőB:¨üŃĄidi@:ÓjqµśźëX[TµŁ[ěbSź:Ň{Ô˛w1ý„µ„Ó&ľ™®a&aZKY ËžěžŐ¬í3©zŐ'j5KPdhˇţxz‡ÜľŁ?• nŐŠ{Čä¶T´ĎMmYűŐWĂ7vŕťlZŇ»ŢÍf­»7©ĺ˛:Ýę.4»ľGx÷SŢfţ¶­©ŠëCű¸ ˙5°ý-ě4ěo‡¤EvJGmđh +ŕŐě¸Ç/=m~‹âCÉM~»Šśş,·e•ůüP†ď»Ú#—sÎh5B <޶°Ć_ó+Łłč4ďw°…­ô˝M˝"Núië’q*ŁšăQx4?şďš«éşáz§ęĽ^ă@ߤĐďíu]Ý×!—Íş‡wąó‡îńÖk&É^v„ó™ďZ»Ńł~sśľđ–gŘ)ú[ĽďŃĺ–Ęőă‡ăw‡?ţśňp@é—ĂkţźcďĽçÍ~öÖ¦¤ąŰOočÔ7aőAéCŇkq¨˙7ö[ÔűĐo–ĎČcÝô»Ż[ŻŮ®ŕ Ş*_ĎCŽżĂĎ>Ƣ÷ gţwtŰśň[O˝ôŻÉ‘>€¬îňőŁ;{Ú·üCż´ťoţ ž÷éo÷{żˇ%ů›żĆ±Ş+¶-"Ł4€@+?ţóżÁŔlŚĎŔ ,¸íC>{» k@ zŔ”Ľç«@»aťŔŽ=ŘŹ,(ŔâÓ>±ę>ďcŔ5sŔ&€Ŕ4`»Ł;żőPÁ, żpÁ>ńŹÚ@\)ä>ú«żËۡôÁËţ=­‹¸˙K?"¤.$TńŹ0Ľ¤RB43sJ-f{6Á‡ą?Ź(A l;Ýëż ´Ŕ-$«$1äĂBqHˇ\É"4LCtşAl­ËÚ!4ÁýŁ@;ÂîĘCVŤ“Ŕ H —A„‰B4D(ŚB@ş˝üÁç«ĂkÓB<ě.Jś+Ŕ )ŔD)P–Md¬ä°D”ÂŰaÄ*$ż ¤ĂRĚÂS”DId‘a$ĆÁWćź:DDÜĄ7¬\´Â+ íS=ťQBÓ.ÝGůüSC-*DMT?ŐÓ< S(µ6ĹR@eF ¬TߤSLmSG}TF=RQ-0mQN%TIýRMÝTE%U.}ŐÂTKĄRO˝Q$µ%Z­U[íKP=]]TQĄ¬SuŐXÁIeU˝ÖNMU_5QcÝ(^Ő›a%VH…VŢ©Ug}Ök=T9ŐÖ_EUnEIoĹUtZÖWUUň4Ő=:×XM×7-WpjWc•ÖŔ"Sy WqĹVóţJ—‡š×k}×i]×MúWn ŘĘŚWsÍW}őqĽW…-V†•”z*Š˝YŚŐŘŤĺŘŽőŘŹŮŮ‘%Ů’5Ů“EŮ”UŮ•eŮŤÍ—…ٕٙĄŮšµŮ›ĹŮśŐŮťĺŮžőŮźÚ µŮ˘ 8Z€hÚ§uÚ ©µÚŞĹÚ0€0­E€­5(€Ż[˛=€˛E€´U[hµm۶uŰą•Űpx»mpľĺŰżuŔ…ÜÂ-Ü ÜPÜƕǝɝ \˵ÜÍĺÜÍőřÜĐ‚ Ýţ řŃ5]ÔýÓ  hÝÖŘ‚ٵ]"¸Ý!8‚!ŕÝÝíÝŕÝ!@á^Ţă]$HŢH$pŢć…^$hŢŚp¨^x€ëÍ^ëÍŢ€€ŔŢď€`ň5ßňe€@_őU_H߀ů•ßůµßű˝ß¤ť_¦ĺßč_¦uZ €ĆÚčÚÖZ­ĺZŰŻĺZ˛µ µŤŕ´­ŕµŤŰ´˝Ű Ö[Ţŕľµ[ľ Ü0áÁ5áÂ=ÜĹE\Ć%\É-‚Č•aÉĄaŢ\É˝aĐŐa€ĐŐaŇýÜÓ%ÝÓ‚"6⌠Xâ ¸ţ€&ž€ Č â €  b°â-ľb Đ€.–€0c p1®2–€€3VăîĹŢ7ÎŢ€€8ţŢ:–ă;~_ň€h_řőă=€düť_˘-ä˘EZD^ZĄő_¨ ©ŤÚ¬•dfŕ.K6۲=۵e[·í丅[ą­Ű»ÍŰ»ĺ[SÜT†\faN\žČř€¸ĺĐe\Ţe]]ţřcFćc>f`ćfnć`f č  ć °kĆćkÖć$ľ&Vâ âpçqŽb g+žb+Ž Xçvfç1†g4c çëĺ^íPĹgďß@ßóőçôE_÷mřeH€ř5č„&dű5ä˘ €‡ţßFî_.˙­Z6ŔčŰŢÚ iÚ‘&é’6é“Fé”Vé ;euler-1.61.0/docs/images/shot7.gif0000644000175000001440000002111707430537672015523 0ustar ericusersGIF89aň$Ć 0JJuśJqśRu¤Ju¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŐÚŐ9Y{A]{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™Í˙˙˙R¬R´Z´Z…´R…´Z…˝Z‰˝J}¤J}¬R}¤RuśbR…˝R‰˝ZŤ˝ZŤĹZ‘Ĺb‘Ĺb‘Íb•ÍR‰´Z‘ÍZ•Íb™ŐbťŐZ•ĹZ™ÍÍćsćs¤ćssć‹sć”sć¬sćĹsćŐsććć}sć‰sćŞsćˇsćĘsćâsćÖs¬ćs”ćssućsŇćsÎćs¶ćsˇćsqćs™ćsĄćs•ć{qćsćqćsyć‹qć˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,ň$ţ€‚„…†‡‰Š‹ŚŤŽŹ‘’“”•Ś›ˇŁ˘¦Ş©¬®Żł¶¸··ľż-ŔÁ.ĂĹČ-.-/Ę-0.ËĐÓ.ÔÓ1012Ú13ÜŢŕÝÝ2393ç:çç;ę<3ěîń3ń;<ő<ö=ř<><úý˙řőřŃĂÇŔ@öHDC‡C€H˛bbĹŠD€dܨQă "W!Br¤I"#% @ŔĘ•bĘ”‰)&¦@áĹ3ç(Pr¦ŠEԕѢ´`ÍRJAÓ¦ľ "¨ńKŻe-ś-ŰŞUkµhŐbÍF·mhĹÉ2m:·ţ3ҡS'—ÝŽzxíéÍ{ŻG_=6`a…QĚ8˘c ŹݍńH"–-` `AťCÝŔĺĚ™53©ţ䉩AKĄ‚ÝŞöQY´rŐşµ;WU«ĆCvĚY3iŃž}µ¶ÜlZoŰÂÍ€Žś9uŘŮťsož÷˝ŕwčĂźů~ Lxˇű‡đ)C®8 đㇰ`˙ć˙ ¸YzĆŔgÚK¦ĹÓi4٤ÓOŠba(­ uQ°(ő oŘŕ ľř[UÁ\•UW\qu\5-°V6,UÖ6Ů<÷ [<˛0׏çř¨Ý<|…§>ůţCXA‚©wPb‚ä'Ą~ýĺ·X^©e.°YgŽ&šĄ=¨šMŞÝÔš&®]mA­"gQ,ÔÉBn ’ŘŰ-'ăK0 —Ě2Ç=#ŁrĚ]să7Ś‚CÝ8ma7Źď¨c×wßńµÁ¦śn`Ţ? ÇĎN §J ęŞ«:ĐŞ°Bŕ€¬ůŃ:«~đ‡_€Ľ Ř+Ż`+µT¬Lf˘‰ćN8ů Îm,@@µP§Q,P{,vľB"‰MŐI ăR… 5 ‰ËŘéLť-M 2şP#ľ0ěKcťfŐ kEę#\étĘé:éÔă©Ăŕ "ÁţWL1ĹŞF@ÁŞp,AÇ Kđ€Č"ăJ%•Yfů€–^*č%bĆLf¦vC&,l˘IÎ҆Âó´?×Y[µŢj»­RÔÖ˛m·ë˛p‰ëúµ1đő ‡˛  ĐÔŮo×Őp­oŘ4bă#ľÝ<:ݰ¤ëĽ˝ÁĄîbÁLwđí÷hŔwŕhp±áźš*«Ś·şŞ¬°ÖŞź­SćzĄĺżúě &hgK°° 1‘şťĄw’ OŐö|-(˘\+ôët«m,¶ßůt‡J߉ UPłu»Rżn1ZŹăÖńF“/4Ѹ=6ŕx–6Ő«ŐŤ ÜmÂţ›ć->ŕ}“źÁÄ€[¬ţĹ«..«ŞşęjÇ®Ž AÉ•;PĄţ)kÉ߯źů „Ň-€t‰édB:5a‚t×z`›Z­Ú™hLE·®…”¦ŐâÝşS•f<­Emy'”QÔ´ĆBgŔŔpA ľCkPOČtb řčŔ;° X GôŢ”ČÄîá­{ĺűŰŕĘG¸ôŽbŠC•çľř˝*r°šśÉXp2@ N›aA€Ř+6«€ ¨SKHŃ…®txĽcčž•“ÖĹÎg@ÁĐ´nçŠ;Mw!Dä,X "t5rjżŮ@І!IĹP—ÜJ=ţŔ€oCäŔ8 ÄR’’@%—¸D(Z@o°Ľ@,ÉG>ô±ď–ęÓ€§*ú}ě}$«€ťČ2ü±Ó•ĚȲ˙ Đ€Mťîş<6ĐtŇŞÓ&´Ů&źYh|ť·4X4j’„čĚ/>)ŚHr81,Ž @ŕzÚóž!°g>óŮI~Š€˙üç}8J‚†ň«L(+1°P˝]ŕo€śŕg8Ä]1q»Ěhă€©Ş‘‘rú!¦ €ą4fŽsźyă°„,ą”2éÉgŠ! ±bâNywŢ ‘ż„Fŕx GMę=—ÚÉzvň©śŚ*@ *ţ!úĐ”X=e*Yé='ľň«eŢÄJKZÚr}hÍ«:ÖK`†ldÂé”ö§%dúŻ™\âŚgd&łdEhYkj ěFń&UŔÉ6C9Ę,d˘]Â#0dG@ĘZ–%Ŕ¬f3ËYŁbö@čIĎz–v´ő̧S=‚€ôµ®őˇ@jŐ$q‰Hä*W˝ E)F‘ŠT”@á°¸Ĺ⪕qđ{_!'FÉÍŐ?'őŐ€xµR–ĆX4siMšĹ¬žx÷'ł)€ R ‚ŔĽ‘E/d×ŮŔ˝ť-Á2;Tú"őľIĹŻ>íŮO©ú÷!čdAEI`!ŽŇ”[EĄ*uŰŐţ <‘¬˛Ś0EkyQ\âR—ŘX[ŰÚ1¸’ldůłIůwWţ¬Ś?-KéhÂ4&ŇĚL»2Ń™`[ł‰ ˇÂ8αŽwĚăűřÇŠX‡Lä"ůČHN˛’—Ěä&;ůÉPޞ”§Lĺ*'Y+¦–·Ěĺ.{ůË`łÇLć2›ůĚhNłšĹĽ,ŻůÍpŽłśçLç:Űym@–ďĚç>űůĎ€tž÷čBúĐFô ÍčF;úŃg^4¤'MéJ3ZҖδ¦7-gLsúÓ µ—=-ęR›zÓ¤>µŞWÝčTłúŐ°öł«cMëZĂyֶε®ÇŚë]űú×xv3°‡Ml;ţőşŘȆő±“ÍěS/»ŮĐőłŁMíLO»Ú؆ôµłÍíDo»Űŕô·ĂMn>Ź»ÜčžóąÓÍî5Ż»Ýđ6ó»ăMď0Ď»Ţřćň˝óÍď:í»ßůţ7Ŕë-đÇ»ŕo7žî…3ĽÜx¸#lXüâµ°ëmqŕ`ůÇ%Nq[cĽN#˙˛ČOđŤŁ›ĺvJą™WŢqv—śŐ5ç˛ĚµĽs1ÓĽçŃľą©a®s/Í?o¶ĐCťsž;˝ËGGů›“îëĄoščOŹąŃU~gŞżÚę–Ćú–wu0—˝ěgöş´]Žl±C=ë3çz×cNskł˝âM/şŮçľu>«ţýĐ`OtÇŃîń0érç;ĎëţçŔšĺ„Ź|ßí|v?§üďovüźóţv~ňu®|źŃŽy^ßýŐ?Ľä=ßůÖ‡>ńi&˝ÎCNf͇^ćŞ˙<ȱ.zĘĂ^ńcçĽĆő kŢű\÷ZľđĄz:Ë~Í@Żůáý}zPź<÷iÇ=™Ż˙ű9?ßů¬gsőŻNöăďťîcOűîËß|đ{źýâ'>Ó…Źýî§?θŹúôo˙Ůë=ţ„F~ýw®W€á{ůWxíç~*§µ7~ŽsÓWnw€ČeH€3§}řzČ|iô7fŘç€|]–H }Ň÷ć7{ßţgohh81Ř|&S0+(,(gG{'g/Á&ŤV(x~P7„Č‚e¦‚@Č‚-(…ď·| Xf¸€]f{(·XtZřX(fHT>¨[čë…Ű'†ofšwŰ—cx`–†jXUŔ†mx†Ea¸|eč…úVηzz¸{„ȇ’če~€(Ř{ľgtLč„4¨„–׉uhMçŠŘsH`Hđ‡—(Wřtw‹—ŁřeVwy"w“¸‹MX‹“Š«ČŠ‰n‹~W†¸XŠev‹d‹f¨‹ő§Ć7L©Ś–T †=řŠţü·‡f7ršřŚvȆ¨‹qzOXę…Ń—wŐ¨†×hŤmXŚÝ(ŽQč‰ö8|8zů¨|gŽŠHw—{ŐW ‚ÁŹj‹$ř{´¸ŽbČŚ9‡D鸎v‚WpX€ iŤôČ€˙÷˛hz ČŹ y‘ĚÇx‘‘Ó§‘HĐ‘™ŤjŤÜ8‘BŘ’S·Śäh„y|8yť/™“Y‰ 9‚]§… ‰‘I¸Ź~÷“ŹŘŚéq¦uÉ‘y6 ’ţ„*éŤ)i’R |†§Śeɉ+‡Źá—I`\)—¨Š_ zD‹9ý¸'9•8Éyű—•B™ţw;—t™”G™Šv©‚w•Ł8nÉ‹Z&‘”Ů‹°H‹Ą§€H—qy”Šy”V`—đXŹł~Ţ7™úhG'‡b‰GŘ},Y'*ř™HŮ•˘Iš7i׎;ůšÔ÷—h‰š±wŹky†+×™‰š9š«Ż×s˙¸‰fÉšů(™Ş •h‡4‡›‹éśĐ”>·Xů”dąey±iś§čš©“,€H°¸rq霋ٗśťBYś(śj–s˝Ť“) ě9‹Ń‡óIźYry+w!©“Ňiž'™úY™=I‚É•T •ľŘ­‰™§ KŔ J—IpźÉ’áţhˇĽŚ]‚B( ë‰™9üIśľhq*¨ó‰ š˘Gą˘)ˇĹŘ–# ¦)žđ©ˇŠt HŘ ”8J™†ity˘BÚ AzFŞśůů„´ŽŃgy; Ąg9ś!NzĄXv¤\ęĄ\Ú™aú™HʡN śç‘ú›—‰„8§”8§ ÚĄ Jź+j¤zę\ř§›Ç“Q ‡ęˇpš©ax©?š¨vĘĄŤę™¶y…îyžď)¨4 hU ‰—Yy„™‘Z§z˘ŚÚ¨xjZži*©ĐG©kJť—ú¦OúŞ´‰J@§(ş¨p騏úŠd‡Ž0zŞ~ vŘ9لƤţ{řŁtÚĄłz§FŞbş§ZžŃŁ»jlÚ«A™ĄU‰~Yytť*«Ýj¬· ®Í:ˇo§ŁOşŁ|9Ž•*’8z¦íş…ďš‚±š¬´j¬@—ö—áůy­)ŠM*¬QůxŞ©ۦě‚L@Żô©¨ {¬Ęٰ ©öčŚţ)­čúŻ©™~$ů¦Ązś@— ¤HĐ[ĘĄ"˰öš¨»é…߇ˇ*oé:´V ˘!zŁ:łHбŘ8˲6«V«śwę†Ä¬:±¶X´)˵Eh­K sťzłQë´:+˛VŰłY;¬aŰŚ^»šY(‹´ş´¨‚N€¶M«¶ôyţ¬@Ú¶± ©® z®+ű«šCřŞĎG #JŮ·Pű·7;§‚‹m ®ŰJŞ\W®}™ę«·g·‚ůˇ‹—±‘G¶•kąi›ą +˛ś{µČ¤kŞüŮŻţʸŮסŰ®Řú§ĂKłHŕ°‹ą—»ąK¸·űłN7ą«»ű~¬Ľb»Ż«eŻ›ąR۱Ë+˛Ík»>‹Ż×©¸úI‡Ôz±Đ8°†Ú•ë·ßë·Ě[»žűąć»®č«~¦kťŞËŁy»şř¨ É+µh‹ł ‹ąŕZłA¤Lř”˘K˝‹k±˙™îł‰OŔ·ň ľ—›ŔĽŔ›ôYˇJ{ś«˛Áţé»-‹Âş»µ˝¨ÁHÇŰÁ\Ă@ÂMë±Ëťˇ««-<·_¶B|úš¦ěú{2LĂěÁ8Ű·ŰĽ;üĽ>Ľu3jˇáÂěżëJ¶d9x÷(s¸ÁÇŰÄ7 Ĺß۱ó‹ż{7˘뤼űµ,›“'›Â;¸˝ĹĘ·f µOÜ·iĹôZ˛VĽ‡B[ÁH»ÂlÇ.,¬LJŔ–Kł\Ć~<żk,»Đ;¶ů˛qL·\Ěz ŔQX˛*ČÄPyąČ;É\ÉśżWšĹRhžęKÄ^›Ä»‹Á»[°ÉĦ Ě~›Ę¬Ć ¤­ś˝vü˛[˝ť°‹\şö§ ţÔś4Ś\€Â,Ě™KĚ»ÁóűČ—ÜĚćJ¦°,Ç,Äç Ę»¬ ĽÜËÍÁĚÍ}ŚĆ Î,Î8;ČŔ:žGśŞřgŁÉG«Z€)§‚ń¬Đ =ĘجÍőĚčͬĎËĎů‹Ë¨zľw«¦§»©‡8¨gĐůXÍîŚ]€)=ĎÝŇÜLĚ4śĎ€śĽ—ŚËXĚŻD;Ç\ءµX¨G ·Ü«Ë ­ )˝Ň˝Í]Ć3Ó Îí·5ÝŁhę§,€pę ÍA­ĐđÜĐFíG]ĎmĘČ»Ô;üNíËÜĎ@KŐ0›Óé<‡¬ÚÓÝ—] Ď&­‚\@Ďb ţ̦\ĂPpÍhťÖ5ĽÖ‚ŚÉ*\ÄčIËü;°j9Íw-Ô&ťŇ`˝×.ťÔ€ŘMMŘÍŐ úɓڿĎLŠŇyŹžŤCŤÚ‘­ŇHPŮ|}ŮŘśÍKMĂ˝ÁšMÓ§­Đ8đ°\ Łł¬ÓĺŐ.IŤ¨ťÚ Ť×(ÝÚ±­ÍcÝŇ–=Ű›mŰš ŐĹ}×»}҇ÝŘŠ˝ŘŔí“.ěÓAýÎ’ť×y]Ů—-Ö{ťÍ-Řh Ýť­Ë*xÝ©ťÚ† ź±xŘkŽŕťÇó˝ÚîśÚ^`ŢHÝÜé Ý›íŢÔĎâ]ź ţßţíĘçLÎ[<Ú=:ĽčŕăťŰŘ­‚_ÖçŰę=ÝmÍľţü×mŇ× ßČÍâ®Ě«˘­Şu¬ČĹÚŕŐťá^Í®­ I]ŕfÝÔ¬}Ű-íß+ľá®ÚyÝŰ‘ĆŘ%yČ%mäPŽä.ÎË` ‚a Ü˛ý.ż,Ě>NĂ]ŇśŇëÝĺżśUţŮÇŤă7ľćRž«őÍÉ2Ž—˙ëć9~ç7năHpĺ`Ťc€ZŽbŔĺĚ]ŕ®ŇbäšMĎgŽUŹEŢâGľĐ6năÂÍÝqÜLÎ;‡ç—>Ô žć^ĺÎç~ţç>č€>Ď–}ča.ñľčĚ]ëŐĽŰUľŕýMé ŢëŮ-áśČJ• ľë,^ęh®ă¨ę[Îę.âţ­Ý籎čdNĂŻŤd@HíÜ™ćvŢć•÷ÍäʇşuâNŢ7NęŰîčyĺHP~čÍnďnčćE=ë,ÍÍ)®ćéí•.ę–îë.ÎŐĺŢÝ ‰ľéé{ î˙Îâ-ŢďŰÎíf`ĺHďĚ.č\®ĺĎţęűëü>ĂX^ë˝ńfŔň»­íÜ>îĆ®çĆîŮ żérŇDwĐń9ńďëď1ŹĎńeŕńöňřîęŃÖ'Ďď+-ŕŤNô,o8 íŐô żáóýóČÝŃÝŔËľoçoĺźěďľöE*xôőľę!ßácđçM/í+}ţň~í*ž-˙îZ˙íşŽđşpýŃ:Oö°zö>ŮźćÜ®ńEŹnßń©žôÎN÷vŕ`}ĺÓ®÷ŽâH€h€ĎîŚoé5Źöőůđ1Ú.,ř^żćA_呏ő“?đó~ůÍ>÷©ţçśżçž żÜ˘/đĄOôď葎đ]OřŘm·‡/ě¦]ěŽä·ź0ó~źú*XĺH/÷Ŕ_÷Â˙áa ďžŇ¨ţÜÔlúÜYú¤żűä=ř2żëö>y´/ýy®ö€@F†48„††d†¤Č†TV†4†ôő…$&Vi99F‰äĺ…ĆČŮ5 *ʵÉ蚆ăęţj¶8{»ĺş•‹{‹Ä;»ËČBLŚSŚś¬LĽ°˛-=ť|LŤlÍ( ¬Űý Ü öČhXËčz†ô9YÉąyéů:ZÚŠZzoz ? ˘Cé\ b÷hŰ/_ u9ThŤŽ×”5{V1ă5ŠŘ˘iű¶đ#8\á@˛ŁeË#•í$ą"çŻ%w˘H•:…#J—4Ý’ĺKĄ/‡˝D*üVMc´‹Đ”:UĆŃ2‘$©r 9ŇęJ•BWľ„$iĐ8„­ęedó&'›:=µČHÖŔ‚C˝1$ZÔUҧÉňý+qǬ#Ź2üÖđ%LŻumŤ5HöńN·‘$Ąť‡Ź_§·˙ţ­{&HĂUgí•8±ŘĨËü~Ęš"ÖÄ„µj»űő]ZŽ- ýhěXł•3#Y·–#In{¸»kď‡%që=m,âꊮ_+em¬ôŐńämj„㓍B# Nޞ»śČ˙±eÎłł«Ď‡ęZÇĚ-ŐD•ZvŕőĺLSŢižxv‘'Lb¤A¦,·pő[dÂ=bHqŹ(wĆ:ÇçN~'‘Ăź/†”w›Qá 1 T˘v 2Ý-XQTZáWUçß@ş5’Č9bÁ÷Ţy`I2V)!2ňd)ílć{)®——ŹŁńŇ‘Z3#57âHŤlFŮub[ŠG›tý˝ŇŢ‘ţr8‡ä„řd”'áŮIrYX—aiâ†jŞŐ(ÍdxL6¶Ń&ášYβ:°tiś’%H‡LŽ…ç:x&é’X'"qĺa>HTˇ†z锢‹bÓ誵=ZÝ ŰDhRşYĺXť˘7¨Ł·N±âŢ~p*9”Iąry¨ŚÚ…™‘¬łf'Ń­şćjë­X…«Ţ\oö7 Âä˛Č6ňd’ż™ŠH,ţ±™Ë„øú*·Oi;ëvǸn¤Şî8软dš.]잣ě9ëśÓHÄóľËnѸcڰö Ŕ‹ŃÁ,~‹&¸ćÍ’.A.·\/łŠP<ŵ¤´Č#Ež—N"ţ©$Ǧi'cµŢ‰Ľm`Fł2šK*4ą _:5]7żyó"YĎ|Ň@¶ÄŚęĆÖńjס±]‹č5Ho fCM6Á·%¬0Ő/{˝HĚW™7×őöüľ„I»Żj‚Í-_kśř4‚Óýôľ´\.Ě §sŽ×.cěź,ůvő§mGcŰ .>ră].ůŽâBZW¦•ŰMůß–*ܵ}^¸á´ţľ(ęl“ľ´ăŹOŰ´ÜăâN Íß~Ż´@Ĺý:R$ö¬Â'ýeÚŇ´Îbőc÷ĘĽ({.v^ÂϨŮÚ'Čý_«©.•GÇ'4ţ„KŢbţćá€<ĺcuű޶ţżhĚŹ}ř¨AŢ 0}Ľš^č¨Â/÷Ĺ śĆüĽÇ:JĐâsĘ&ĺőo! É ·ĹAĆeO Śń©’0‚&ÓR.¨żoĎ{ô;ü:¸‘&ńzN âŕ.řÄ(ž0¤`.hEÄ"íHô ‡¸ňĄ‡<!őTĆýi€ 3ăuę—#ţ%†©Sbż´X:^#@ Q#„ĚČ(ň'‡˝SZű ¸A.vńp/DÍVCĄŚ‡3!ăȰ€ K$F)?G¶íZ4ڤżgI¸et»»HÂT#Qv‘Ž „%E™S>’N¬ä #çąţ@BĹ‹vô¤‚@9< 2Č”!ă )©C ę…ESfi‰ĚR’R™Ä;\kôŁ =đsź‰żŔÍb`3ťŐôWńv)FwîQ„Rde 3Ln3ťëd§Sd ›n6Óuăâˇ4G‘Xs‘ýôg.zČ2 ´x!¤§xĘůF8z“˘ l¨C“E}ţł†räĺýtĚBR¤e¨"? Ó–.s—öűĄHRĘÉŞíĄ:u(ŞĎ‰v˛˘Ô“fŞSŹöô5ز%_HÚDĹ…w,é5yşTťB4”4EĆOňYJk:T©YĹRą)Çx¶¬4"¦XýIÖ˛zÇ– ÝçHW¦Mţ2R¦üÄŞ\˙ş4ˇ~‡™{iÜYËWŔĆť!E$1 ´Ňv ¦‰UlŇśZŔ®bŃt^|kRýjŮĐîµ­LŐâałZYŃ"ó´§ %5{šZŐ.łě›¬lcÚŰę6¬ŽÝ-n?éŰŕjÓłÂĺNn‹»[Ú"W)±]®swŰÜçJW´Ńť®u˙ZÝëj¶ÇÝ®w—›ÝďŠ7›áŻy‘XŢóŞ7ié]Ż{ŘÝ÷Ę—»ŔťŻ}±ßűę—ĽůÝŻŃŰß˙ ˝°á[ß+řŞ ^°ß×ŕKx‹ž°…˙Uŕ kŘFŢđ†Űëáő‚8Äç1‰Çkâ7Ĺ*Ţ.‹[|ÝĂţxş2žńsklcđv8ÇĆ1Ź…ëăű6ČBÖ-‘‹,Ű##™ş;^ň}•ědĹB9Ęř­0•<ĺ+ٶÉZ1—»\â/ĹbóŠËlfŁ9Í1^3›iěć7ß8ÎrÖ±•ë,ß,ă™zŢłKďěgőö9Đ4ˇŤyč'Ó9ŃI^4Ł™ čG«9Ň’n3Ą+ çKczΚ޴ťŹéé3w:Ô@v4©—jčS+ÎÔŞŽiŞ[Í\VĂz¬˛ž5;_m띎:סĹ5ŻUë_˙ÔÂ.ő®‹-W_#›ĂĎXłź íhK{ÚÔ®¶µŻŤílk{ŰÜî¶·ż îpSŰä.·ąĎŤît«{ţÝěn·»ß ďxË{Ţô®·˝ßä{ €řM€ @ŕx|á ox p<7 @ń‹gă?>ň„"wÉ`ň”·Ŕ-xÁĘ[°<ć4wAÍiÄ@;ŹÁ zţó űÜç2Af€t é;X:fĐô§K}R߬Ϋ÷ ë<đ¶îu°w˝?čČŽv ¤˝j‚Úţö!aîCXÝínw"AďDß÷ľ"~E ‚á Źx"Ţ€@ăđ€ÇGŢń‘ůË` ŕĽç;Ď€€^ôţ˘@č  ©€ë_{ŘçŰőŻ}lŹ{ ś çýĂ/ńŠ?<âÄŻ8Ĺ#Ž  É9ó?ţ|Łüă/gąő«_}™k?ć1Čy÷˝Żsž‹čäźŇ`ţô+]éIG:Řőř[}üłŽő­g˝üďś100€p8 €000Hh€ ř(!H‚g‚‘·€‚—Ç‚)肝·ś× Pz4z7(8ر{ł×oúöo?p@p ‡„§pÂgqƇq÷„ŕq'}Ô#G}'—rÓ§r,çr3·}6†05ÇsáG~<'t3 ΀nčqř†r‡!‡ŔŔ"Їč‡~ČH„hh`‹x‰hŤ‰Ź(‰Ť€°€—¨€™‰ 8˘HŠŁ¦¨¸řx`‚”'y&y–÷yµzźGz `z3Řz¬§z®Çz<řz>Ĺx{Ç{Ǹ{ w{Á|ŕŚLX|ǧ|Ő÷†ŤŮ¨ŤŰČŤÝčŤß¨n;euler-1.61.0/docs/images/shot8.gif0000644000175000001440000005536107430537701015525 0ustar ericusersGIF89aň$ç 0JJuśJqśRu¤Ju¤Ry¤Jy¤Ry¬R}¬Jq”Aq”Jm”Am”JmśAi‹Ji”Ai”AeAe‹AaJe‹Ji‹9]{A]9]9aAa‹ŐÚŐ9Y{A]{9UsAY{1Us9U{9Ys9Pj1Pj9Ps1Lj1Ps1Uj9Lj1Lbb™Í˙˙˙e”ćsćssćssć{sć‹sćśsć¤sć´sć˝sćÍsćŐsćŢsććsŢćsâćsĘćsĆćsľćsşćs¶ćsĄćsˇćsťćbs™ćsŞćs®ćsÎćsŇćsÖćR¬R´Z´Z…´R…´Z…˝Z‰˝J}¤J}¬R}¤Ruśsć{ćs‹ćsśćs¤ćssć”sć¬sćĹsÚćs˛ćsÂćR…˝R‰˝ZŤ˝ZŤĹZ‘Ĺb‘Ĺb‘Íb•ÍR‰´Z‘ÍZ•Íb™ŐbťŐZ•ĹZ™Í´ćs˝ćs¬ćsĹćsŐćsććsćÚsćĘsć¶sćĆsćŢsć˛sćÂsÍćsŢćsćŇsćÎsćâss‰ćs…ććľsćşsćÖssqćsućs‘ćć®sćťsćŤsćysć‘sć}sć•sćŞss•ćsŤć˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙,ň$ţH° Á*\ȰˇĂ‡#JśH±"Ă0@@ŔF„)˛LŞLɲ€\"xiA™6qŢĽyĎźM€"ęd(‚˘H›8iňDi(N–Bťę„ęÔ(P˘HŃe WŻ`»v•2eĚ”łdΞ-ŁÖ̶năN‰[ĆL]3vĎŕ5ĆŚŢľůžIsÍŕĂjźI¬† cÇmÔHnłbrĺĘnÔdެYó 7źWĽqCz´i7Ł& @ŔęŐbË–Ť16Ć@âÉ;÷Hr§ŚIÜĄńâ4aÎTNAóć>ˇ#¨ňS¨ĎĄMś.Ý®]{Ő¨UŁţĎJ+×­čĹJY3…}Z÷SҢU+źm™şříęĎ÷Lżg aV b„©‡‚ Fć :¸BdšĹš ´,ĐŔ†" ¸6Űlµe¤âGqDRÁ•”Ś-ŐxśL4ĺTÓM;ćTťuFeRG9Ő”TQ=őťUKš—žW[…5`‘e–ZX˛u–[pÍĺĺ~`–ˇ^€ńef_†fXb .ććcpRaesŞ!ŕ‰' ěąáź şazČŔ‡ âk&Ćۉ´Ů¦Űo”ŠdiH-!w#q0)÷ŹXá >‰úcuA]—]wÜqwdUţM°^V,WŢVY=ů{Ľ˛0߯gůŞĺ\ü…©^˙ůE`aŞyX‚ĺ)­ž}ćąźŘ^«mˇ.°a‡Ž(˘%>Ş˘m*ŢÖ˘F.^#ŤÁ­$oq,ÔËBŽ ’ÚăM§ĺSPB ™ÔRG>%«’L^uëW EĺXía9…Żo©eß—_ň·ÁĆo`ć_ É×Î 'K ňĘ+;в0Cŕ€ĚyŇ<łžđ‰g < Ú3Ď„šh«µV´l梋în¸ů Nu,@@ŐPŻq,P}LöľD*©ÍŐKcS‡ U©KŮëT˝­U˛:Q+ţŢPěMk˝ćŐ% ëEě+|iuĚńZiŐĺ±ă` $Á“WN9ĺ*G@ÁĘp.Aç Kđ€č˘ăL-µŮfű€¶Ţ*ę-¸âĆNn٦xEF,l¤QîR‡ÄűÔż×[cŐ^k˝µrT×´u×kłp©kű˝Qpýł  PŐŰw÷UqŻwř´bĺ+Ţ]=<ĺC±Äk˝żÁĹn dÁLđď˙Đ˙ \΀•;YĘXĆŔ–­Lf0«™žl6­ś]Ë‚?óYĐĄ¨DŮ«5`ÁjX†Đ^%ěHFxSµŢ] $"ąšđ^8€®i-&6Ľ×ó:ĄĽ{á„:ţĐc[ôÚ&˝"®­(Ú_¬¶·¨ä *Qqßx°˛\ťG+UTOW2űY@qËźŘ?2f`r´ś/·˛JŔe*s™Ë:ç˛ŃA tt@µô:mńégú „".€…tŤ eCBua„„W{d»Zµšx—LI×®†śćŐä“]»W(•gDíEo‰§”Uô´ÇJ§@Á)pBľK«PQ Č ”˘ ř’čŔ/;° X Çôâ”ÉĚ.⯋eüßËHŔ4r D™6čĆ8ľ,‚0› éXp:@ ^bA Ů3v­ ¨WkH†°„řţĽgź–›ĆĐwŔÁÔÔnč’{O‡ˇDčLX *´5tz?Ú@ކ"QVĹR)ÝN/=Ŕ€qĂäŔ8 Ě’’”@)3—ąLhZ@0˝@LÉHF4˛ń¦jÔ€6¨2:~«€˝Č™'r‘|˛×µĚÉş?!ŇQ˝î‰Â|6Ň„R«×F´Ú.ßYj“–|ˇ×4Y<Ş””hÍ O>*”&HtH±,’@@ŕşÚő®!°k^óÚQľŠ€ýë/}9R†ô+M,K1°Xý]ŕ h@^3;ÍlŞ˛Ń“‚z"Şź €ÁtfzçĐ…4Hą–#˛éţÍ?g‹)K±dšâ”nyx ˇ?Fŕx ÇMî]—ŰŃşvôąŤ.` +aúҤŘ=iJYęEgľô»iţÄKSšÚtŤčÍË:×S †ntBí´ö¨-¤ú±©Üâ‡d'»¤Ejiëj Gň.•ŔËFĂ9ÎLdŞťÄ#0„G@ [%Ŕ°†3Ěaăbř@čJ׺–xÄuÍ«s=‚ŔöĹ.öĄ`kÝds™Čä.w˝ MiF“šÔ”@±ąÍ"«—p|c8!(N Î×O§őŮ x¶ZÖČh´smmšĆ´Ţxů73*€@R ‚ŔĚF3ţ„×áŔÍ.Á2<\:#÷ÎÉĹł^íÚWéúů!čhaEJhaŽÔ¤ŰE©JuÜÝ <“Ľ2Ť4ekzYśâT§Ř\{ŰŰ9ř’nty´iůx_>­ŽO­KíÂ5.ÍN˲ѝ€[´‘KˇÄ"¸Îµ®wÍë^űú× Y°‡MěbűŘČN¶˛—Íěf;űŮĐŽ¶´§Míj'[ +޶·Íín{űŰŕ·¸ÇMîr›űÜčN·şĹ˝lŻűÝđŽ·ĽçMďzŰ{¨í@¶ďÍď~űűßxľ÷đ‚üŕGřŔÎđ†;üáç^8Ä'NńŠ3\âϸĆ7.oŚsüă ą·ţ=.ň’›|ă$?ąĘWŢđ”÷»-p `.ó™Ă<ć6żyÍs~ó÷\ć?çyĎiÎs›ťć:ú΋žtź#ýéCoşĎg~tŞC]č@şŐ«u˘7}ëS·z Fîî‚Ëü09 bťË@3AÍă÷ťc o—yö^s-láď5ç‚ŕąPsŔkAďYpAä^÷Ôŕ.¸äq€Pžň–Ç lŕĐ€.˝ îžvŔŕ.xÁŕWOřÔż ímď‚ şyČëŔ:¸˝ ”  ČÜ÷.ď•ŕ‚ě ř2‡ĽěeĎ÷8ő.üßĎwĆGţú.ĚÉţ®o·ú¦Ż9Űó>wĐýüwŻůŰe wháđŃ˙»ŕwÎ…żŢýZ ţâÍ/wÇG^ň–—y—Wyš·yˇz˘Gz.`z¨§z¬7®{ł7{µg{¸'sĽ|Č{»g|ȧ|¸w‰ç|2g[Ps|·rW{Ů's`0vÝćrüvvi·€l×v2÷vu·tüwwwÇ~. |‡~w‚X÷÷~ů§x‰×xţ'y'€hy›Çyź—€ŁWz§—zIHx {Ë÷×w{·G|˝§j(|hx| (‚ĚG} ř(NČć—|/¨}2Čm4xo- wH5 s5p…ţśw}R€5·yŽW]‰5‡9¨‚Y`z0xŠç•„ˇzX…90Šą—{ŁřčŁ7zú×€_z©G}X°Š^ŕ.`‹‡|;ŔĽľn¸_ŕĂ(s {Ňçr°ŚK7s@.@ĐXz‚Ř‚×Ç}p27źWsŞXs‹Ž’g€†¨Š]ŕ‰śČvE¸s$؉é׍4Š—çŁĄ¨§¸.ŕ釭č…Ih‚/ ‹´h‹¸XyĆw|2ÇľXs IŚĂ€ś8‘ѧŚĚXY2÷ŚĐHĄ—‡yX{}¸mhoK÷y…¸ŹČ>Ř6’5 ţ‰Łww:$x‰¦w“5ŮŹŹť7ŹőhŹĄXʍ¸Ź…ŘŹ˙č€(™~µ€—ĽXsľř_0Ś9‘m'}r sr‘uŕŚ2'Ť ř‘‚¨‡.€ŤŢw–ŢŘ’¨(Žäh”ł‰ł8z•x¸Ž98‹wדťg‡AyŹD)…Fy”ł¸‚&ř…L™xýx‹iyÁČ‹ ů‹ (ŚiŚ‚€·Ś_©‘.ŕŚĎŤÓvÖ7…3§–fg~Ý荇x…,ąsăx…0)sç~2§Žš¸t{w—žŘŤWH€‚YŹ„9ŠXürzŚŮ€|׏‰‹’醔ů‹ŔX|™•Çţȉśi‘])są‘dą€j—‡ÖyŞp-Py2GŠĄ¨5Ç.ŔôŮ=°t:0ŹŘ™­‰~@Žł÷ÉyóXŠŘ™ĆWŠXůщ‡Š‰z(¸ząá—w2ŕ—ŚxŠCyŠ™ąŹĘ~šˇivŕvp(z. ˘2G˘¤Iž¦™‡#©m%Yo27ś-™ô)ź;jźöi č‚¶8˘w˙Y—sŮţ÷š?Yy÷x Ş Ů u÷ ń'7ˇĘ~z€EI”¸—íy•Äś…˘°8ˇ9%J˘(Zs(ę˘vĐ‘ÓHžÖ—ž·ž5çžą‚n‰źąÇž8Ŕţµh‹YŘK—~‘¨¤FÉy›‡yOŞÁ(ĄWIĄrgĄšĄ€·ĄCŘ“HŹîŮžŁ¸ fş (˘bI˘%ş˘,zŞú˘Ąiž©9ep7:ş'sĆ·ŁóYź>Ş{ů‰y†Y¨˘Gţy¤sYއř—ř¤Ş Š•–z‡Y`‚™:›Ę©đř© şˇŁš™ß¦¨—Ş«š˘*ʢŻJ–fy§´Ú}§§>اđé–?š{7š‹70¤^…s7Gzw˛ ś–© ‚ąG¦ ™şśWş«W‡ÚŠ€x§(”řȡW9ŚŞ˘Đ'š&j˘'ÚŞqÚ˘tŞv1:3ŠoµŞţŤ.ŕ?ł?°5A 8kł6Kł/ë> }ŮgŻú)…Oéš) ™^p…YŚňz|;Ę>zźJ€ÓĘvśř~±ö‡é¬]đ”^`«°…Їr—v)˛!‹l›.nű¶l‹j[˘ů‘+k/5Jo-ŕ-©:{ł9«łkč·/ű‹¸'´”7…ůZ¨ßčx…š´ŽŞ°ďé†Oµ‰U {X{­Jhx‡gµ‹Š´o)s Ë Éxg;–Đئ%:·o ·p+s°ë˘i~i‡§˙&s0+łkhł-ąłj賆‹¸šy†‰´Ź¸Ľ‘ë¨6@ą}Šť—룙Kµ ţKwZŮąö§µ ›Ž±'{e»dş´Ńi}Ů‘mę°+»ěK·l›ľ'~y[/{;o}Ű»1Ëł.`ł8+ű»sHĽ?›}`«ěąúşĽZ´W¸ ú=ú«¸7Ź`»ŤrgµLxĄşµď{ß ľO)…c»±ÓZžië˘l«ľě»)ŚrŤŃ·şëo ¸:Űżű+Ľ5GĽ YŔŠ[yD[´ |´’»y|{Ú«P+ÁÁZyڇ¬˝«© ëÁ˶(Â#<Śekľ0ÜşmÚ²+sp[»m Ť1\–iŮ®Ůřo-0pÇD0Çt<ÇEpÇ.@Çq<aŕaţbČ.@™*¦Łş±µ—ZL¦ő‚OKŔ`đ´n8Ź’Ň·˝Tś‚śŽŞ{*…JËŻš¦"ú¦wŕ¶p«zŕ­,s{Ë{ŕ|Ŕ. ‘ Ix\0ż,PżňöĆ{<u\Çw\y<Ç{üÇ~Čb0ČS‰ť;¶,i€‹<ŚŤě´Ľú‹’\|”쨶){¬Á›ŚüÉú—˘ě¨¤ĚĄ¦¬¦¨»yĐʬěĘ­,˶lËá©‘óÇËľŚnFđĎöĚ{<ĚDŕzÇÜÇĚÜĚĽx™D)ÍłąyâËČŤ\|OkťŰĽÝÜyWܵ¬É‚W‡ {Şk¦•,Ę ţŹ\*„ăęά ĎôĚʬ<˱|Ďř|Ëş<«~زőöĎFĐ{ě–v|ÇťÇÉśĐ.ŔĚL0ČýĐW™Î˝Č :Š–»Ł˝Ł“Śy•ÜŃá ŇźËÉZ`µ1PŇŤę¨(˝y*=„°ŘŇ+úŇł+ÓpMÓ{PË´|Ëúěó7ĂóćÓö˛tw|;w‚ Ř5gĚ>I|;G˝5—źŽÉ{ŻŹ­«˝sÚĽtÍžŤ°â§Ć…·µ…ǵ“8“;W¶Ą]‹śť›°Xs.˝sł<Ď5×~ŕKG·đ;GüĚÓôĆ×őŇ‚]ĚE0ŘÄMÜÂíqŚŘí{H|Ô{ŹÂ‰ČŐţAYŐôyŐô™Ő•·ŐÉZ‰¦Ç™(Ţř·‚|‰=ą§í’ŘxŞby®*Ë1­}Pßłí~ĐÂ.pŰ_¬Űz-oĐÁ]ĚĹ]ŕ.PĚČ ÇĘťŘč.`ź‰{Ľ”'ݸ±Ô]Ń;đČÚŚŐܬŐŢÜÝVűÝ+} KŢ3é—…z…‘»ŢxvkÚÖo*Ë1íöMŰůíľűŤŰtşŰţ×NÜ.s{Ľŕ(|»÷ŕR[ŠIágáXÝŘLźüČĆ•üÍŢ[–$ľµÜ„{WŢđ´*^¨WÜâ©§¦.ăň-Ó4.ŰřťßękŰű˝ă˙ ?>ÜA>Řţ2wÇE®ÜGކJáÁjyNľ´NŐS.źNĺWN€Yâm÷Ýŕíĺ%î„b.‘)ľy+>—hţjăńÝćólßqîľtţvÎĆއę–ĘÝżB †ĽëłÚ§} ” +Žx ‹«ĎŞä=Ä +­©ĺëW–Y‡ĎGÎé韸é6ą=ÉÎ2§]Ů•€ŕ€°íđíqnă~ . ‚ß·|ËŕÍămLĂ.€đďňď ëý |@ ŔÜÔßúÔĽ.Ő¸ŠÄƵĮdkťě Ř€(ŘěLčÁĐNÍËéÄz€+}íŮÎíŰŕßNŰq^sćNîošţĎŕ˝Ć;Ýăy:ď,Oďőž8|äÄ ÉÁ¨ëůďŐ<Ő<đ>Zđ‹ źw źz o‚˙ě'Ž€č]sÄŠ€xŮ®íÜŢńßq>ň$Ż˘¸¬‘€Çî­Ţň,˙ň0/sł>Ľ~űłU ÍNý8/yckČ+©­ ;Ąôě·đjyôl'ćŢŘôˇWĘPźńÝîńT?ŰŚ?Ű#˙Ňw°őęőďęęŻţę÷>Ľ=‹¸ ąölßöoß­M+s=Źť”ş°¨ť¬ zÖĘ÷ č÷1řźW¶*ÎźÝhřPŻŚŻřßřŚoîĺţÎá)}”o«»·ČźüĘżü.ü”ţÉT®« Ş{—ǸX´ +íĎ‹•—”€š±9°  ŞúBü|Đ÷~¸pÇĄJÍăř—Zw—šxş,ů‰/st˝sÝ.ůóÇ…Ń‚Ĺ@‚W°˘ŕB† >lˇDÉŠ-^tQ‘ ]đŕ±C䎎:\ŕŔŃńĆJ-=zéŃĚ–-żÜ<‰2ÇÎ.tüާ‹›_ĽĚ<ę˘K2śş€CËT-2]PŤ ŁéÓ]]Ôë†ؕ7\~[Å׎Y\páâ˘Ną€\ćŹG˝xíĘĄ ÷-Ô¨.LřPńâ‡V?vĽ$H‘%zÄQÖlG0=ÇţL*ÖfŃś<{:”´gĄK·ĘĐ*•ę Ú/®N-씫״śm”­9¶7[·qăÎĄ‹·Ł^˝.úv4W®ń¸Z]tX!cîÜ#NĽľbFŠ%ó)ňrÎĚ+}wţ š&ç˘_Rş0íµĐžő‘]Š)ÝbŁJ‹ÚlĂJ+ÝÖâ­7Ń€«I-°f`Đ…âŢ:.9ż–ŰË#żč’..¨Ă®!íşCQ±ľ€ĚŁ›P‚˛›4ăě3µľ˘!GäQGô¬¬Ž^„±Hż-µş˘P7·˛(°Ŕ¬`!°ŔŇE‹("q¨ďV’P­,cŁÎ…9Ö”®Łąä€łŁ-¶°ţĐB·Ř: ˇíRäł !ë”EÇP tF1ądMIy ĐÇ´j8 ¦˛pbŻČ”nJr8Żś´0ĘŁŞňĘ,·¬ÉË/Ăó†°jŔâJÂ0|k5ç@®V9:’cNč̢׵Ö*‘ˇű$–… ÔRB•‰Ą–’ňâŃ[ě(ÇGA›”´J]DŇĄGlŇ©'=Ĺ-++cČ‹iipɆú`DUĚŢZĹ"6 ăZÓÍZ=‚3×]yíBŻňL¬Ř>˙d–ZżĐ¬Ë˙ÔrGF»¶Ł´XË–H™–íV8MĂ•ÁWrµňÜt×m÷ÝűŠ˘1¬3í… ß|ez3Î]۲ó×ëŢÓ`Wţ,4Y”Ř Ú=ß¶xщ#ţŃâĎTňOY01Ë™|Mdr ÓŞJzŐŤ¸ę±(=IP†Ë*ÓŐÂ`‘ YŐÜ÷M\éÔŐ­_» vˇa}FQaż[d’-Źt#ĽĘ kĂúŹËŕjmKpłvkĘ)sŢJŕĘLUĚžrŘĎŁť:·XT;ÝŞÍ#]=*l+-#ö˛#žůN±  <÷Ö&PpʰĂđ§{J·ŔwÇŹÔ ɱv˛rË {rA¬{?Đ÷Ű ?÷äu5Ë^Q§muhł†â™&ЍĽ Ú›v†Ś ź €sżýoČt~řŽś2ś˙2Ç$¦(ĺb9Ęňţ’ä™çmJ\Ň›^ť˛`˝©%{;Ůz’=3ŃëIY°Íůćd>®ÉŔu4Rěf'ż†ÔĎ~~Ëď…żdip  đń‰YC2’ĎődLezガĐŰ th>Ş] †×ˇÖj_Ź‘Użč0[Ú*,f·Ť éT‡Ú’Ŕk•kz”#áݱ7gr_Ă ÎŤÉsÝsAzP‰HÄ"=.v7*ÖřČŞ’MGćęS„! u5Ń]Y[¸Ö˝Č™™ ŕD[úŇ·÷Ĺ/ą:Ţö¶WO.b—ňŃÖNťYMnMŘ•ć:±{Ňť.E:bÝŠH7şűÓÓ&9vą„ž¨-oy›É‚g®÷osYÓlćŮć×ĹpŮ/5­X ţ%KKłJďt`Ç&¸Ť“kâs{a KÄ#¶0†3 WzDGí’+yĎk^è¶gë5Ö{]+˶ľ2y1~cÜČҸzNůš ?Şă®¤ Á>^âZů`éąşK „µ›Î5Ď»Űe}:eô K˝X6Ö˝hFűv°G ýJ˙ˇVń}Ś—ë{[FZńk_ń€86çÎÍ=ö1şč%UÖŕ(ý©\ „Ôú>đ |`&äS®ß Îgć9´ĘA .8vŠPh˝ËVa´˘ éHGş#•ľtŠű%ßm{¤ľöŤŮżv›E­„zxŔ#őRĚľ7ţ'8|¬Ž‰«×óS0ČšÖ¶Ću®yÝ‘ĐSHÁV{\P™;ŮË.ÂKĚÚ0ú1~ˇ¶ ¨ý‡kg{MŰîWĆéĐúŢVܶ!wą'¸ tó° ë¦W»•»j×´šE݆µ˝m}ë|»Ŕ<üŽŤ —(Đ“ŕw˛®pgŻ·áŃn4t">qJë«)îň­2®iŽ[0#ů§Gů_Ńb)Ý'§!»QíăŽÜ).ůĽ:ë{×:ßúŢČŔް)ŻçbÍ'I Žđ„ŐčHo´r:RíIcŰMPÇřÔĺđe«Çë çăČĎŤ…ŻŁüJ*gٱĐňxËŰ$°fűĚßΑ¸“ţ¤HÎ5 =ŇąćŮČć{•Ó»ZD·`·Ç}PŰ•vş¶żř/súń磱…ŕI/3ŇđÔČŨnŇ|öΧÝ$÷dűŰGoó^“$?,PKĘŇYô @pŽŕ‚őťöX¶}îĺř»ôžéM‡ďŇĎxăůTy’ĺ»’ćĂźçs«čC3Qἣ ŤWĂ>‰Đľ|#˝î“©ţ0gż• żŹH?ôS?ö[?żc8ů›żÝ¸ű Ó?Ĺ«-h±Ü:ľHľ‹B)ć#@Ką±*éS@ęc@Ďs)°·Ä5îŁŔď»ŔÔËŔŘ@Hżô[ż#A+C4‚ţ?Ľ=<ÁÂŁ8‹ľĹ«ş„1¬›1Tľl•ÄÁVQ9Äž4ý¸ŚÉB"4B´RŤ$ ŽńÓžň3?ô‹Â#pż+3:,ĽݫżGc:°´ü‹­© CÚň82ä$3¤ÁPÉ5Äšă:@C$8l@BYłĂ}óľ<<  ěC—ę@öÁA¬ÂhßłĹ[ôlŻŽ:âŰ8ńýłň´Ş@ŞsqĂ4ÔD áÄ5ҡ7ôAÔ«Ŕ‰µł¸Ë. 3‰Ó ?ř ›đ˛2‰"D@$ĹYD#‰‹4]¤‹YéĹŮ FÜFbĽ˘‡şś´1pQCDZ'gţ$9łkI«j\;«Ř=+‰ś ?Ç ˘¸ Č5r4Çt*iŞĹ[ÔČ3<ą@ĽnűĹűŞGó‘ÁOéð\FČ5úD<Š9ó,k4…ô †d‰şűFw‘7źČ\;Gfź˘#ŚÜȤľüČ[‘D1FŹčŻŠ*,}”tYĆęźČ—ŚF™$8złÉ„„0ý𷳣ůĂW+B(ǡA¤JJŤ¤8F´8Ă•§I’2«ÄO˘«üš¬.HjÉ€Ü<8äÝ˟K&(K 8K18šp‰PÔµ‰|KtŚKů‘¦u” úz :‘Jľň›ţPâŞ*ň§V9&ßA¬űń5ú§u’‰ĹT%]čň‘)™ČAńŤq2‰‘ úˇ¤YłH… M¤Ż/Ô´ě1”1OjŞżĘ Čň6˛!3â32@gôJ%śř‚ü FßüMžŔ‰L9'W°ôG{“*śĹŘ8ÇNÍĆ#IA*í,7™čü~499žkF—„FŽ‹”ˇž¨ ÇЧ´ę–Ä’$ă¬H”źd;ćüL…ŠD:X1Čř6ÁPŔÄGoňČŠ>ÍSĆšm3ëĘ - Ĺ eOöäP$ Y3×x 8ë+Ńć„?Âjţ ĺÖ´Ś‚ ŕŇRŕB¤-ýÎăáť$epáRÚ”PŻë ĘęŤ ú#a•@ ¦ -TŰ ×T"ę’ž#¨…&SÚ*ѤQ)-4óR/íR-•M0ť1Ť#U§ŕ!Ď’›uů–R©Ń!9 «bѨ«´ˇŠń°ű€RŁ“Ň^1Đ$r'™°JésÍáŇÇ@S]Tâ OGOśUJ]ÓŃ K1Í”Š ś¶ÂRĄ,±8>µ$?˝%«Č&ČHĐĘŇBÍ%kĄ<üQ3[ÍQ\ŤĐÜŐiy”ó,Ў± đs&‹¬y -;Qí’űŔRe¸SÍ‚rڍ€¬iţ˝!ÂÁÖÝR±›!oeCgÄĘ4×´8 •VđC Đ‘9…>WuMRŐüś=Bd­şł ‰‘!©z k‹ř0Yé¨?SYk± Ĺ/1]C®\PÍVŻĐ‘o™Łĺů Ęr §Ôܦ©();ýPzĹ«p&k2j™Ď?#NѦŞZŮÇ Şř\—i)5E«ŮIŤoA JÎç[ę©8;Ű­R'Ř‘=C{?‹äŚŢŮťá˘Zµ8Ů“ý–§YďR’”ý.ĘÚo]®YťT"ÂŮĐ(•%m Ĭ˘IŰŔ\MD*Zf#±p\đĘ1Ą€ § ‹Đ°Šřč[ţ«]Y«ŞZ©ý®Ý‰YňÔŐŔŮ’Ĺő:JKç©– á”^q¨ Ő‚ˇ}׊Á\j=NŮ»mZÉÝ“Í[E9]ŔM]•Ý(usTÄÜZp…ÝŘ ]Ědžîš1ˇź=ŰÉ•Áµ­˘PÍŁ*îëMŢDTÔŚ /Ó0 LN•P oÜ[ľM‹Á5Ţ2…Ô•T8šŢFáV°łQ,8‡ę4ÚÚ?y¬N.ˇ()őU¨á]ĎÝÔżpߍqÓ \˝îí_˙5]¦áNL*ŕămZ%˝.­’N҂ՉÎ[±Š§ěÔÁśŕ•öĄF÷”řÍNű5WńŠ—Ô“ţ‰Ú=a”5]ĘZáG`€,Ě•a™ Ţ5ĄPˇ şŮęśşţl!# Nf}fćf^Ο虉š¶éi.‰űŤ‘kîĆvih«ęmá5şÖ¶íźÜ…’Şč´~‘:€ęűkÄwŚçęśg™Ë "@ěÇđ<[&z“‰Ť°żŮä®¶ őD`r™Đ°Uj2ę-r+ţV=Ąr ĂyÖ¬0MŽ›™ 4Áă=×–8Š»K™¸j)lpB "pÄ!¨ąŠ ëźâ5‹0"ôY›µŠ0ĺ!Öi±şf˘mţßĹęb.uĆTS°í6í­Bí]©-¨cÄÖv4±żŹţ¨ěbąíáÝíŢ&‚ŕîá¦âă¶3%Pîe&Ź—8´.=\žęęë~h°ÓĘoĺîV]#pďđcy$ďJŰD¬?ß>ö®íbďÄžďßnűhă6 [‚e&ÂꚌŔľ|BëKIBÇq‰†VáŰŃăj׿^3©Ëa䍣+oóţ‹ófG.„ţÇ9hoůiBďŢîß~;<Ăłâ>nňPńdq {ńSLe‡_ '°ěŢĘAíÄëqTűńQ r$r¨V»p4ĺđkxlň5.ůćí)ßL\ĂFÍ"eňX‚š›ąDݵevěĘŠ´žń·ń˙­Ű.®!¬‚ľ?îţ ůyň|éëjKDcG¨–•5Ůsľi>Gě?§ďíăBKň@tEź9F_;G§ĚˇąćĚž[Wî JçVD>.MĎĽďôEő §´+uIf=ďpbiő(ńú®ąó0+RFń|ĂőD×u0 †třő韎–”­t˙ć+Föx×*;ţńô8uQvjű ŢÓđ Wőjď“á-§ď‡;&Đ,đv ÷p·5##ĺrté&p±QwŞZ—ÂMę5—÷3©ˇ›ńžó|‡´;Oďßk:×Ď*xŢömŕ6x#Lř…gxpř‡—µçőź §é¶ř‹Ün¶t­íxM˙ř0o O1Ůţß3yETr•ßŘY4– ńßf»€îÔ‰ýĐ3ź˛.׎гW3 ôěĆM]—ý®ÂµS3ŤkďNö)1Fb„Î!çEv†ęwŢE5ˇŻU÷™ [6úfńl¤¶ŚŻ§+-ż3Ćć>…$«ł÷áăµę-Ů5|ű¸Wsţ´’ËÁëň{wş"×EŹH±x>iÁńM.Ë’đg®'{érlÇ·Šň K #$TŽđ˛nËwhŔu{zŮřćĘTăšŰ·fO±©6}šyşÔç8Ŕ7á-‚«·7%ĐúWË  Đúۧ±×}ɜ̟@ųѥŕ·ü KpÍÇô¸O~‹ ­Čč ß8¨CwţëéÚ,$¸€2lčđˇ‹?\ôčáÂEŽżp´aă"Č7FŢŕř¤F*w°lér‡JqĐäčâ‹GŹ^\x©áł† B‡-:4hQ¤4ş0í2ăé P/b©jőŞUX±Ęčţ*#F ałdĂŚj_€ÜÂĺ-tčŔ­Ë…­‹Zöjčđ`‡‚?lqŃ"EŤM‚ĚéŘăĹ‘&żdĽó%f™.tЬygNž=-mÚ(ҦNˇ˛® r+ěŘ^ż‚˝HÖěٵ/¶đův.]» ×îů°BÂĘ•GśXŃbĆ'o>®>2$Çčšu`viYegźAôbţgŤÓęM§nĘşőŐň燬:,Ř,qźÍ»›·[qŃçŰ]j´—_ !·‚µŕbŃm4Ý€"•4ťv*UxL1Ń4aGŮ`Ţh> µˇRëµÇÔ{PĹö"l!u…_ d釛ţXpvÁ…—^|%ČĐ‚ ąa?XT‘bŇmTÝc×xQ1q×]KVŠWc9‘čSH*^´ A©ÖâS0ŞÉ• ágci­µ…Ž<ÎĺăpjwŃq%w$ !}4&HPuE_U¬•)”y"MŢd6ąŕeŁD1UhThBĄZuĘ^QŞąŔéj-ŠJ*ŞN]•}‡^DcX(ľ«Ta1äBEz¤ N ’POÉč‚W®az˘h;Iů¤ŚÝ4©NyA”§¬IĄé ¨Ž ęP§rŞ©·©ž),U÷Ĺ:«ŤúĄKVm ue¬ }¶+aFŘKażNŠěŞ3ÔZä*%­ţ $I:`—’x”{Sa›­¶)&ŐmSŁ~‹f¸â˛8îŇFcHdąnH`yőÚ­ňţIŻ`÷Ô«xˇ!%0±ÄľŰń±c6Ů…5ic$N;fĂÂ>śjPSkfŤ‚Ű´ĆEłŠĹż°Ö¨ß|ěâ×&±WáZ®,?ä2 ůB6pż˙ÚpTŰJëŲ&ýě,Ą• U4}ďĄz”z ‰ű4§˛ök•ąnć·.Éň‹sĽů)vËdËwîpôń†×ZPîéĄ Ő@bH@ą :çťĘČuÉřťﵝoË/ÚŔ%;잇îÓN ĺ.ź‰e >ßç»GöµAŹCîŮeżúŞY!©Őţ›|Ä]¤y¬Y5őS…¤uëi|ÄZm5×W±&*™Kżn>R詏»Đ_’Ţűݦîpß`śăóOصbťkVŽt -‰/ł KUL×ô´ď<Úó]S˛â•ďÁędV_ĹĘWúe}ęk ±GqÁŽ}"Ţ@¶żÂ,O,ÍËô\pąî%V1`śëŘ×>ôK58ŁÚŚT÷˝bi…mÂjʢȤ4%zđ' ÜÉú,eş E„˘! źň·˛:¤ŞC‹śBB':ĺiOţ+bÇ®GşŠb—"\k3Ä›iĹZH\"j4H­&Ňo@ę“"©,6ż‹Ď<÷+ Y B.2ţ$_sąČć’?üÁv‰%) 9pR†˝1ă /Xˇ©±M4‚SäcŁ­*>w¬"Ë'&Kf<“ c(d!’đňó錆S‘D.’‘ńĎEé‚Hj“.¸äE(ů9\DdÜ‚ ·¶‡‘’k«QHš‡¬e•­tÍ+iKYň‘–$T/ –Ë/ÄE¸ô™x@˘’ŠŕOAĆ3fCIHF$”´$B3MNRÓ“.0 ~:–¨‡eĹfłMYř3N‘ůo6hTM׹Î'‚ZńĽçdNŞR^ f1É0UĐ.Şe s‘ä2›)źLꔓלž ŤĹÍŢçţU¨Ô( ŇZ1éé,iÉ“ś¨4RY©J±ó…đlç9Yô§ţfZŕÔ’Ä @@˘­k•‹Ôˇ®.xËC‹“8±xÔpWnř˘ÝđE gŤ\cÄ„T‡$!”n)O|ŇD1żŁĎJZ†(ˇłb¸ůO±âk™Đ´Z]0µ®µ­‚`m ř [ČU®.°+\ňšÍU¶Ëcß$Y`÷2XâđĄy‰•¨˘ŇçŘǶŻ:“:éŁ|ťéfČJÖµRK.†ív¶ł.xEVҲ`™’DhZŃúÖů¬U¶ł­mn{WĽňE]ĺ4§GßŘŕjA7ţţ Ň^ŚQ‰^‹±Ę-dű’YÇ@«`˝|ÔL¦‹ę^÷ş›á‡¶Ë]%€Ľˇ•)yńu^„Ş6µ.hm[O ÷ÎU®vŤ/^ó*˛űšl6‡ŇďČřcŔčذ%ΠŇX MÁ <´>ĎÉŔ ¦n•*lĄhVĂö,xżJ¤Ń’×0s0k‰/[מ¸˝‰k‹_íeĆ4˛ńŤó3˛Śš%›˙e ćŠű㊠ůŔă`–Ú$µ%„ ÚjMBz¸Č!Bť‡Q»Ŕ˝•ľd'e(CÜřŹ‚cÁŽÖâÉÎĎţ¶ďÉ śÄ#y>P Íd?ääęĘä%ô©’Ílw Î^‚.â P.H¶%b‚T:˝Ŕ´¦9}=¢uJ=[łv˛7[`µ«wŁXłe€öľśę;ç“%—QGÔŻîBouKÓĹnv]°ç0ĽĘ憟˝ř âŐ¶6¶“ ím—׬hM«kĹíir—ŰčN·©ŮMMwó§Őßłh {ŰŰ@·Ţ÷ˇúMČ&Yŕż&¸°~–(ś% ÎĂ#îlŠW|ÚŐľv¶AĽíx<µ!7„ :íéP‡ÚäŁćş+í†:´ĺńž1dMóÚĽľęâţ÷T†hźűč'vv[rtd+[é.€vÓźžqŤK=ÄTż¤ŐCžu­“\Ô^»l/‰ęvÓÉě®F{¬ó˛vÉÚí#»°äž`ş×=ŘwĎ‹nô˝'˝ŮĽĹ© ő¨k‘ăeÓdâSĚő‘›;Ô{pÁöy>HľšÔ4ĺ™úM±¸0ó˙ ^ď­Űç:îţöBhLzA/ů$ݬ„Š­w¤÷˝ŃL`‚ ş+‰Čax6ľmŕ>÷ĺ5ďąüŕżřdG>ĽŐŘňŐFÚáŮŽä–ôy^T_č]_ö=ŕöAF÷ť„ˇ…źř-ů%›†mÖů]™¬ß<üĹ_áţ1’˝·Q’·› Üß!ä_ןđ…ťĘ]žĹ›ĹŃR ĚŐoÔŬČô˝ť«XßΙdZŰ1FgH†Śßi ů1w}ŕú]ś ŔźüŮƬ`¦µŕýÁŕţźşťäĄž ‚ŚęĐ۬a¶rŤľÓG(á*Yú Ě@!†­ŢB\vWs°_µ…Á’`íÍÔ r›AŃ_Z©Ő‰ýH¤" BHŘV|ůĆ ąIE­ ă0_oý …„‹ëŚNđ 5†-UH‘„Á„ÄĘÇK„wŔ”˛…<[Hř@šŕŽť&…az±ţ}äÁ&n"myâm­YśëŘJQEË=Íu^+.ࡊíĚŔ‘””Ô-ÖUÉÓMT`”iĆ…aIBśvI\ĹőÓ–ŤEâË4TýU"kÉŕÉIă4ÎU|áV\¸áąăLĐRĄťć}#ž)ŕÉŁ%/ĄăŰ-ÜL€_<ö"‡ĽD=6ÚE8[Óc ’–aČÁĐ_L~\ ”A˘'n˘mBBÎWĚą9¤}ŘLfŢÚµ]›á±T í„cl¤s1—ĐŔÓdmU„ˇ^…Ý|â.HTÜ1ş$5-c%®VMžˇ×]D4¶BVŁ€V»OšH÷eŃţçĺ[R’š´ÉĄ4eĎńRĎ•sŐŇŮ TgPÉH"fČ6ŰłĺŁ–ĺ —QZóŕU$Ťu"‰™×EX#ZŘJ§0Ĺ:Y aÁ˛š¬IO€™Ĺ*–i˘G¶ăux O4µtčLĄ-Ye…Ç–$fH šJ„ĄXĺËšĹEf^„%ŐÖAžVAÍAr‚YĚ‘ÎíX'ÉŽŘŕénĽ&ýĺOĚć9Öf´”ČńMQđh0ز€Äo†G“=aeĚGq¶¤XQ§€ŕÔ—AÓE´&Y’$EŇšQ§V”Žç¬Źß0…DˇfDöŕ|č‚l’§O§ fh„ĐzžnţšH`Ď8Ë/'<"š>R&?çgúdAťšm( $”yIhÂŔ*Đ:Ťf(–]—žPh«íčhĘć`B%dx(zÔ°4%ŠHUF}ţVćç#ÎßeB$ťVm})Ĺ(^qÁaU§a',Ö@çdČôŕ`CŃĄ\g†&):.)“¶Ń‚ŮR‰R)pę°IŘ|čçL ´ÉˇěIŚŤ]Ş%ŘÚRő ,š.vĆtÇG…UDhťQhR‰ ~d c-ĘT>ם Ú¸QÍlĐ ©””îT!qÎTŇÔĚCMŹ€pÁŁrpŘ ^,UŰN Ň *ţÝxD=(~jkš…¨Žęµ€č©nhŞ2ŘŞŢMµĄ\>Ĺ+2ĹPXŃeÉŠyÜ*@ą‹ÍäŐg ČŘ9Ş ”\Éöö„ŻĚ“A éł‚çFeÜE‘ťç hߤlk™HÍiN¸Γz-ŐęÎ4XMš‹– ×dÓ^ôꣂD°ĘZm Ěb}NÉ pŞDáÇať¨Ş ČLR,¶ŽÂŽy0 Ă–âb!Ťď¤i96Đşç|ś«ˇ¦«Ć®«ťĺ–ŁÂ«2‰,±JĹ茲*ëF$ŮŔ¸Ë–éËŽLĚ’Ëő9eͬĚčDΞȸ´Íi·¶ŔRąŇÇúTěŃţÓ…LÁř¨EaMÖ,ŕEČŔ˘Ś¨bŞ^˛…$\b††Ę~â臶‰Ěf$m’íلМ^…7ąÜ÷(Ž˘ĘŔšÄG«Ŕˇ+ÝF†ÝŽJßöíQ…*̢֜ Ę}&ś <\Iî@pîˇ 4«V€ âĚŠGA;Nä:ĆNP®ĹÄDĆ+ÉHçn…ÚlČÜ2’aČÄ!ám­ĐYRن«$´hDFě‡<ś˛yŻÂůJ6kÇśFن9µjšŻÁ Żh`Oą†ą oăÖĘšĐč~Źč2ŇfŘíuŽ7qTČđĄÍümhHHK .H®Vî¦.ŠÖę9iŤň±o9NŐűvhţY§bŐď|€śe#˘X.śŃ}.‰°ťqńć  bULšr/ ň‰ÄOŹ"'rËĄ’#g#o±`aŽ|ĽÓKţň± ç1¨˛énJçÔđ ú}WËGHć+óŹ&l±‘Ňpťl¶&‹łéጌnĺ2¨‚W8łó<ôqA1ďJňXr2HŁ ń«§ĐĎuDó˙şŔůAš˛×ń[„>ń¨tłs®ś¦qyš” OnÎ…9Ë™ČP1}DkËöňm°Z* לŕŠ‚Me®?–WH0â˛Ä‡ Š|ĐôgČcJĘqB_ÄOżt#†„LŕtĄŞ­EQNWµÎĎ9ŠD-˘±é‚Ä^}gHŔE*ÖZ<Đť‰Q°n}ÔA=Ę=»@!1L/ ›-†chČŇőţ° \÷´OÜőűmáµô LEý^°™ę;Yô,ă©ypłk ˛IOä<Ű›Ž©d«oÝŤÖU]…ő‘ŚuY3âY—1Mě!oJ[oĆ[óp\ĎőO_^çő^×íuü5`ë čY«űŽmŞ*bw Ě–­ŕ[Đ\žL¶¬9¶e7”dćhödŞt‹âęg‹ń˛ î– 6ö‰H[őÄ-jÁ\ÁEř4¸Ŕ_úy—†čŔ'§iőú6Áćvs0T˙¨Dý¶`ů‡psÁQbŽd7€t5C1÷'‚5%ďOľ€věĆ.Z÷J-&™M|_w·˱\ţŹw]ßu#Â6‡­w{cOmÓm˙-}_4b+¶VĚXaˇ˘7qű} —'ÉëexŚj6g‹Ťa$‚y˙ř•ŐmÂŚmpqs\ %¸%PÂ"<ů"4ů’Ď55Ö’xßIĐvŰśpÎ=Ć0ÁĄ‘ČhöĺŚ7\X¶šß nŢÚÉĹ@á83ESBí8ËôřŹ—wkČóR‘głD¸@’#“79”Gy“ݶx{EP–5ąpąăzą‰+Ë”^Ő'ö¨ąş ůo¬ąeÓˇ›÷#ÉůÄäA!”ťÓ ž—·ž§ß…É„MDîźóS zˇ;9”Kąxg8Ł_ůg@úţ–są®Uú ý)¦_™oş˘žyޤ9¨÷H›Ź:d—:'1·LV’Ş'řń´:§_ĆSâ+Ěů­'y®:ŻŻöge?=ş–[Ô ű|[:J™„`.{ůśŮśťČ+Ȳ9ŚS»˝«©g{ťs;ä†"ĵĂw7÷jÄH”¶ `ą÷]>b› ÇA%||%@y†A»[ąEŔ;Plt¶‰Uŕ¶˝#;=eúĐ$jł÷;žŮ ś«Ŕű÷ ·$ăp,§f×AÂgi]DĂ÷úßý]Ä;Ĺ[|Ń1Ôm|Ç|Č?ůČ—|6Ł|u1ąü±űfľg4Í‹}ů;´çĽÎ×ţç·<çVĐçx]u¦Âó¸ $ýĂ/}eěVĽ÷]Ľ÷fĽĆW=Č‹|Żký»? ö¨Ľ9=(؇9ľËü˘đ;Y ý§«˝MÇŔËx<˙<dľßŃo»Ń“×Ý;Ľxw÷ÄqŻ”¶G0Ńí€)ĎŐ{|ácýjWyŁź|–§Ľ±xs}yŁ@~˛ŇsúČxúç?ŔK{ô V[ôĆĺÓ'dŃ_¬íťľŇ[xeä@ëŻő”ÄţěCÝP˝Ő‹|î»ű’;T”7K”đżĽŘĎâń7{§?ű§Ű¸š‹ş­I6@lqáB .tşłpNť:.ęŘ‘h§ ‹/®ţ`FŹA†éb‘ 1&]čHéÂK4\Ŕě2“FM^pşŔˇ“‡‹ž.€âbČ"G‘ ă"ĚR%JRŞTiŁĺL2°̲•k–_±`qĹj9o¤˝ń…-·8زHµćX±X¶şČ˘…ďŔ- lđď_}a$îÚ51Ś|_D~1Đ B:V ©‘ŁHĎźG’DyRŞË–ugv±IĂËŮÖn}ţ´(ѤH™6uń4ęJŞ.¬f•ˇw±W°wËşvˇvmŰ·qżĚ} 3ěŘĽ{űýO’îýۦţů6sňb§ťxč)¨ŮŠę¶"rs *%¤šŠ%łş«®´2.†ęȢ§Ö‹K'· űm:»¬ËB/ľú*Ś»î ;L‹đĆË"<Ď‹L0,ch ‘ä«OHĎDËoĄ©Zzi ÔTűďĂuŠ (7Ątă Âý&ÎBň"ÎĽăÄJÍ5Őq ¸â2±żę¸’±Ĺí^$ě;iTŃ?ócq˛ó»ŚG†ć€ďŁ ‡LÔŁJ2R ůŁÉţÎŚ‡žx-(˘Š:ĘĽŁt ăA¨eÉ%ŕĚ L⺊Á… «3óÉŁ{k 6#ĄN¬8YÔB»-ę L żđLĚĽâŚţ}L ÉĚ«,!…2Ô#D­ö>ý”k­şŻö|,s‚ Ŕ#?1šjJuřÁ…0í ¶\¨^8óęO`řĘŐ®×ŢĺÔ‚-‡sµ¦7`ůml˛Č C˝űĺv ÂęŘcŹÇü*L9˙üqłŤć«VQ”TJ©5mëUV]}µşłp¶u\sOj0Śu…p·ÝŘä݉Ţ{w S_ľŚ…ŕ9†m'†~Ú[W;*-ŻkWUĺřc˙8Ģćşňő0ô¤ĹZ•=3Âî‹®¨Ô—Çb˙4îç×v*×$1očw‡.JŁ‘SĹĄţgtĚß–şŕťNx@‚oŘ­ýuĚŘČ~ ;˛ň^-űć‡ýoâp(˛¸3B™nĐîľĺ•řľKíc·Z[xľ?'w\ÄŃčçÚuWJ«ë­÷®ëäěulnµ¶—Ţ‚uęÜVІúáŻLwŚY‚P·}őíł2ďăłg[OeŰwHÝwŻ»wňVšŕÉLcĹ Ü@^öó”ë\黆ćź|n`5¸žpT¬~yË|Póč$>Ř€îhtúL—ŁĆ}čI–·6f6úˇ(,cUvT;‹Ě­±›|çÔĚ?[T·üÓ—á‡^;ńO–E˙üä's1ţŐžFć-š‡/÷]őĚ“'š§sţůB’І">umŤâŮV fžš Ě?^řŤyĽđA9jmOűëLCň?Fé?cŇÎzĚ#9¨ç1»JőjĽôŔ˛‰˘ä$/9%Čq›LR'G§˝0Ë;Ţ‘ću8t´ďĄeDŞ\Ą ZyšşŔ’[˛¬śbS¶ŃÍ@™4đ^ rŇ-śĐń?4ü°@Lc$÷‰ÉţCOXÄgą@‘Ś<Ś#Żr4(MR›–´¤ă4™É|3ś3 %ęVXNb&NéĂÜâÎÉ匮Üĺ0¦Á e!~µ A]ĂË^úÇ^u1Ź0e¦ż“ý‘ˇDż z™ËLd pü@¸g!^èčDô(±ę@¤™$XL†QľpÁęQ¤Řc® 'jë ÝÁĆ:VMjkô2“>ý†S›uŚBf9 sÖ„ÎéőQ›4#;ýc…ňŻ©#1K Ą:ŐŞÂŞWĺV1ĂŐ?˝ŔBdet˘RŞf’a0ˇZűŠĘa=‘«±čúRvâ5ŻĄÚd_ýś¬Ř0°°Š•UţpŮ·(Ö¬H\­šĆK“Ҳ•É’ ęAŮÁéěUÍŁU@@Ëk“)íŔhŞZ˝•‘ťuyíĚb+ŰŔ•GtnK«Ű»ć ·ľe-;?š/mírţ“\:1Ž0¤Ś%ë@rČJg˛LµîGŠŮúv—».ŕ¬g?;­’÷Oń«^X{‹°(صi•Q[eűÖgÝżż$o{»Úłx&t-p9d&ĺ€/•8ŽŠoőćÜQ©Ôµđ…1‚] ww vřđž@«…Ś–šEńX7™vŢ Ĺ3‹4ůV¸ZF;é»ĘpÔycţö—˝7Pga…óc ŰĄ,hQnL›ţëÜ™˘vĹ7j…Sĺ(űŠ«.¸Ł˛‡=§ڰ4#ü0?XŐŞŤ–&¸Ľâ¸(Ř΢«Ž±`ŔV.pµ!©ˇę+M_eĄĚ ;Řpťk\뵕.i±ÖʦŞŘĄ&¬,•¸iž§ř€ŮÍöoüŽúGVôGŮčGßaŇ.ŘCú`KűÜć´–Ýă«»d‹ar!ˇ©Ĺ‚jC«Ő5Bdýć‡ÖĹÖ9е rÍë3ú­OZ°Í6?‰-˘âS–ílfC\ ĺ— &ٱN÷PŐ˝ö ÝÖUG?ZŇÝ®4#ĚCîLŘ=ZV7¸ĐY%÷•†nVC\ýţj†H5ß´F«śs p€ď`¬¬t“k ţf×ńą ŹÎĆą mçî¦â§$ĆÇjíŹűŽŃZ޶·Mn\:Óä>·§/şn?§eÔ4çP o„v<—f~]{V„ázč;0ŹXŤž$÷&]éX^źúôRqó'g¶ &•X}ÚQŃúÖYmŻ;zŇ’űž2íasků˘/ÇBA×öĐAŇ”¦‹»Čí ­„ôE xčnoíw]űđŃ‘n’ľÄřÖC|S|J’MqgCţŮż¸´3®^?&úă•*zjNčŞţ‰ŃV®®˛Dţđüá™(Ťčľőî`®)ă8*×`¸PĹ*b NťH Âv †ć€F’‰Ň%4Đ?~€â.oë¬ďú˛Żü\€ü!üľM°üBűÚĘď,x ő($ţĘ‹ţ"8ĚňO˙úobţ/ďp/űîl`l~P`pŻ,Nh(p]" ¬Đ –‚)4PŁg î«Ďú\°ÜĆďżo ÄŹüĚĎÓĎ‹Ż5fĐ5’b揢r0"&˘g+GÎ#˘Ü+3‰3N÷v Cçźp~°{ěĺ7Éâ‡Č ­0 µP7\  Łţ§ÁP Żí>.Ł Ëď Ő0üĚ YPÄ^­"Şéä°%Τ°`hb&C‘Â!&‚ůđÍěç`b1Ž{ŔmS“îúMyĆĺ Ć“Ó% ‚` ‚ !Žă¦Ĺ㮍 ϯܶŻűP°M± )ă g}©—>„ąĹg+ő˙z‘¶P…pż‘ůîń”’‘ Ń® Đp 1-‘3p'ѧó,B˰ «Â-ÜPĐa#9ňRđűôŔBňëhKśT$`téCţ©`hX˘«zpw‘Ľ Co/t Žń äU gÂŕĎ*'UÂ’ţ6q1 ®ä( )‰@ŻQ™G @QŃ(Ľ.üP‘#5r#?R$Á’$µBśP2%óHŹÎ‡  &óog˛«jrfťrR'…nz2 Ë,ž&(Íb(őĆڞ ±=…A\ śň)-1*`*«ň~ČwÜŁ"] +QѸ’#33$Gr ­$IiźÎD—‘4OČ%É‹eR" eXĚĚUö±7t2Ůř./Q ­˘/ĂÁs%¤h 60’’As ś*Ł2#Ę&s"++/S+Áo3˝2=Ň M4ÉjĚň,éča^E5ŮR˙Z“»6mp6Ż6{âţ6K/pźfŔ/O ˛Šr s8‹31ŤS1] )•s™s©¨Ż©ž3óüăŃÁ? Á !ü#"Ô<ôŃş…ĚCşđčIG.ÍCäÂK«:,´ľ#dĘ<ŽĎ&cîdVfm–vÖ<$ˇgyhV˙ôĎ«n&' #iĺb`LéÓâiy1jÝ#.‰Hb­Öď°V9JŸ6vľÖB´D­vč¨N m­Ń!›íůt nĘvtpfgÖnQgsVv}–oAh—uŐîhÝŤE•–†JOŞ×<ˇV˙¤ö˙ľurťkµsĺé•nfs‡Łsď.w`T’tŻq—ĎâřŽĺĆ͡rq ę¶fcwvq¶ţv}Öo‡¶ĽúF,^µľŕ9ŕ µw,—G†w{Đx·[E&hJ÷*×p®É›ϵ8„ŔľBź¨÷hA÷zDmťg ±Qoy×T÷ĚŁ|evfŃwgew l×}ßw2vg–DX©‚ö˘pwńiR€eóˇ ŕú0NY˘Ĺč©ŔliźPO.tOKÔVsCmŮ–Ů §ďvŕ)śŕwî\¶ŘĽŘ< ávÖ _pf4Ja†±¸iăh*ďFÓ0şjţ‡}ńĽŞÇjtOOőôM˙6Ä„Ľ…ŤÚ[b€Ăe'‚.d)H¬†Éšó"ŽćţVą‹]Ŕ‹59ŚöüĆK]ĺŚwbU©­Tä˘ĚÄ ŽË“Žëšîx@ňXŹůX÷üřeX˛tŔc_řbÖO@ $×ö4OY?˘@6J(,’·Îˇ˛Ř’žšBh±ď“ I”uâęÔŘŁ‚•€Ń$×2TçŘ[Î^Y'byŹ˝—–wÂýH§žúd–ckPE9đxčôXŮ$o›ÖXoś Q%Ň<&¦uëŕ’ąř‹3™“o—Ś_°fŽŤ3nŤKă~đŤ_r•×Íë‘ÎŇ™ ˛––uőŢYl`@6č+ ůqľWŹ™@ę˘(ŮRkDś*¬¸‡™4˝†Őţ\°QŤŞâ~ňîsjudŹrŹŤfŘW،޸jö>-ż'›1¦GŕbXt˛‚Ť\ÄNVŠ/lđ©WDFŻfęV~ožnF™Ç‹ˇ¦ ą*ËüĂ5â2ô$ď˘$wt €`{Cw©MĄ©3 ÝXMŞ/ŠŞçš°Zuo«¦«S(FĚŁ0hŹ—$‰Ů¬ćL˝,şCűéUsş9ŽX·ŃX¨;̤JśÄI™Śú¨˘ G%0M¤o^ě®É‹Ţ{Ö<şŞq€±eٱµžâĚBÜě;„Ĺ/jGcĚ"@NKFÉ(ÂÔúŽŚŞ­Z’Ç(®O[ÄĆkO\ÓúEE`{Ż™ţG±ÚŽŤ“â—†ĄŠP…ç^¬´^F˘{ ±ËĹ˝9˛‘;b\RXDI¬ačąËÂÎZ¬«Mć"´cf´wç¨&ą»I€úV»µő$ Ę{'ö´V§Ä!·Q*·ű"!ŕ{çx¤ç©ľ7꾇;ż‡nżéeŔşć«ąŔś#ţ(¤RÔÄČ LM¬[™°ŰÉÔ*{ƉâjJ\PJĆŘ*… ëVsĘŻ¬üĘ)  ÄR.:•BÍÔLŐÜLí΢¬†żÁ B¬žmuŘŁĺćk‘Ôă˛˙e’i´ěC˝ ´/hślÇÁé?Ö$ÂKĎ©™śÎÁ#b°«jőS?Żţ0 ¬Ü?˛ÜGk™aŁĂ\Ě©­ĘĽo^Í'IÍŮ|9ÜĽ'= ĺ™śś­úÂiýÜlIŠ˝ /PŇ'=Ů+ ţÁĐËű ĚŐ2áźI=ÔZăáµ]¤atâëŮ,NHë‹!Ć<ý:>Â6ĎŐý7râMđĺݵ‡Ő*]€™ę>Č>ěÇľĐŢěŐ~ěĂŢ<ĘíĎŢÓŢŰľěë~íëîÍžěßţí×î_ďń>íűţďďő~îů~ńđóžń ˙ěu]")żň-˙ňˇlˇ0_$”>:źw€hH>˙3F$JźóC_HNßô©‡4óY?ő=_ög_QZôëăöý'Qtőiż^ö=bőc_ô{?Žůg˙÷ý‡ů}_ő“_Q‚_ř/‚ř}(ú‡ßůźúµ#¬?űyű«_ţü…dú©źČüĂ?ü»˙ús?ýŃżýÝú+ËüĎ˙ţń?˙›Ęţőż˙ý˙˙‚…ŔY¬`EÁ… :|1˘Ä‰+ZĽ1ŁF‹nü2¤Č‘$Kš$ŘQáÉ•,[ş|ů2%Ě™4kÚĽiˇJś<{úü Q&СD‹Ňj4©ŇĄ‘2} 5jA§R«Z-JőŞÖ­6łrý ö¤×°dËjLą"­ÚµlŰş} 7®ÜątëÚ˝‹7ŻŢ˝|ß"ü 8°ŕÁ„ >Ś8±âĹŚ;~ 9˛â(@@ŔetţěąD›.Ťş€T#XmAײiĎž}îţÝMx#číä7‚ŕÄ›8iňÄx(NŽ3îúó(P˘H±e víÜłg—2eĚ”ńdĆŹ/cŢĚôęŰOi_ĆL|3ňĎĐ7ĆŚýüűńźIs˙ ¨g¨*؆¶±ÂF膺Ŕ…®ŕ‡+ĽáF Žč9Š< "‹)˛ř ¬(# 0pcŽ82ĐŔŽ=ö(Ź  € )@’J.ą$eIreQNI€g vĄjZ¶›j¬} Űk¬!@UąŰ™ş©ąŰpş)w\śpÂŮ\ťĚEAžyVw]źŰý9EykJhyĺ‘7ž‡ĘÇhţ|eŕ(ŁôÍg}g\ŠéM`Áx:Á N0A¤’*ÁLŔ©ľęj¬ĚJë¬ĐZ·> «Ľţşb°,.Á°2Kl˛8.pc ůěŇ 0mL2é$f•i¦íf PŔg§Ť›Zi]Ććl±©‹@nłµéŰ›ÂçfqÇ%çśťŃí Đ]Ççź×u7…ˇŕ {Ŕ°Â 3ĂpŕAp Ćgś1ü±[Đ&_@˛(ݬrË(sz©2—Jó̦şšÁŞd A=˙ěó¬A×z«­şŞč@°/¶ěŚ1ęőŽ:ţČ@Î"y.d‘Iy­’ٶ”bO)¶•ĄIÉĺ–¤}.b– 7’ÍMwÝvߍwŢz;euler-1.61.0/docs/images/fr.gif0000644000175000001440000000034507521265054015057 0ustar ericusersGIF89a@ ˇfff3™˙˙˙Ě3!ţCreated with The GIMP,@ Ą„Ź©Ëí˘ś”Š‹łŢbř†ˇQ•%‡râş’ćĄ2ĆÖź ›ólŰx^ŮÉzµp"LYĆc,©ZŠšNhT ˘­ěŕ r3Ţ,8ŚÓĘ-P˝f»sđ »}F?á÷ÁV×q÷÷ŘG¨Sw§g8Čć(&Y†x˘ř¨'aé…)Ć·Éŕ‰jˇ9IZŞzIYĺú »%{Jűf+…š&:ů,\;euler-1.61.0/docs/images/Makefile.am0000644000175000001440000000015210263642555016013 0ustar ericusersimagesdir = $(prefix)/share/doc/euler/images images_DATA = \ *.gif\ *.php EXTRA_DIST = $(images_DATA) euler-1.61.0/docs/images/Makefile.in0000644000175000001440000002303610331246752016025 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/images DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(imagesdir)" imagesDATA_INSTALL = $(INSTALL_DATA) DATA = $(images_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ imagesdir = $(prefix)/share/doc/euler/images images_DATA = \ *.gif\ *.php EXTRA_DIST = $(images_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/images/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/images/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-imagesDATA: $(images_DATA) @$(NORMAL_INSTALL) test -z "$(imagesdir)" || $(mkdir_p) "$(DESTDIR)$(imagesdir)" @list='$(images_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(imagesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(imagesdir)/$$f'"; \ $(imagesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(imagesdir)/$$f"; \ done uninstall-imagesDATA: @$(NORMAL_UNINSTALL) @list='$(images_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(imagesdir)/$$f'"; \ rm -f "$(DESTDIR)$(imagesdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(imagesdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-imagesDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-imagesDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-imagesDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-imagesDATA uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/images/index.php0000644000175000001440000000005207414562757015607 0ustar ericuserseuler-1.61.0/docs/images/ru.gif0000644000175000001440000000032007521265054015067 0ustar ericusersGIF89a@ Âfff˙˙˙ĚĚ˙fĚ™33Ě3ffffff,@ ťşÜţ0JŞ˝8ëÍ»V^(Ž!Hž¨h¦lk­n|ÂríŃvžázđľśB@,ŹČ¤rÉL*ШtJ­ZŻŘę3ËízłŰŻxĚ “Ďh¨9Íţ®Űpě;NźÎëř;ž®ßĂ‚„…†‡‰† ŤŽŹ‘’“”•’Ś–™š›–śź ™žˇ¤ĄŤŁ¦©ś¨Ş­•¬®±°˛µ´µ±ş»Ľ˝ ;euler-1.61.0/docs/images/uk.gif0000644000175000001440000000107607521265054015071 0ustar ericusersGIF89a@ ă˙˙˙„„„÷ÎÎZs­JcĄ){!sµ˝Ö!sďµ˝çs{ÖRZĆ!Ć˝fff!ţCreated with the GIMP,@ ţ0ČI«˝8kÝV x …až(JÓĽď7¤´z ă8 éĽO0*ŐT,¬!;¦·Ü®’ŕ€ÔPŃiXµ–LŔŚ ˝N…!É ŠE‹HGŻÖŚłĎCÖ@bZ›y[OI`uOw€Cp|'~R‰Zp'r…b‡Y ‹FŤ(Źm“•K†ešzť&ź)ˇxC#]„¦—¨˘Š“)®4¸±ZµtDQ Ŕo\jĚÍĚk, Ő y›s1 ŐŐnoĐÎăŘćçŘ_¶čěćVđńňóôó Ú őűüń  H°`A0 *\°Á?„#JśHqâĂŠ3jDxqŁÇŹŰ;‚ ňĂ“Á \Ůđ]ż—ňîŃł¦€rír†PGL§ÎeăžE–'jú˛YÂftÁŃ#ÄeÖëPŃÇx8 Śç6®WwtH0ËIUP®ëo‚RÄf¤Ňmí‚¶¬NTť˘®¶śĐŰ6¦ ŃľX˙Ţ ŚÂ•4ş‰ď˘ĺ5La´‡ąEľ+¦SŁÇíâő5Řr ľšEV“€_Éy)•6ä«őëĹ{¨U<Ú \Â\ ďf‹ÓőćŢdf_ .ňÚr~ÜÄü·ićóŔşˇ»÷ďŕ#;euler-1.61.0/docs/images/euler.gif0000644000175000001440000000372507414306114015563 0ustar ericusersGIF89amp÷˙˙˙˙űđ˙˙™˙˙f˙˙3˙˙˙Ě˙˙ĚĚ˙Ě™˙Ěf˙Ě3˙Ě˙™˙˙™Ě˙™™˙™f˙™3˙™˙f˙˙fĚ˙f™˙ff˙f3˙f˙3˙˙3Ě˙3™˙3f˙33˙3˙˙˙Ě˙™˙f˙3˙Ě˙˙ŔÜŔĚ˙™Ě˙fĚ˙3Ě˙ĚĚ˙ĚĚĚĚĚ™ĚĚfĚĚ3ĚĚĚ™˙Ě™ĚĚ™™Ě™fĚ™3Ě™Ěf˙ĚfĚĚf™ĚffĚf3ĚfĚ3˙Ě3ĚĚ3™Ě3fĚ33Ě3Ě˙ĚĚĚ™ĚfĚ3Ě™˙˙™˙Ě™˙™™˙f™˙3™˙¦Ęđ™Ě̙̙™Ěf™Ě3™Ě™™˙™™Ě  ¤™™f™™3€€™f˙™fĚ™f™™ff™f3™f™3˙™3Ě™3™™3f™33™3™˙™Ě€€™f™3™f˙˙f˙Ěf˙™f˙ff˙3f˙fĚ˙fĚĚfĚ™fĚffĚ3fĚf™˙f™Ěf™™f™ff™3f™ff˙ffĚff™fffff3fff3˙f3Ěf3™f3ff33f3f˙fĚf™fff3f3˙˙3˙Ě3˙™3˙f3˙33˙3Ě˙3ĚĚ3Ě™3Ěf3Ě33Ě3™˙3™Ě3™™3™f3™33™3f˙3fĚ3f™3ff3f33f33˙33Ě33™33f333333˙3Ě3™3f333˙˙˙Ě˙™˙f˙3˙Ě˙ĚĚĚ™ĚfĚ3Ě™˙™Ě€€™f™3™f˙fĚf™fff3f3˙3Ě3™3f333˙Ě™f3îÝ»Ş€wUD"îÝ»Ş€wUD"îÝ»Ş€wUD"îîîÝÝÝŔŔŔŞŞŞ€€€wwwUUUDDD"""!ů,mp@˙H° Á>ZȰˇĂ‡ŹJśHń`ÄŠ1^<¸ě_F~xqăČ“$ü[É’%JŠ&?šŚů2#Í-˙utYófĹ>kNô™sĺÎŁ+mľĽT(BšFuîÔé´i Vť$Ş3jËeSÁ&˝ŠŇjV­Š]+µmÇ·pŰ*˙h™™¬X“„¨ZĘŢ‹"¸ŕ¨ůUÔ+c‘ĺ‰+{ŹńęŘŞŔ>%ěl–^j ´aUVهpŐJčłz…á©‚z8b_Ë<ÂćV7v–‘h Şbłe« ŤÚş)oËÂĘXĽ1ËěRě*iĐe‘ˇ&#ż…ť9f©ľî)äŤŰ)qÄ|&© ±Vif §Ĺ˘.ěq›3‰üÚ“÷röäĘHjĚ$hqŇäf §ĹrËÎ*łŤ ×,ť|7㬜Ď×™Ľí]?k9ó•XžĚ]Ť-šTTŇřÝj™çFš¤ŐŠwń˘P—Úá NÍu°Đ5]ŐÓ,RúęÔk›­¦ŽxMuߨgçü¶ž7˙{u˝_ďÍ÷qŚfÚ¶Ťňy*š†…ç-ę•„ĺʸ¦Žc\é§»vĄéŃSťćpoţwĘžŹ=á2w~xŇ*Ę1Ř€ŁôhmÂŢyŕßÚ­ş˝Ź»=v…‘8úä¤çĆŐ_áuĄĺ†Żőď _Şüx«óÎ|é¦S8™hk‹6â{ĎşŻö{zŻ7§‚k rć÷>äŤéKţas~˝ěë‹çm¬ë—öŢđ — Ć=UÁJVŐŞĎGŕMkvĽŞŰ°ÄR˝ďYPg¸:Đi 8 IđE« /ž}PD$ wĺ—öŤ0}Š!dâ?kQ†`ďz‹ą ĂĂ΋?2‘ň˛¨5=žH. Ůť÷6ÎČXůşV_zĹ’Qđ)D‹]ěÔ''hő^ĺB ǸėĽk^Ë*Mąf´3ÚĚ9l”V„ĚĹF&˘-‹ąiXĹbĹP)<•űµž5R°JxY±t"a¦8‰ĚŘJŁ;EňaiÓÜĚ.é;;ę'ֻŔ(6OŽŚ”ZĄ“¬Ö±‘‘lKQeÄ8KWâ•Ý‘Ą-YC“čr—*óĄÉ;euler-1.61.0/docs/images/Makefile0000644000175000001440000002366210331246762015426 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/images/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs/images DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(imagesdir)" imagesDATA_INSTALL = $(INSTALL_DATA) DATA = $(images_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = imagesdir = $(prefix)/share/doc/euler/images images_DATA = \ *.gif\ *.php EXTRA_DIST = $(images_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/images/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/images/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-imagesDATA: $(images_DATA) @$(NORMAL_INSTALL) test -z "$(imagesdir)" || $(mkdir_p) "$(DESTDIR)$(imagesdir)" @list='$(images_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(imagesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(imagesdir)/$$f'"; \ $(imagesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(imagesdir)/$$f"; \ done uninstall-imagesDATA: @$(NORMAL_UNINSTALL) @list='$(images_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(imagesdir)/$$f'"; \ rm -f "$(DESTDIR)$(imagesdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(imagesdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-imagesDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-imagesDATA uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-imagesDATA install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-imagesDATA uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/reference/0000755000175000001440000000000010331246762014446 5ustar ericuserseuler-1.61.0/docs/reference/links.html0000644000175000001440000000426607434666100016466 0ustar ericusers Links

Euler
Documentation

About Euler
Introduction
Basics
Expressions and Matrices
Basic Functions
Linear Algebra
Polynomials and FFT
Graphics
Programming EULER
Reading and Writing Data
Numerical Problem Solvers
Intervalls and Exact Solutions
Statistics
Some included Files
Special Settings
euler-1.61.0/docs/reference/somefiles.html0000644000175000001440000001044507417015637017334 0ustar ericusers Some Files

Some included EULER files

We explain shortly some of the included EULER files. More help is contained in the help text of the loaded functions. You can load these files with the load command, e.g.

    >load demo

and either the files will start a show immediately or will display all defined functions.

demo

You probably know this one. Just load it. There is also an autodemo, which is designed to show the capabilities of Euler without any user interaction.

apple

This is a nice plot of the Mandelbrot apple set and its potential. Just load the file.


bezier

This file computes some Bezier curves and survaces. Some demo functions are available.

beziertest lets you click at points to define (x,y) values and computes and shows the bezier curve to these points. It is based on the function bezier(p,t), which evaluates the Bezier curve through the columns of the matrix p in t. bezier3dtest displays a Bezier curve in 3D-space.

nurbstest shows some quadratic nurbs with increasing weight in the middle point. It is bases on nurbs(p,b,t), which works like bezier(p,t), but needs a weight vector b.

beziersurftest shows a bezier surface with its determining grid of points. beziersurf(x,y,z) computes the surface. x,y,z are the coordinates of the grid points (kxl-matrices). It returns three values {xb,yb,zb}, which are the coordinates of the (n+1)^2 surface points.

c1test is another demo.

games

This computes the optimal strategy for some simple games. Read the help for a description of the games (gambling,scissors,poker).

game(A) computes the optimal strategy for a game with matrix A.

hondt

Computes seat distributions for votes.

hondt(v,n) and best(v,n) take the votes for the parties and the numer of seats as parameters and compute a vector of seats for the parties.

interest

Computes the interest rate of an investment.

The general purpose functions are rate(x) or rate2(x,n). Both compute the interest rate of a payment vector x, with positive or negative entries. The first function assumes times 0,...,n and the latter times n[1],....,n[m].

investment computes the interest rate of an investment with a start installment, several payments (positive) and a final installment. See the help for more information.

sound

With this file, you can load or save mono WAV files in 8 or 16 bit.

v=loadwave(filename) loads a WAV file into a vector v. It does also return the sampling rate r and will save this to the global variable defaultrate.

savewave(filename,v) will save the sound with the defaultrate and 8 bits. You may specify the rate and bits as extra parameters.

analyze(v) does a spectrum decomposition of the sound. the full parameter list is analyze(v,fmin,fmax,rate,points). fmin and fmax are the minimal and maximal frequencies of interest, rate is the sampling rate and points are the number of points to be used (should be a power of 2).

mapsound(v) does an analysis for the sound at certain time increments. It will procude a nice density plot of the frequencies. the full parameter list is mapsound(v,dt,fmin,fmax,simpl,rate), where dt is the time increment in seconds, simp is a simplification factor (take 1), and rate is the sampling rate

playwave(filename) plays the wave in that file on some systems. euler-1.61.0/docs/reference/rene.gif0000644000175000001440000002412207417015637016075 0ustar ericusersGIF89aʞ÷ !!!""""""###$$$%%%&&&'''(((((()))***+++,,,---......///000111222333444444555666777888999999:::;;;<<<===>>>??????@@@AAABBBCCCDDDEEEEEEFFFGGGHHHIIIJJJKKKKKKLLLMMMNNNOOOPPPQQQQQQRRRSSSTTTUUUVVVVVVWWWXXXYYYZZZ[[[\\\\\\]]]^^^___```aaabbbbbbcccdddeeefffggghhhhhhiiijjjkkklllmmmnnnnnnooopppqqqrrrsssssstttuuuvvvwwwxxxyyyyyyzzz{{{|||}}}~~~€€€‚‚‚„„„………………†††‡‡‡‰‰‰ŠŠŠ‹‹‹‹‹‹ŚŚŚŤŤŤŽŽŽŹŹŹ‘‘‘’’’“““”””•••––––––———™™™ššš›››śśśśśśťťťžžžźźź   ˇˇˇ˘˘˘˘˘˘ŁŁŁ¤¤¤ĄĄĄ¦¦¦§§§¨¨¨¨¨¨©©©ŞŞŞ«««¬¬¬­­­­­­®®®ŻŻŻ°°°±±±˛˛˛łłłłłł´´´µµµ¶¶¶···¸¸¸ąąąąąąşşş»»»ĽĽĽ˝˝˝ľľľżżżżżżŔŔŔÁÁÁÂÂÂĂĂĂÄÄÄĹĹĹĹĹĹĆĆĆÇÇÇČČČÉÉÉĘĘĘĘĘĘËËËĚĚĚÍÍÍÎÎÎĎĎĎĐĐĐĐĐĐŃŃŃŇŇŇÓÓÓÔÔÔŐŐŐÖÖÖÖÖÖ×××ŘŘŘŮŮŮÚÚÚŰŰŰÜÜÜÜÜÜÝÝÝŢŢŢßßßŕŕŕáááââââââăăăäääĺĺĺćććççççççčččéééęęęëëëěěě!ů˙,ʞţ˙ H° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠI˛¤É“(SŞ\ɲĄË—0cĘśIł¦M„úöńówł§FqáŢ‘«—OźĎŁąaęÔę­ZČrńGO_=¤X63T†K™$5^Ůbă…Y#eÄ,ę¤++Ö{†šĚ¨֬ݻ7îľ°Ńä7·2sezs¦Š˝#†a¤-`”ţxţ'ę Ĺ3۵±č1É~řđŤc•Š›$—5«V¬G'¤ţz֙޸pËŇĽ¨ńĺ ŹŐŔ۰1¤ř•CÓfWô×oß¶Mr†Ü…Qs’ŕkDä˛Hô”ţKě§Źť( g`·ë˘=ö:›ýQ&śř‡ţřˇÓe˝â-´ç‚/¤Vŕ±Ü·P?ýäsN HU 7 çź ,°ŕ€e^ʤŁ`Bö€łK5 7b¸B†¨× ™hłĎ©ňj©±Üe.´Ŕ /˛cu!‰YŐÜă@şü@WÔY¶^ @ Y¤{0Ř@]2ćPĚ=O DO!F¨7Ăp>âĄ^ÓĹ€en¤{/Ä'ă&ç”ŮO!W„•ÚŠfĺő kꀨY6¨7aŁ4ČĂťŇ9 uBč`ˇÁ±AM™ťLˇé\oęµ&?đ"©3H©ţ9ŕp f]úB{  >řŔipJ¤ÂĎ“Z$áĄ]ęÝ 7üŕě 5TxĂ <( ?˝Ň ' ŕŮB2ČŮ!fmš…F0ŞH !{YpˇEh´ŃrP!Ľ<qÄTDĹî_`qE@¤ťtíSp‘…Ń_AĹŽ[TŁŕvÁ§N€î˙xÓU$1Ĺ_”ÁĆBa(!ÄKPž  …*X! V¨Â´µ*Tˇ Ik‚¬W…-0áN¨Á¸e/ BAčą µ,–/gÁYHŕ—Ô´†1ڎ wÄŃ8|ˇ Yč‚Ň@4śA ţ_ŘŔ…*& YpÂüś0Á/  j¨—J Č`/_čÇ}˛€—řŔ k¨‚ÇŽV…,há gxâö`@ÜAŕę°‡8ĐQ†€„"ĐP†3Ľˇ lhĂƵřĄo hđBҰ!¤ -H d°ą)‡|ęůŞč˛´Öđ€_MÂw6Ě!q¸ĂńB B…`„#AKGx˘ťČÄ$a;´Áv`ø¤MA‰żë˘Đ¨ 5“ÓîĂ…­‰:]+›Ó^Dű˝Ásŕ a<>ÂŽŔ„&2a‰\f¤Ŕ%;a@°á qţ@Ăľđ-Lˇ N@Cˇ€Î Dúzđ'y†!„Ón†°©˛Ą¬7c(Cě@𡎀#‘‰xv‚«€ç)Ta T¨‚ŁE'6‘ Füás°Ă żPDQŽ! qpCŠ@ŕŔ=Š@ ĺ|C:f)ŰšE„ę…! exáQB,”ŔÄ(Hቔž˘0E,`q‹\Đ²x…*L± J0–}ĐĂÎŔ.D- ^ŕBě”UÉ€2HB€PŚŮ€ŞKK‘€-‘]‘cä ńD@bśE,lq YÔÂşřE0p±‹`0cÄ8ţF1vA Vx"•hÄ"±7”ˇźW\Ć@…'t!S,@Á h+@b6ôŕBž¤„łT‰q~e ŚG1‰Lt¢Ĺ+r1ŚaĂІ5´á hTĂŃx†3”1Ś]Ěbُ$‘CĚaŁ n¦ …#8A>hÁR°Á|0Šgâ ) .Đ:›« …6ŕ3ڰ&LŃ YČ"˝82ގŚjlCÝđF7fĚŤlPCŃX†0r1 X B—ű„Â`=Ę•q ^@‚n 9(  ŹŮ‚ń{Óf0„Ú5a ŔÜ щSȢ­»ĐEţ0’ń il#ŕđ†7ľŽ:ŁĆ×°F5 ˇ aôbĄŔÄ$$A7‘ČäBş@…#Ř . ZpĐ€]žąŇ Ę(ÍI |ČC1 Q´Â˝ŘE/~ÁćmĐ™ář†¬Á!q€ŁÜŕĆ6˛!Ťfµ`Ĺ(su¤ăä¨w8¶a h$CżČ*0a F𡠿Ťßɨ  !5pÁŔ§śÓęa{Q!b¸Dx¤ĐĹ.Tk gDŁAQ‡ĚŰŃŽwĽ#đ€G;ĐaŽr„Úđą0x1‹VčŇ{ Ś`!xL#HádFđAŘ:đxĆŽ•tp˛* A•‰ ó(Ć›ę[#×Ç8ұt¨î€G‡{(Ł©eĐ«0ŹŹ Y°¤` °0‡YŕR‹đoÖđzWH_`F”ţađcP2?ĐUđňđU€FřD 1ŕ‹‹I8D`qŕ‡pD° ß | Ő H—˘ Öp q°QíĐ O ˙Đ|pZ RĂS},5?ĹMđmI𨠜Pcą žń¬6€‹Os4I@!Wp“đ?pqP¤ í”ŕŕ ˙Wčf Ow{ľ ÚĐŐ`©M°c0B“łWL|ÄË#Cąŕ şpwP§` łČ‡>†s2W0ióËŐj }' Ľ  ŕ ­ Ŕßd Čŕ ˘Ŕ ¨ŕ ­đNp‰p\ ţ/SĐ;vGwđMmđťS/ť ¤ ŃS° ˛ńl°ŹF0ŔŐ7` Ă|`Ź@ łP ą€ · ® Ć` Ú‰±Ş*ۤ` ěČ±ŕ ­ype°¨dđp`JĚŘF¨”ccp›w0MŕĘÁąŚ7~”Ual`KŻP Ż0ŘŻ° JÍ Á PŁ€ ˝ťŔw`mÍ0 ° Ą` Č€Ť}   ^U˛Čď»{@D¸)µ©Ńaŕ bewP,Fh­vd ›@ ¦Đ˘łp ˝ Ćŕ mËa˘˝÷dĨ0 Y™f·ŕ @ţw ®@ Ź 4% Í ™%ż•K}|°sFĐłŃ Ě>SŔk N@†@Ś@ ž` « ¨ć ÁŔ ‘ l”RxiTJ` Ĺŕ}—© ‚ýR›ĐŽś@SZŢŤS ,IaŽ`YÚ €ő¸Ňo@nŤ —Đ řÝ»W˛ {pĆÔ€p‰PˇSĂ€ŕ ů} lčԩ𗑸 'ĹKNÚžÄńžĐUś`6âA aŕ>Łdz0†ppÚ| ¤ °€ ˛Ŕ›žđq°Źx?F]ˇH$r{é ˝p¦e7 µ Żŕ ţ^™RŢ ŢM˝Üy€+UHđö čđĆq—wpŹp š0 ź€ ů˝ Jm Â< v4g‰đ˝‘m`ž0VµÝ©Ć öµ•-Ş WťäŤl}CÄqĐ öyY`Ľ÷Á6`;‰hÚ‡ ůÝ­¶ ”¸†Ż€ ¤0N¬Źl`Ľg\a°Ű·  ú ~¶ ľ pżP ©@ ‘đľ˝ôlpĐóh Ď í[ b6€¸^ˇJ|` $ą«ąĐ Ć˛Äp ŞŐ,Jk‹`íEÔȰp Ő€ ¤j™Ä Łşc»Šî€Żň;6_` €l°q©ţ|€--ŚOy°Ž ­ŕ żPńjš Č0 Ú  v€>ëá´]±łQ   Í ś3Ę Ń0{k Í }`yĐYŔ’ŐüUPG dr…ĐNŕDhŕrĐظj *– Îí Oů g€¨NĂ;l¦¸Ă¦° × ćŕ Ő0 I Ô­   „j„?©"ɲh€Ŕ ‚ŔÎ/\ŔądťŘH©…×° Ü0 Ұ \Đ4$s×çµ5¦î§ Őpćđ Í «• Ăćş8ĹWëC»Ń{`hŔ ‹~ĎŔ7@QŔh$ö‹ ›w ĺţŐź˛& Ć` ÓÓ_¦„J9““`y` Żđ Đ6 Ěđ ·Đ ¦ŕ™łŘíYşa1M€Fw@ #b c0Ąw(ňnđ‚Ŕቓ)]żŞ]»VmW¬CP8ą‚ćQ,]Źě„ą˘% 2o©Şőëš5iÎ’łŐŠÔ¦CúČy3f 6^Ô¨“ ™¸=}ţTčP˘EŤMV¦Ź&Zƨi3źN˘Pé"-ٱaÄV©ÉRĄÉ<¨ŢÍkW¨ —1mŘ€ ĂÔ)TÁšAkv,جS’ (Î.MhÚ¬ŇĘ\żŁŤ?†ü3ĐNÂŚ!SÍ@”8ˇţÚu,˛cżŚ‰şRFK’)e,uĘ$+Ď•*eěŘą2EĐkP±!3†ňT&JŚőąă¦Í$?fŔ€!é[dęŐ­÷dH.ÝèÉ#hR¦Q˛|ť/Ř+Q“+QŚ ir¦MCa† 1ň^CEň¤–`vÉEM1dŹ=ř 6¸h®†`¸$ťë.İ(Lx"‰/ŔČ 9ö8OVˇh_rń„Ź+j€á… ‘H‚(tŃ$úâI 1d‘S~©ĺU&qd@ö° 6и _¸!“z2Ä2Ëž±A"şËLŤ YLL‰e¸Cě(ى†h.F_Đţ±‰/Ę`®5K&™dOlą–Nad@âpňŤ0ś â‡učEKI/ç/·Č˘ 2$ČCq$šÂ†ç$|a†)®0â‹/t¨Á†€@ż1ĘଓVlA…“H™#7Ôp0Ś&~€u~™´YęĐŃA‡!¬Řâ 4ĘĂAř9®ŕ‡faÎ9a¸ÁqoH5Udl .âpdU†c$<âxŁŤ3Î(ě‡taâg~ěŘ/Ë8C3;1Ä@˘×\‹Íµ©Ý‹oXމ<0E˙±#Ź7Ţ`#.’‚\Úpa™Ťşâ‡!śŇÂß8 iŁ ç.ţľXÎ!bśU a¸ÂQ:yd>žě•}“ Uö™9kˇľ ő .´8Łß6śhhł©L¤Üłe„ń‹=0yäó„“żÂŃ$‰Fkż„#nM-ěž×ľ8‰<I"Ç!Ě.W‡)öx$»÷¸s4˛ B´†žżG禊VUÖčpÄĎĺATbÉ$ ĘŚPč~Čc’C a2Ź9ü­‚nžŃŹd+Ţŕ"74Ę^ťÎ’ĂŽ¦çĐ"Š*x¨č+1äŽ<ěĂŽ=Ш↰$źăG&‰Î - čĎusJŚeýˇŇíĐnCäˇ o0™řţĆƱ+ă}ŁËG¦0†3dĎ~/ĐA¸÷3TaG6€Aąj /-85Y€NŃćt)„ˇ ©ÎP“Ůá vxÚ†f„AîCĘđ†/h6IC28†8„ @t.! F B¸†gáÝŔNŔˇ#jP/d!elř×f¤6(˘?=€`Ć6! YpÂR®p†9”ÁtđéPš`™ćqa NâŢŁ.b…x—Ę04\‹a{ř]nđ…dŘŽŁCBáJxŁŘ ^s˦P…,| ÖšÄ#HA[Ä„ ¬ĽBŢ;Dá<°Ě“Ćţ†çů 6đ„?é·@Po Z@‚d”„(\á <«Đđ†8´a›»ĂÄ*Hq‡7l c`tg‡)ČČf“ĽĚóT©Ľb™ŁÓF(‹Ř„ŚÍ Ü)f´0Én~ aŘ0@˘‡* q5BlčČ{mÂt‘^ő6Ë}˙@Ş;§XeWµg“W|»8đ7GEł wQŕ™!«Ń»‰Ć»]E3łË±RA–e@<§ţě·8ĐXJŹ0›@ÇÇcםРg)!ýÉŽŚ8¤)†BvkŔ‚¨`-p Z€e0xB6¸Â8ŠŚ!NŔŔ¤Ę5ă ĄX†*•dd(P V°g,o¬ Űóu ŁBDö'w釣×dČ ü• NPśŕ)@A ¬Ě‚‹Í€h†' CČé Î`oOӊ콇ÍmŽ bÔ¨'0AĄsťi+_ĚgÖ:FýîÉâŔ=q_;…ĹĎ®­É>Îň 0Ť”ŔÚ'¸s Vŕë1Đ㤠ň°‹BŠw™+(÷č &n9„fţ39FZ®u pťk;§@ÓśĆŘńŹ@蝆¸…ňŮ&ĺŔôC›†pv#ŢńľuÄďÝe¶MqŞŘ’Ś`ŕmÜ'ŽP´ŚŞQ”\ä! ý{ÜŚĺ¤eZďYö¶·•)îÎ!ˇ Éč‰Ĺň đj¬í(†x`ŃWË(Ë[Öł ”ľg|ËhCäŔ‘ó‹acnEbĎF„Łx˘_ ĂŤŠţ‚Ł·śTnĆ€`Ĺ$d!Ő/4[ЬŢI¬nîEI$‘Ć c/{–-†_ů 2 Üč ,7'B˛|cŽ OXÂ%D)›aŁ÷wđ@čÎPŻPTĂţcĆ/[f>ĐbÇLĂiR(SîŐ…¦‚Qu‰p×2d$ °řIŃďđC.°ů1ÁđE+&±‡<5 #^[jŔˇ6®ňš(‚_t4áČČE¸eŽ˘?†­@…%D±ŠIÄasMđüÚ ¬šđ0HBŰˆ0śa _Ř7źŘ±3—) „©;_;Č@]NX„Lč„8¨ c‘“Čé-˘ű“rą;“†a3B·žH,@C0ÉÓ’E9CĽÇ†ń…‚LčďR˘,R$'`ňş?#0•Ą2čéż,>ꀇ”CA9G0‡,A‡3xţBÇŚaČ…`p†gx†_…Uđ–©‚0ȧČ#˘ŕáÁäâŽ=¨›&™Ź– +|B‹á ńĄ;L‚Čp†_†f†g†fřHCn™` řĐ‚)0)'`)t2„D 6ʤŠD¸Ă‹©‚ ‘¦O|ꨆfHgpd]…\ŕKX„nqżš‚S’D¶Ř?6¸ˇDH ‹Š& ¸źR´±c,EęІdHEbřV†X ¦„I„Ů¨Ś’Ź6°ˇ;ŕ‡Z©Ç18¶ÄSĆ9i‚Ž«eÄ9SôBŕ@“F[đR€HH çq©8Čţ™„B0„Ŕ¨›BX“ …tś-ŕ‡v4F.¨pGŕÄd cX@OXň„@‰Z„GčGŘŢá‘ÄÂź…ś6pHc´nxb†`Đ…adřYTX…UĹOى‚Lx O›D¨@Ŕ„L„ Đ—ś“$Eă©mp†aF›T[°ź”…UL8ĘLČUh…Sđ“l‰ ‘t ŠbÜÍL€ …$Ď4ĹfhĹX[P…\(TP śLŕŘŚĹ_ä@8„EPˇ„Ý”‘ďTČ6¸nH†f†_°tEY  OČG°„LN0ËY ÇEř”SŠéČţ|†tچ#ŔŔg †Í…žĚ…UXřdĐL€„LPGx„NIütC k´Ý´ÍtÉ ibKól…ŞËXĽĆ‘„„ŁěŹXúĹUŠr¸ţźË$6—Lµ I†äCQP….őł|„=ů‘Ep$1NQv Š_ŔeAŁ€ľ;<,QQ0O`ĎNx¤B¨QN¸ĆĘńÓ÷ŚJˇX°LţĐĆ0š»‡ęHOĐźčŻ@ JN8„]2„Gŕ“E຀ ŠGH‡|ŕĐe< F˝Ă%Ś _ ‡ĐΞhUŕRK8…„N°GpµN` † ŐTuŚ8˝C(‡ęH„3H X…¸Ě„GĹ;€N€Q´t×YÍü ~ĐĚTťˇ(Áž`Ö;Ś-ęȇcŠĽ’I„;H„ńU Ś…{ţ‰ …<ôźHŐŔQ ¸R}BL°ĐC€ü\„čěNXżVpĹCÓľśŐť‚ˇĐL„}BIy çĚ@pÍGČĆ\ ”¬ř‰8x„ `U…äKˇđĐÝśŽ,áVö´„@¸WYR‰VX°Ô…ič z…tý‰=äĐ0Š™˝Ă<Ěm¸Ç-•0ĄXRP…ś$]xÖyČ[Š9XU ůRH_@…Ť|>8JRHMäC>_pNąˇđ„˛Eơ€Ú;śm€QčYLč„ô †a0†_ †ČB‡+Ši(Ű+(Šż}Bd”jŘHµ„VčIĆ˝IĚ[Ł([ţł ŠßtÉ8h–j´OPK]8dŁmŚŇőPˇĐş»¬Ő}U°×]@†j¨†vx‡Ú-[Ü ŠĄŇIi‡IX€…0<Đy|†xÔŁ(Ý0 'ĽËś•”S@NZYgD2äXŠÜ˝K©•U0OX•€dhČ5 ´ĺO˘`Ţ»‚f‰óDYOHMĚMŇ% ăOĺĹ’r`LYŔV_hČ`Ň˝^ˇpŕݤÜIé„N¨ÚŃtŚE(]GŠQÜÍPÓ,ÁOPĆäŇsśĽŇíXˇČ<ţ\É,ÉŘh…V_ŕ g(]¸ÝźĐ‚TUTXIˇ‡ôĂSN€…\Śr(]°ˇhbe˝.č @†N …ĺĽ`˝,[@áźř‚ÍŢęh…sMČí•řô\4~¡ۑ˘řUjC`[Š€;euler-1.61.0/docs/reference/version.html0000644000175000001440000001057307417015637017035 0ustar ericusers Version History of Euler

Version History

I started this history with Euler 1.50. Note that the verison numbers are inconsistent with the OS/2 version, which is no longer maintained.

1.59

New Version for Linux

Reworked the documentation, examples and overview.

1.58

Fixed the project function

New 3D functions mark3, framedmark3

New function stereo for stereo plots

1.57

Fixed the mouse drag bug in Windows

Wrote a German introduction

1.56

Improved solid 3D

Removed triangles (now default)

1.55

Fixed an error with the file name, when saving the internal editor file

Wrote shiftleft, shiftright, rotleft and rotright

1.54

Global strings can now be changed, when the lenght is shorter

End key now prints "endfunction" only on empty line in function editor

1.53

Fixed vector drawing of length 0

Removed the Splash screen

Notebook save prompt only when necessary

1.52

Minor fix in Windows installer

1.51

Some more changes in HTML documentation

Fixed svdsolve for Windows

Fixed lu for some singular matrices

1.50

Reworked the documentation

Postscript (EPS) output for Euler graphics

euler-1.61.0/docs/reference/expressions.html0000644000175000001440000004427307417015637017736 0ustar ericusers Expressions

Expressions

This sections explains

Data Types

EULER uses the following data types

  • real numbers
  • complex numbers
  • real matrices
  • complex matrices
  • strings
  • real intervals
  • real interval matrices
  • references
  • functions

The meaning of the first five data types should be clear. EULER tries to keep an evaluation real. But as soon, as complex data is involved the computation gets complex. That is why

    >sqrt(-1)

results in a wrong answer, but

    >sqrt(complex(-1))

is 0+1*i. complex(x) is a way to make a real number complex.

Strings are used for explaining output, file names, passing functions and expressions to functions, and function key texts. There are only two operators, like the concetanation | and the compare operators.

References are used internally for parameters of functions (see the programming section).

Functions are the user defined functions including the functions in the utility files.

All these data are kept on the stack. Usually, the user does not have to worry about the stack, since EULER uses normal mathematical notation for expressions. Internally, the evaluation of an expression uses the stack rather heavily. Programs are kept in the lower area of the stack. The stack is also used to pass parameters to built-in or user defined functions and to keep the local variables of these functions.

Finally, we remark that the data explained in this section are different from built-in functions which can be used in the same places as user defined functions. There are also commands, which cannot be used in expressions, nor in functions. Built-in functions and commands are part of the code of EULER.

A complete list of built-in functions, commands and user defined functions is printed by

    >list

A list of all variables can be obtained with

    >listvar

If size information is needed, the command

    >memorydump

is available. A hexdump of any data can be obtained with

    >hexdump name

but it will only be useful for insiders.

    >store("filename")

stores the content of the EULER stack into a file.

    >restore("filename")

loads that file. This is a short way of storing a session including the global variables and functions. Note that the file will be system dependend.

Commands

Normal EULER input is either a "command", an "expression" or an "assignment". EULER works a bit differently in programming mode, which is indicated by a different prompt.

An example for a command is

    >quit

which quits the EULER system. By and by, we will mention a few others. Another example is "load", which you already used to load the demo.

Expressions

An expression is a valid EULER expression, and has a value as the result. If it is entered on its own or followed by a comma ",", this value is printed.

    >3+4*5

prints the value 23.00000. The print is surpressed, if the expression is followed by a semicolon ";". This makes sense, because some functions have side effects and their result is not needed, or because the user does not want to see the long output of an assignment.

The printing is done in a format determined by the function

    >format([n,m])

where n is the total width of print and m is the number of digits after the decimal dot. As often,

    >format(n,m)

does the same thing, but is a little bit slower since it is a function in UTIL. The output automatically switches to exponential format, if there is not enough space to display the number in fixed format. There is also the command

    >goodformat(n,m)

which does ommit decimal digits, if they are zero.

    >longformat()

is a function in UTIL, which sets a longer output format, while

    >shortformat()

sets a shorter one. Both use goodformat. The longest format is

    >longestformat()

You can explicitely specify to have exponential format or fixedformat with

    >expformat(n,m)
    >fixedformat(n,m)

There is also support for output as a fraction (like 1/3).

    >fracformat(n,eps)

will output numbers with n places and an accuracy of eps as fractions. Default for n is 20 and, for eps is the internal epsilon. So these paramters can be omitted. The other formats (like shortformat) switch off this type format.

For intervals, you may use

    >iformat(n)

This will print as many digits as necessary to show the differences between left and right interval bounds. The output width will be at least n.

    >iformat(0)

switches back to the usual format.

Assignments

An assignment looks like

    >variablename=value

The variable name must start with an alphanumeric, and continue with alphanumeric characters or digits. The command assigns the value to the variable, which is declared by the assignment, and prints the value. If the assignment is followed by a ";", then the printing is surpressed. An assignment may be followed by ",", which prints the right hand side of the assignment.

Multiple Assignments

The syntax is of a multiple assignment is

    >{x,y,...}=expression

This does make sense only in the cases, when the expression is the result of a function with multiple return values. If a multiple expression is assigned to a single variable, only the first value is used.

Variables

The most simple expressions are variables. Their value is the value of the variable, and their type is the type of the variable. If the variable is undefined, interpreting the expressions will stop with an error message.

The basic constant expressions are numbers. Those are entered in the usual form 100, 100.0, 1e2, or 1.0e+2. The letter "small e" indicates powers of 10. An appendix "i" indicates multiples of the complex unit "i". "1+1i" is in fact a sum of 1 and 1i, which is the proper way to enter complex numbers.

A matrix is entered in the brackets "[" and "]" row by row. The columns are seperated by "," and the rows by ";". Not all rows need to be entered in full length. For example

    >A=[1,2,3;4,5;6]

is equivalent to

    >A=[1,2,3;4,5,0;6,0,0]

The matrix is real, if all entries are real, otherwise it becomes complex. If an entry of a matrix is an interval, the matrix becomes an interval matrix.

If a row is shorter than the others, it is filled with zeros. A matrix constant can spread over several lines.

One can also use a 1xn matrix as part of the row in a matrix, like in

    >x=[1,2,3,4]
    >A=[7,x]

A will be [7,1,2,3,4] then.

Strings

String constants are enclosed in double quotes, like in

    >string="This is a text"

or in two single quotes to make it possible to include quotes in strings

    >string=''This is a "text"''

The section on the line editor shows how to insert a double quote into a string. A single character with ASCII code n can be produced by

    >char(n)

Sub-Matrices

A submatrix is a matrix, which is made up by the entries of another matrix. The simplest example is a matrix element

    >A[1,1]

which is the element in the first row and column of A.

Let us assume now that A is a matrix and r and c are vectors. Then A[r,c] results in a matrix, which consists of the rows r[1],r[2],... of A, and from these rows, only the columns c[1],c[2],... are taken. Example

    >A[[1,2],[1,2]]

is the upper left 2x2 submatrix of A. If a row or column does not exist, it is simply neglected. Thus, if A is a 4x4 matrix, then A[[4,7],[4,7]] results in the value A[4,4]. A special thing is A[i], which is the either the i-th row of A, or if A is a 1xn vector, the i-th element, i.e. A[1,i].

A ":" indicates all rows or columns; i.e., A[:,1] is the first column of A, and A[:,:] is A itself. Another example

    >v=[-1,-2,-3,-4,-5]; v[[5,4,3,2,1,1]]

is the vector [-5,-4,-3,-2,-1,-1]. If A is a 4x4 matrix, then A[[2,1]] is a 2x4 matrix, which consists of the second row of A on top of the first row. Note, that there may be a 0xN or Nx0 matrix.

Submatrices can be assigned values. Thus

    >A[1,1]=4.5

is a legal statement. However, if the submatrix has more than one element, the value must either be a matrix of equal size or a scalar. I.e.

    >A[1:2,:]=0

will set the first two rows of A to 0. If a submatrix gets complex, the matrix gets complex. If v is a 1xN or Nx1 matrix (i.e., a vector), then v[1] is the first element of v; i.e.,

    >v=[1.5,-2,0,4.8]; v[3]

is 0.

For compatibility reasons, the square brackets can be replaced by round brackets. Thus, A(1,1) is the same thing as A[1,1]. But A[1,1] is faster. Furthermore, if there is a function A, then A(1,1) will result in a function call to A.

A{i} is the i-th element of the matrix A, as if the NxM Matrix A was a vector of length N*M. This is useful for making functions work for matrices, and is really the quickest way to access a matrix element. It works also, if the matrix A is to small or a real or complex scalar variable. Then the result is the last element of A.

The : Operator

The ":" serves to generate a vector quickly. Thus

    >1:10

generates the vector [1,2,3,4,5,6,7,8,9,10]. A step size may be given as in the example

    >5:-1.5:1

which yields [5,3.5,2]. By numerical reasons, one cannot expect to hit 1 exactly with 00.11. However, the program uses the internal epsilon to stop generating the vector, so that 00.11 yields the desired result. By default, the internal epsilon is set so that even

    >0:0.0001:1

works correctly.

Matrix Expressions

If A is a matrix expression (an expression of type matrix), then A' is the transposed matrix.

The binary operator "|" puts a matrix aside another; i.e., if A is a NxM matrix and B is a NxK matrix, then A|B is a Nx(M+K) matrix, which consists of A left of B. Analogously, A_B puts A atop of B. These operators work also for numbers, which are treated as 1x1 matrices. They do even work, if A is a Nx0 or 0xN matrix.

The mathematical operators +,-,*,/ work as usual for numbers. For matrices they work elementwise. However, the matrices need not necessarily have the same size. There are some special rules.

  • If a is a number and B a matrix, then a+B or B+a computes the sum of all elements of B with a.
  • If v is a 1xN vector and A an MxN matrix, then v+A adds v to each row of A. A+v yields the same result.
  • If v is an Mx1 vector and A an MxN matrix, then each element of v is added to all elements in the corresponding row of A.
  • If v is an Mx1 vector, and w is a 1xN vector, then v+w is an MxN matrix, which has the sums of corresponding elements of v and w as entries (The i-j-th elements is v[i]+w[j]). w+v yields the same result.

Of course, the same rules hold for all other operands and functions of two parameters. The reason for these rules will become apparant later on. But the guidline is, that one can easily generate tables of functions for tables of parameters. Just one examples is the table

    >(1:10)*(1:10)'

which contains all products i*j.

Of course, -A negates all elements of A. EULER knows the rule, to compute "*" and "/" before "+" and "-". One can also write ".*","./" for compatibility reasons. If A has a different size as B, and neither A or B is a 1x1 matrix or a number, then A+B results in error.

Note, that the matrix product is computed with "A.B".

Of course, one can use the round brackets ( and ) to group expressions like in

    >(1+5)*(6+7^(1+3))

The power operator can be written "^" or "**" (or ".^"). It computes the power elementwise, like all the other operators. So

    >[1,2,3]^2

yields [1,4,9]. The power may also be negative; i.e., the integer powers of all numbers are defined. For a matrix, inv(A) computes the inverse of A (not "A^-1"!). Note, that "^" has precedence, so

    >-2^2

is -4.

Comparison of values can be done with > ,> =,< ,< =, != (not equal) or == (equal). They result in 1 or 0, where 1 is TRUE. Again, these operators work elementwise; i.e,

    >[1,2,3,4]>2

yields [0,0,1,1].

    >!A

(not A) is a matrix, which is 1 on all zero elements of A, and 0 on all nonzero elements of A.

    >A && B

is a matrix, which is 1 whenever the corresponding elements of A and B are nonzero.

    >A || B

is 1 whenever the corresponding element of A is nonzero or the corresponding element of B is nonzero.

    >any(A)

yields 1 if any element of A is nonzero.

One can change dimensions of a matrix with

    >B=redim(A,[n,m])

or

    >B=redim(A,n,m)

This will copy the content of A to B filling with 0 if necessary. A matrix is stored row by row.

Generating Matrices

There are several built-in functions which generate matrices. The most elementary ones are zeros([N,M]) and ones([N,M]), which can also be written zeros(N,M) and ones(N,M). They produce a NxM matrix, which is filled with ones or zeros respectively. Note, that one can also generate 0xN and Nx0 matrices. So

    >zeros[0,5]_v_v

is a legal statement, if v is a 1x5 vector.

Matrix Functions

    >size(A)

returns the size of the matrix A as a 1x2 vector [n,m]. It is also possible to give size several arguments. Then

    >size(A,B,...)

results in the size of the largest matrix of A,B,... However, all matrixes in the list must have the same size, unless their size is 1x1. The use of this feature will become apparent later on. Also

    >cols(A)
    >rows(A)

return the number of columns and rows of a matrix A.

    >length(A)

it the maximum of the number of columns and rows. More generally,

    >matrix([N,M],x)

or matrix(N,M,x) returns a NxM matrix filled with x, which may be real or complex.

    >diag([N,M],K,v)

produces a NxM matrix, which has the vector v on its K-th diagonal and is 0 everywhere else. If v is not long enough, the last element of v is taken for the rest of the diagonal. The 0-th diagonal is the main diagonal, the 1-st the one above, and the -1-st the one below. So

    >diag([5,5],0,1)

produces the 5x5 identity matrix. The same can be achieved with the utility function

    >id(5) 

One can also write diag(N,M,K,v).

    >diag(A,K)

is a vector, which is the K-th diagonal of A.

    >dup(v,N)

duplicates the 1xM vector N times, such that a NxM matrix is generated, which has v in each row. If v is an Mx1 vector, then v is duplicated into the N columns of a MxN matrix. dup works also, if v is a number. Then it generates a column vector.

    >B=band(A,N,M)

sets all elements of A[i,j] to 0, unless N< = i-j< = M.

    >B=setdiag(A,N,v)

sets the N-th diagonal of A to v. v may be a number or a vector.

    >bandmult(A,B)

multiplies to matrices A and B (like A.B), but is considerably faster, if A and B contain lots of zeros.

    >symmult(A,B)

multiplies symmetric matrices A and B and saves half of the time.

There are four practical functions shiftleft, shiftright, rotleft, rotright, which shift and rotate the columns of a matrix left or right. E.g.,

    >shiftleft(1:4)

will produce the vector (2,3,4,0) and

    >rotleft(1:4)

the vector (2,3,4,1).

Furthermore,

    >flipx(A)

flips the matrix, such that the last column becomes the first, the first column the last.

    >flipy(A)

does the same to the rows. euler-1.61.0/docs/reference/knot.gif0000644000175000001440000001373007417015637016122 0ustar ericusersGIF89ađđ÷ŔŔŔ``````ČČČđđđPPP¨¨¨ŘŘŘ@@@   xxx888000ŕŕŕ ¸¸¸ĐĐШhhhčččHHH€€€XXX°°°xxppp(((˙˙˙!ů,đđţH° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠI˛¤É“(SŞ\ɲĄË—0cĘśIł¦Í›8sęÜÉł§Ďź@ J´¨ŃŁH“*]Ę´©Ó§PŁJťJµŞŐ«XłjÝʵ«×Ż`ĂŠK¶¬ŮłhÓŞ]›µŰ· Č ŕ®]…ä¨wîÝż|÷ P—`_Ŕlýň]ŘW0ⱎFfŘřqWĹóĆŐkŮ*ć‚„1VîÜôłÁÉG“&j!jއW˙|ť¶GŐ˛k¶VÚáXnÁÂă l ;·ËÝŚ}źĽřđŘ“oń°ąs“Đ)ţ3Tp@ř€ăÖÓ ĎţaĂ âţ~ű˘í€źGoĽřâé} ś{ď-0Ń|ôm&BüĆv2áĹUG„B°€›…—`m÷ÉwÇaçž„–XátĆ ˇ.€@jŢ}x‡MvŔčăÉAHť~Óačp¸‚ †x A 7ŔŹT‰ť”DyĄ{8€ŔŚ Ő(ŽOđ@y?B ćšŚ0‰ŘÇÁśůi\{ďy ¦HLŢE&E{i Á”vŮĄ† t9B›pţ\ Ęy%ڇvĐJ}˘őg\ W¨ˇ^ʸˇˇď)a~sţćŕśÖqŮ%ţ—®$fYNfÔiˇ‰ľúĺ—캡šV×ŕ‚j°j«ti)L™nµ©E·ş7ę–v0ÁµŐú*clp\~Äkěś «l¬25‹RĎBKč‰R»¬@×N@˝ö”\~‚* € Ă÷éĽ6Í U»îşa˝P—Ă7ÄAż40n”'«lľ9ŤVXRyŐşQŔI»đµ@ÁĘDt€ řKŢŽĂoĂłĹöńP"sä)Ľ ßË2 ݲD0'=3ĆźN€łP:˛J%Í!Ë dA5ŕµĚ;V'­ÔîTČś™­[Ď>s`ňŚMAtoŤ‘ÄÜŔţŽĺ˝›č*/Ĺ™MSłäöI”uuÓ˝Ńřk¬y\ţ­¶QlŹTX敼ážY_Ápý8ä^‡ý.Ů€_Îłë,!ĚQ‡oëV褓îęk ĺŘ׍”f3É{Iµ#ŕÖÖŁ“nŔ …÷‚ góÁ'%»G…żtř—nŔĽäC=ęŐ˙ĚúsłË9÷ď䶨×íĽ#Ißő®Ž=űě:I¶÷‘ď)O| źţ?’„`éSŘgşˇtO%!ŕIćŻÖŤ˙řGJ"=ČĄolŘ Ŕ‹B@ŠÔĄ…üÄFGľ®„yű×tL–=˘/%ţĆł‰&ş„ń› ÷ŻNIĐ^íăYă‚‚Ż~8"ţ¦ ,1rý3™@VfAB$Utř(PÄ#ţc0(ů˘śx={U(AÉ ąH·]Q|Y<âbNâĹČ9Q‚BžO.’<ćäpŰ•$'‰ ,±‰?Ű@˛5>Š''?š¤Ă(˛RújO ‘@BŕŻLj’hRŰ‹'‚F›„R’Ł,Ą.wY€¸Ç#^ Áĺ$Ćp2g·$Î"Şţô¦+g$Nžf–tdM )ÉgńťÎsŁBݸŔĆ9”q °ç6!‚ čłvšě§N)sΤ™»‚¦Ęz.ô¤ e ůĘ<Ói"°¨żôSĚ;ęD–ÉLČoI©3eď4)J‡ŞE•*°|`žÝÂ1…€@¦­Äč&mŠYŇ(§(!čˇIR˘zĄGEjé ZA{5Ő Ő§ÂŔ¤ŃŞţP"/|ä÷d´N•ąS¨_ÍëIMZŇç=oqś4ë˝’Ö™"ŇT­‰f¸čČđʦ^şŔʆв)µlůŢIMŁ­¬^dV 3bŤ.‰ĺH±¨ó®ŐŽáţč9ç YwNÖ«•ÍíQAÖͶStC+@˝µĘŃ´›ôH±"řł‰*I¨”Ě[˛9€Ęď±<ččnűkĘÓ»˘ë-RýzÔľ:ŹĄ,sµB ¨Jđv ěßTGť*Yíą_ÍtBΑ  qô›ˇ5óJRΑĄŤ+ďóîçWÎŇ ˘)­a“'ŃQdi|c­}ďű9şf3|pĚśGĺŞĆÚŘ«ąăĄŠgŘ8ĆmŤq%5đoüb‡Y˛´UC®…‚á°I Fö݇\” Rd˛˝Iňŕ$EłnxU¨4×]4ŮÉ[ž‹_ś€÷ÁY[ŮŤŤű®Ä ËQţ±vÔ ôÔlĂń"›ĎPlîeżĺü í’—]ň¤)F€'ŇAúT gěâ\7˛Ž¶˝Kî)F·€E¨‰Ă uZë\˛u)Î÷,ÇM7čY/ý= íÝl–:€ľŔíđĽ7bDZ!Z‹¶ĺ·4 đ"ŽY˝€ĺ K1+–ŞČĄűzÚÓĂ—`ŃĆ]ŕÎ!j,O"­FŰŃĘ t٬57çuäľ1šÜtÍe^S@•Ă6Yôł9B*UÍv6¨rĺ4i×KÝŠ¦Űă$˝`Ő%«––H·p±ĹdcIGŻÁâ+¸Ďäµ˝ö(÷Člą łţÓŁoPĘZýľřĘÜ˝8ňţo¬Á­’'©Řß·# AÄŤqńĄ¸}^/lŞ,Řî•ŔD>rdUÉä†rZµŞ•˛ˇńZš |yĚ"Z*™ÉVsj^C^ Ś@ ŢŽOb5˘Ł,bH—ŮżBÎô¦gŚJP?ůÔť1­š÷;"¶ąš®×ě‘Ä9a\v˘˝K([»Jâl-kÉäu/€üôĽO˝Zö*ĺ3[ZęŔ‡ć°%á÷4(Q~á˛tč7|śW| Ň~á+ĽĆ|î”;+E:˝!bĚQ}¶v††Z0F:*%D3ć~&Q~ţ|ÁÇtéwwx6¨+˝+UV7UDÖt`‘Ĺ|Ńz2wg)NVC?xT+ô@{Ł‚@Ö%!31ă{Ć’… (|*ň€>Ň~7¨,°‚|ô˛z*ÓZÓhĽ†KÂăď„ĚAs {/5U]ÖWńĹJ1Ă7m†,¶â/WX~Z((«"Ăwţ%ç(I˝2mfePg¸rŠF˘äqU&áu!Ń)=U‡u‡6†„i†XŃ/Vč‚’|ż*2!ýQŠ8‹í7IÖbqˇ×wň§kY{™HpT$©†tThJ˛8¨;˘lMT,™Wwâ©XHĘ–yč±y^'a¨'»‚r×jąŘwCł2Ô—#’aď35 ¸܆n›D4ř<ˇ?^rř¨ls¤ŠÔ(9—7wăň(\x'±X|ah¶X/ˇv/bçĎÄ2EvDá5_Ł4Ş8’ýč‚ËE,ŘŘÚ¸Ť´x(H2Iţ¦ţ34\‡‘®‘Žęxü7śh2äfLDÓ|‘7_S’ľGo€řq ¨… 芨˘’Ăçl7h/)Iţvhŕw.48fㆠrU!NL;ąs ™4HIoh”«r…8ü±a-‰ ‰/™ńa5©çIeFŃb5ů7A™@Ęř‘ Y”"©”MTŤ¬t"rŮ•U2•´8Ip•)ÁzŽQ‘ÂŘŽ§axHă)E)Mf™#é{ ŤYřL§"č!—”Y•»’ráČ,¸$6<ى4FE„ŽsšląJ„řŚš74ř…s©§+ŇömćÓ?d]rXţ5(×3šęf?˘řČš'9áňŚ‘)™Ry(d]Ľ2ťÝFDĽ'+™ť|Ň3 ŕ›ĺYÖ6ź11ůhŤâB.®™Py%(‹Séž_’rŔq’V?AGźů§Ůi#vh7g‰´2ŕ韡ś":'üŃ…$G%łŮžľâ ˇ¬v@Yôą™—%ˇmˇ‘A#új jLW uB.°9)ęç#sů%>u™ŕČ1ˇ|V?¶¶o•ťú™JŕJŁÉ>;Ú<=jP¦°éfÍéśt™¤·™"€NZb0:ˇ@TźQĄ®aN‚ˇĄ É2čb:–!7h™iĘţkÚ¦MĄĎ“sꙂSˇĄ©§˝¦Hń§uů……şgŹ…¨±ł9Ť$ĄŠ©˙¶rö3śCS.ę¦DĄ™ą™tJ§79˘0ë<Úk@©>±¦lúJHW­Ú^É''ÁHzá“*7ŤĂ«=á««IňéŞqZˇ‹ZŁâ9r1dĄ”[V4C­ŔŞUĂú©ŠŞ”ÜąŰú?ěcWiř`Îş-şg 婲j­4Ş™$Ý*>ń ®@-:®6“]1;Ň…­ Á™±®ń°\ę­j˦öZbE­'«&ŃsעąÚkë»?JxţE˘ă±ŕŞŕ±››b«'8rˇ5ŐÖV:QŻJI¤d‚˘z®kˇá?n÷LrA<‹+‹°¬:„ K´Ek‹®ävëD49 fój›7-«°ŐY­Ń§|ISxł€“q  /ćK./Ú±42k¶±•D6{qëDj9˨&1·´CłéJµ3[}-äZë¶:rńµ2á«b«U0Џ‰ËŻ3WŰ{«ąÄ|Y3ڱ¦D9¶Ń¤ąz˛S+"á7n×:¤´hdĺ0¦«âJ·+q¬‹®ś˛ż¸ëş>ÖbP·8b78•‹Ó3¶™ű»"‹hűúţ§„âiř"¶Ëe“»şśú˘ĘĂFŇ&yK¬Ô•»`3Dg-u•ĽY#vú…ząä»2‘uľ4k1‘m!‘˝˘ű·Ý«ĽtľqżĽ›Nv‹¶ţűżŻ%î›r)Łh€ĺ0tF«*qżËŔ#ĹżőA˝é2«"±¶ŰKŔ‘kŔčRxŐ+ ˝ë´°h›ľ2‘&Bě0ĽkśÁ’±Żâ µ ´e{¬úJúÚÂ\Nžäł0LÄX \0\L•ٵNÜ˝ş†Ád,ĹÇ Łt·GÜ1‘ŚL,Č•ĽĂ…rÂ?[Ĺlx¸Ż{¶;Ŕ 1ÉM,Ç„Ľ5F#\«­ĽŔĎŐ±ŤĽ$},Ę'a«>wĽ§ÜnP|-T¸ĘNRŻUśNŔU!ÄSJŚ+ŘRJ»FVĘ+\N3Qňag¨WĆNŮLˇŠ;Ë-lËđ M¨ĚĂä<ˇ(¨‘ÎŐ<ć[ĚşÉĆRT®Â0,żPÜÉr‘‘Îé#>Tźl®ZÜ´ĽÄÉň7(7Čs|ÁcŚĎ ˝MJ;®Rd‚ťţÓ5ĘsJq=đ{ʨÜwĺL6i&^ŁAÚL}P2ěÎx«=6ËÜ::śËáś2ĂE6ÁÁc2ó(rJ=ŤE)ĐÝI!QĘFŤĘ/F4J ͉âÔqŁO¤ŐëĚÎUťßűüŇ•·Ő(Îă 1 /?ÂZD‚xÍ$&¶]5,§“ťđB6•wĐsíĚątĎж!–J%Ď%#Ć#ź€mťnĚŇz»SÔ]ĎĄ‹řgŽm©ĐŐa3‚6ŰŐÎę+ŘS‘»@r¦śhmÁąDŇ6tC–Űş}sĘóa’ skmˇmí4§1LĎsM×ăüL·­ŰÎ-*ŠçŰFţôrýČnLÜQŘýÎłíĚókPv©Óf ©BĄVCک͡¬Ă,ßÜŮ;ëÝ~gŰá˝Mő1eR…Ôź+ÖĺŢq,ÇěÝëFJâmqűWaăŁß,¸iÝÎb]Ô˛ÝČ=ŕ\ÖŐĺXŽÉÝŃ ľ@š¬9ëý©Čđ]mżFV®k’Hȵ[ lŁŽ á">KmÔ˛Mj(«ł)ľr,^‚Χ.{*ýťýÓ6~ă‘ŰhJeâşĚ‹cYw‘®_ďł´żsLľ¦«<ŠPµäŇlŐWíýeЋݽŚÖćđ4ŹdNĺ:9Őť3qÂëäóäĄţÉČ`äÓH“qpD^çx4Kx®2~Ş€—Ś TÄa’ˇü!áÁłµtýb$µč@ô,yQEN¦Ű­zÚć(Ł~#’Ž´\±Îk|ěhì˝ąŽÄ±™×íëż®ës±Ň2ëRäQĹîĘ~6ŠńéŹńěă´LÍîßb‘Ä6’g">ÜŰţ™\ńVŇţÔ®©ţíĽqí›;ěčNÂTÁěínÇďŢëńäMá!^ďüĄîF{ĺúÎn}Ě˙nďGńCă>đ?,Ô2ŽđçĚ. Ďđ //t‰o¬ńđź#ün˝ěžńúŚGíń4ŇÄłÉńťQî€âď"ź“Cń+ź—ü^ň/źć~ć3ĎĐ~lň6’ëšqđ7˙ń‰Úń?˙č«­óńŽňÔëóC?ňÂkôŻÄ§¶ôÄşŻťîôŃŔ(ő˙{ˇQŻő[Ďř®ô^Ľ©!ôc?őÂmőCoFHöż•fďö_żĘU.÷ĆúövďOҧöyŹ#;™÷7á!mř_éî„oçŕ~řŤńŠoŃĹÚř,4ř“_ů–ůźůšżůśßůž˙ů ú˘?ú¤_ú¦ú¨ú;euler-1.61.0/docs/reference/euler_download.html0000644000175000001440000000514707434666636020366 0ustar ericusers untitled

Download

All Euler sources and builds are distributed under the GNU general public license. The main point is that any modified versions remains freeware and open source, und must be distributed with a clear reference to this original version. Other licenses are available.

For more information on the various versions, see here.

euler-1.61.0/docs/reference/german.gif0000644000175000001440000000015707417015637016417 0ustar ericusersGIF89a'‘˙˙˙,'H„Ź©ËíŁś´Ú‹łŢ††âH–`¦j‰®îÚľ2ĎöyçA­ż€ ‡Ä˘ř;*—Ĺ$óątB§D)ő*°b§ÚíłëŤv$;euler-1.61.0/docs/reference/euler.html0000644000175000001440000000230207417015637016453 0ustar ericusers Euler - Numerical Programming

The EULER Software

Version 1.60

Euler is a numerical laboratory with a programming language. The system can handle real, complex and interval numbers, vectors and matrices. It can produce 2D/3D plots. Included is a modern programming language. All versions are freeware under the GNU general license.

Euler is not a MatLab clone, but very similar to this program.

Send E-Mail

R. Grothmann euler-1.61.0/docs/reference/settings.html0000644000175000001440000000552507417015637017211 0ustar ericusers untitled

Special Settings

This description mentions some special things. Many of the things that are special to Windows apply also for the new Unix GTK version done by Eric Boucharé.

Stack Size

Euler uses a stack of fixed size. The stack contains all computed elements, and the local variables of the active functions. To set the stack size in Windows, use the menu. The new stack size will be effective at the next start of Euler. In Unix, use the command line option "-s" to set the stack size.

Graphics Size

Graphics are stored in an internal format. The area used to store graphics is limited. You can change the size of this are in Windows with a menu entry.

Fonts

There are two fonts. One for the text, and one for the graphis. In Windows, there is a comfortable dialog to edit both of these fonts. The fonts will be scaled with the graphics window size, if possible. In Unix, you will have to use the command line to choose a fixed font.

Colors

Euler uses 16 colors. In Windows, you can edit all colors with a menu entry. The first two should be black and white, since they are used for basic text output. Colors 2 and 3 are used most often, also for text output, and should be green and red. The option to use pure colors only is somewhat outdated, since most systems run on a real color basic now.

Printing

The Windows version can print graphics directly. It can also print a comment below the graphics. In Unix, it is best to save as postscript as described in the graphics section, and to print the postscript or use it in TeX.

The Clipboard

In Windows, text, command and graphics can be saved to the clipboard. When saving text, there is a choice between commands and all text. Selecting text for the clipboard is done in the usual way by dragging over the text with the mouse. Commands can be used to generate an external Euler file. Graphics are copied in Windows Metafile Format.

Saving Graphics

Graphics can be saved as postscript by all versions of Euler. The procedure is described here. The Windows version can save graphics in Windows Metafile Format and in Bitmap format. In Unix, one can use the usual screendump features to get a dump of the graphics screen.

Delete Euler Output

In Windows, the output of the Euler system can be deleted. This can either be done for the selected region, or for the complete file. euler-1.61.0/docs/reference/special.html0000644000175000001440000002510507417015637016765 0ustar ericusers Special Problem Solvers

Problem Solvers

This section describes some problem solvers. These functions are either built in or read from a file at program start. We explain

Solving Equations

In UTIL some fuctions are defined, which will to be of general use. First there are some functions for solving equations.

    >bisect("f",a,b,...)

uses the bisetion method to solve f(x,...)=0. f must be a function of the real variable x which may have additional parameters "...". These parameters can be passed to bisect and are in turn passed to f. You can use the syntax

    >bisect("f",a,b;v)

to pass the additional parameter v to f(x,v). This syntax applies to all functions below, which accept additional parameters to be passed to a function.

The method uses the internal epsilon to stop the iteration. You can specify an own epsilon with

    >biscet("f",a,b,eps=0.1)

Note, that parameters with values must be the last parameters of all. The eps parameter can be applied to many functions in this section.

It is possible to pass an expression to bisect. This expression must be a string containing a valid EULER expression for f(x). The name of the unknown variable must be x.

    >bisect("x^2-2",1,2);

All functions in this section will work with expressions in x.

    >secant("f",a,b,...)

uses the secant method for the same purpose. "f" may again be an expression containing the variable x.

If you want to find the root of an expression, which contains one variable or many variables, you can use

    >root("expr",x)

expr must be any valid EULER expression. All variables in this expression must be global variables of type real. This function is not to be used in other functions, unless this functions sets the global variables first! x must be the name of the variable, which you want to solve expr==0 for. The new value of x solves the expression. E.g.,

    >a=2; x=1; root("x^2-a",x)

will set x equal to sqrt(2).

If you need to find roots of a function with several parameters, you can use Newtons method or the method of Broyden.

    >broyden("f",x)

or

    >broyden("f",x,J,...)

uses the Broyden method to find the roots of f(x,...)=0. This time, f may be a function f. Then x is a vector. J is an approximation of the Jacobian at x, the starting point. If J==0 or J is missing, then the function computes J. Again, additional parameters are passed to f.

    >newton("f","f1",x,...)

finds a zero of f using the Newton method for a function with one parameter. You must provide the derivative of f in f1. Similarily,

    >newton2("f","Df",x,...)

is used for several parameters. f(x) must compute an 1xn vector y from the 1xn vector x. Df(x) must compute the nxn derivative matrix at x.

Optimization

The minimum of a convex function (maximum of a concave function) can be computed with fmin (fmax). E.g.

    >fmin("x^3-x",0,1)

If f is a function, you may also use fmin("f",0,1). As always, additional parameters are passed to f.

The function fmin uses the Golden Ratio method. However, Brent's method may be faster and is available with

    >brentmin("x^3-x",0.5)

where the parameters are an initial try, and optionally a step size for the search and an stopping criterion epsilon. The basic built-in function is brent. All minima and maxima of a function or expression (in x) are computed with

    >fextrema("x^3-x",a,b)

where a and b are the interval ends. There may be an optional n parameter to determine the number of subintervals to be investigated. The minimum of a function in several variables can be found with the Nelder-Mean simplex algorithm.

    >neldermin("f",v)

This time, f must take a 1xn vector as an argument and return a real number. Or you may pass an expression in x, which evaluates for a 1xn vector x to a real. V is a starting point for the search. The basic built-in function is nelder. Optionally, you may pass a delta as size of the first simplex and a stopping epsilon.

Linear Optimization

EULER has a built in Simplex algorithm, which minimizes c'*x among all x, satisfying x>=0 and A*x<=b.

    >simplex(A,b,c)

will compute the solution x. To check for feasibility and boundedness, use

    >{x,r}=simplex(A,b,c)

r will be 0, if x is a correct minimum. If r is -1, the problem is not feasible. If r is 1, the problem is unbounded. In this case, x contains a feasible point. In any case A must be a real mxn matrix, b an mx1 matrix (a column vector), and c a 1xn matrix (a row vector). x will be a nx1 column vector.

Note, that the internal epsilon is used for numerical computations.

Integration

    >simpson("f",a,b)

or

    >simpson("f",a,b,n,...)

computes the Simpson integral with of f in [a,b]. n is the discretization and additional parameters are passed to f(x,...). f must be able to handle vector input for x. Again, "f" may be an expression in x.

    >gauss("f",a,b)

or

    >gauss("f",a,b,n,...)

performs gauss integration with 10 knots. If n is specified, then the interval is subdivided into n subintervals. f(x,...) must be able to handle vector intput for x. "f" may be an expression in x.

    >romberg("f",a,b)

or

    >romberg("f",a,b,n,...)

uses the Romberg method for integration. n is the starting discretization. All other parameters are as in "simpson". Again, "f" may be an expression containing the variable x.

There is also an adaptive integrator

    >adaptiveint("f",a,b,eps)

where eps is the desired accuracy. Optionally, you may pass the number of initial subdivisions. Further parameters are passed to f.

Differentiation

To take the derivative, one may use the dif function, as in

    >dif("f",x)
    >dif("f",x,n)

(the latter for the n-th derivative). Again, "f" may be an expression in "x". There are some approximation tools. Polynomial interpolation has been discussed above.

Splines

There is also spline interpolation

    >sp=spline(t,s)

which returns the second derivatives of the natural cubic spline through (t[i],s[i]). To evaluate this spline at x,

    >splineval(t,s,sp,x)

is available.

Regression Analysis

    >polyfit(t,s,n)

fits a polynomial of n-th degree to (t[i],s[i]) in least square mode. This is an application of

    >fit(A,b)

which computes x such that the L_2-norm of Ax-b is minimal.

Iteration and Fixed Points

    >iterate("f",x,...)

seeks a fixed point of f by iterating the function from x. If you provide additional arguments ..., these are passed to f. Of course, f must be a function of type

    >function f(x)
    $...
    $endfunction

If you want see the iterations, use the following variant.

    >niterate("f",x,n,...)

iterates f starting at x n times and returns the vector of iterated values.

    >steffenson("f",x);

Seeks a fixed point starting from f using the Steffenson operator. nsteffenson is similar to niterate.

    >map("f",x,...)

evaluates the function f(x,...) at all elements of x, if f(x,...) does not work because the function f does not accept vectors x.

Differential Equations

One of the differential equation solvers is the Heun method. To use it, write the function f, which defines the differential equation y=f(t,y). y can be a 1xN vector. Then call

    >heun("f",t,y0,...)

The extra parameters ... are passed to f. y0 is the starting value y(t[1]) and t must be a vector of points t. The function returns the values of the solution at t. The accuracy depends of the distances from t[i] to t[i+1]. Heun is implemented via a UTIL function. A faster solver, implemented as a built-in function, is the Runge-Kutta method and its adaptive variant.

    >runge("f",t,y0)

does the same as heun. Optionally, a number of steps to take between the points of t can be passed. Thus you have to pass addtional arguments for f as

    >runge("f",t,y0;...)

The adaptive Runge-Kutta method is called adaptiverunge, and takes an epsilon and an initial step size as optional arguments. Internally, these functions use the built-in runge1 and runge2 respectively. euler-1.61.0/docs/reference/euler_list.html0000644000175000001440000000127507434665716017526 0ustar ericusers untitled

Euler Discussion Forum

For recent information and discussions about Euler, please have a look at the Euler message board

euler-1.61.0/docs/reference/graphics.html0000644000175000001440000005635507522474731017161 0ustar ericusers Graphics

Euler Graphics

This long section explains

Basics

The best part of EULER is its graphics capability. There are two screens, the text screen and the graphic screen. Text output automatically displays the text screen, and graphic output displays the graphic screen. One may also switch to the graphic screen by pressing TAB on input or with the command

    >shg;

There are two coordinate systems. The screen coordinates are a 1024x1024 grid with (0,0) in the upper left corner. Furthermore, each plot generates plot coordinates mapping a rectangle of the plane to the screen with the smallest x value left and the smallest y value at the bottom. To be precise, the rectangle is mapped to the screen "window", which may only cover a part of the display area. See below for more information on windows.

Plotting a Function or Expression

We will start with a few practical functions. These functions are defined in utility files and build on more primitive graphic routines, which we explain later. By the way, you can use

    >help function

to get additionnal help on a function

The plotting of a user defined function f(x,...) can be done with

    >fplot("f",a,b)
    >fplot("f",a,b,n)
    >fplot("f",a,b,,...)

The extra parameters ... are passed to f. n is the number of subintervals. Note the extra ',', if n is omitted. If a and b are omitted, as in

    >fplot("f",,,,...)

or

    >fplot("f")

then the plot coordinates of the last plot are used.

You can use an expression instead of a function name.

    >fplot("x^2",-1,1)

This will plot the function x^2 on the interval [-1,1].

You can zoom in with the mouse by

    >setplotm(); fplot("f");

This switches to the graphics screen, and you can select a square region of the screen.

3D-Plots of Functions or Expressions

A 3D-plot of a function can be done with

    >f3dplot("f")

f must be either a function name of a function f(x,y), or an expression in x and y. Additional parameters are the x-y-range and the number of grid points in each dimension.

    >f3dplot("f",xmin,xmax,ymin,ymax,nx,my)

You can get other kind of plots with

    >f3d("f");
    >f3dpolar("f");
    >fcontour("f");

In all cases "f" may be a valid EULER expression using x and y (and other global variables), or a function. Especially nice is the function

    >fcd("f")

which plots contour and density of a function. You may pass the number of grid points, the x-y-ranges and the number of level lines as additional parameters, e.g.

    >fcd("x*y",50,-2,2,-2,2,31);

This will plot the function with 50 grid points and 31 level lines in the specified x-y-range.

Titles and Plot Text

    >title("text")

draws a title above the plot. To label a specific position in the last plot, use

    >label("text",x,y)

x and y are plot coordinates.

The title function uses the elementary

    >ctext("text",[col,row])

which plots the text centered at screen coordinates (col,row).

    >text("text",[col,row])

plots the text left justified. The width and height of the characters can be asked with

    >textsize()

returning the vector [width,height] in screen coordinates. There is also

    >rtext("text",[col,row])

which alignes text to the right. Vertical text can be printed with

    >vtext("text",[col,row]);

vctext would center the text vertically, and vrtext would align it at text end. The functions vutext, vcutext and vrutext work the same way with text going from bottom up.

To compute from screen coordinates to plot coordinates, use

    >{x,y}=fromscreen(c,r)

and for the other direction, use

    >{c,r}=toscreen(x,y)

2D Plots

We know describe the basic built-in functions. If x and y are 1xN vectors, the function

    >plot(x,y)

connects the points (x[i],y[i]) with straight lines and plots these lines. It first clears the screen and draws a frame around the screen window. The plot coordinates are chosen such that the plot fits exactly into the screen window. This behavior is called autoscaling. You can set your own plot coordinates with

    >setplot(xmin,xmax,ymin,ymax)

(or setplot([...])). The autoscaling is then turned off. To turn it on again, use

    >setplot()

Force EULER to use a square coordinate window with

    >keepsquare(1)

Correspondingly keepsquare(0) will turn this off. This does not affect the physical appearance of the plot window. But the width in the y-range will be the same as in the x-range.

    >scaling(flag)

will stop (flag=0) or resume (flag=1) the autoscaling of the next plot. If scaling is off, then the plot region of the last plot (or the one set with setplot) is used.

By the way, the plot command returns the plot coordinates; i.e., a vector [xmin,xmax,ymin,ymax].

The screen window is a rectangle on the screen which can be set by

    >window(cmin,cmax,rmin,rmax)

(or window([...])) in screen coordinates.

If x is a 1xN vector and A MxN matrix,

    >plot(x,A)

plots several functions. The same is true with

    >plot(B,A)

if B is a MxN matrix. In this case, the plot is done for corresponding rows of A and B.

The graphic screen is cleared by the plot command. This can be turned off with

    >hold on;

or

    >holding(1);

To turn holding off,

    >hold off;

or

    >holding(0);

is used. The function holding returns the old state of the holding flag. This is a way to draw several plots into the same frame. Combining window and holding is a way to draw several plots in several windows on the screen.

    >xplot(x,y)

works like plot but does also show axis grids. Actually, xplot has default parameters grid=1 and ticks=1, which determine, if a grid is plotted and axis labeling is done. Thus

    >xplot(x,y,1,0)

does no ticks. Also

    >xplot(x,y,ticks=0)

may be used for the same purpose (see in the section about EULER programming for details on default parameters).

    >xplot()

plots the axis and ticks only.

You may set vertical to 1, if you wish vertical axis labels for the y-axis. You should call shrinkwindow again after doing so, because you will not need so much space to the left of the picture now. Put the command into EULER.CFG to make it permanent (after loading UTIL). However, this does make sense only if you have chosen a small outline font like (O)Courier at about 40 lines per page.

    >xplot(z)

will plot xplot(re(z),im(z)), if z is a complex vector.

    >cplot(z)

ca be used to plot a grid pattern, if z is a complex matrix.

    >histogram(data,n)

will plot a histogram of the data distribution. It will divide the interval into n equally spaced parts and plot the number of d[i] in each subinterval.

You should use

    >shrinkwindow()

if you intend to use labels (ticks) on the axis. This leaves some space around the plot.

    >fullwindow()

resizes the plots to the full size. You may also set the x axis grids on your own with

    >xgrid([x1,x2,x3,...])

or

    >xgrid([x1,x2,x3,...],f)

the latter producing digits at the edge of the plot (ygrid(...) works respectively). Actually, these functions are defined in UTIL.

To plot with logarithmic scale is not straightforward. Assume the data is t=1100 and s=1100. You first plot

    >plot(t,log(s))

Then you set the grid for both axes manually.

    >xgrid(100:100:1000); 
    >ticks=2^(0:9); ygrid1(log(t),t);

So xgrid sets grids at 100,200,...,1000 and ygrid1 sets ticks at the logarithms of 2,4,8,..,512 but using the labels 2,4,8,...,512 instead of the actual logarithmic values. This scheme allows for any scaling, not only for logarithmic.

    >plotarea(x,y)

sets the plot area for the next plot like plot(x,y), but it does not actually plot.

    >reset

is a function in UTIL, which calls shrinkwindow, hold off and some other stuff to reset the plot coordinates to default values.

Plot Styles and Colors

If a color monitor is used, EULER can produce colored plots. The plot color can be modified with

    >color(n)

where n=1 is black, and n=0 is white. Other colors depend on your system settings. The textcolor and framecolor can be set the same way.

There is the possibility to use dotted and dashed lines, or even invisible lines erasing the background. This is done with one of the commands

    >style(".")
    >linestyle(".")

("-" for solid lines, "--" for dashed lines, "->" for arrowed lines and "i" for white lines). The function linestyle, also

    >linestyle("")

returns the previous line style. The lines can have a width greater than 0. This is set with

    >linewidth(n)

The function returns the previous setting.

Marker Plots

The command

    >mark(x,y)

works like plot. But it does not connect the points but plots single markers at (x[i],y[i]). The style of the marker can be set with one of the commands

    >style("mx")
    >markerstyle("mx")

for a cross. Other styles are "m<>" for diamonds, "m." for dots, "m+" for plus signs, "m[]" for rectangles and "m*" for stars. The function returns the previous marker style. The markersize can be set with

    >markersize(x)

in screen coordinates (0..1024). There is also the command

    >xmark(x,y)

which works like xplot.

Bar Plots

A rectangle area of the screen can be filled with

    >bar([xleft,yup,xright,ydown])

The coordinates are screen coordinates. But there is the utility function

    >plotbar(x,y,w,h);

which plots in plot coordinates. The style of the bar is determined by the barcolor(c) and the barstyle(s) functions. The color is an index from 0 to 15 and the style is a string. Available are "#" for solid, "O#" for solid framed, "#" for framed, "/", "\" and "\/" for hatched bars.

The usage of this function is a bit critical. You have to set the plot window first, then determine the x and y of the lower left corners, finally the heights and widths of the bars. E.g.

    >setplot(1,30,0,5); x=1:29; y=log(x); plotbar(x,0,1,y);

There is a function to do histograms.

    >histogram(data,n)

which makes a histogram (value distribution) of the given unordered data.

3D Plots

The easiest way to produce 3D-plots is

    >mesh(Z)

If Z is a NxM matrix, its elements are interpreted as z-values of a function defined on a grid of points (i,j). The plot is a three dimensional plot with hidden lines of the points (i,j,Z[i,j]). It is autoscaled to fit onto the screen window. The point (1,1,z[1,1]) is the front left point.

One can turn off the different fill styles mesh uses for the two sides of the plot with

    >twosides(0)

This function works also for solid plots described below. It is a faster way than the use of triangles to avoid seeing the errors, that the mesh plot sometimes makes. By the way, both functions return the old values of the flags.

    >meshbar(Z)

works similar as mesh, but plots the heights of Z as square columns.

There is a function which produces matrices X and Y such that X[i,j] and Y[i,j] are the coordinates in the plane of a point in a rectangular grid parameterized by (i,j). This function is

    >{X,Y}=field(x,y)

where x and y are row vectors. Then X[i,j] is equal to x[i] and Y[i,j] is equal to y[j]. So you can easily generate a matrix of function values; e.g.,

    >Z=X*X+Y*Y

However, you can do this more easily, by defining y as a column vector, x as a row vector. Then

    >Z=x*x+y*y

will work just as expected. This is due to the rules for operands, which operate on matrices. Even a more complex expression, like x*y+3*x+y^3 would be evaluated correctly.

A nicer way to plot a surface is

    >solid(x,y,z)

or

    >framedsolid(x,y,z)

where x, y and z are NxM matrices. The surface parameters are then (i,j) and (x[i,j],y[i,j],z[i,j]) are points on the surface. The function would work, if x is a row vector, y a column vector, just as an operator.

    >framedsolid(x,y,z,1)

will scale the plot to fit into a cube of side length 2 (the unit cube).

The surface should not self intersect; or else plot errors will occur. The surface is projected onto the screen in central projection, with the view centered to (0,0,0). You can set the viewing distance, a zooming parameter, the angles of the eye from the negative y- to the positive x-axis, and the height of the eye on the x-y-plane, by

    >view(distance,tele,angle,height)

(or view([...])). view returns the previous values and view() merely returns the old values. framedsolid has a default parameter scale, which scales the image to fit into a cube with side length 2*scale, centered at 0, unless scale=0, which is the default value (no scaling). Thus

    >framedsolid(x,y,z,2)

will scale the plot so that |x|,|y|,|z|<=2.

    >wire(x,y,z)

and

    >framedwire(x,y,z)

work the same way, but the plotting is not solid. If x, y and z are vectors, then a path in three dimensions is drawn. The color of the wires is set by

    >wirecolor(c)

If you add an extra value to framedwire or framedsolid like in

    >framedwire(x,y,z,scale)

the plot is scaled to fit into a cube of side length 2*scale. The function

    >{x1,y1}=project(x,y,z)

projects the coordinates x,y,z to the screen and is useful for labeling 3D plots. There is a function

    >scalematrix(A)

which scale the matrix A linearly so that its entries are between 0 and 1.

    >solid(x,y,z,i)

is a special form of solid. If i=[i1,...,in], then the ij-th row of (x,y,z) is not connected to the ij+1-st row. I.e., the plot consists of n+1 parts.

To get a plot of a cloud of points, use one of the following

    >mark3(x,y,z)
    >framedmark3(x,y,z)
    >framedmark3(x,y,z,scale)

x, y and z must be 1xn vectors.

A special feature are stereo plots. This will generate two pictures and there is a special techique to view them as one stereo picture. You look through the image, such that there appear exactly three images, and focus. To get a stereo wire plot, use

    >stereo("framedwire",x,y,z,scale)

In general, the first parameter is the function, which does the plot, and further parameters are passed to this function.

Contour and Density Plots

A contour plot of a matrix is produced with

    >contour(A,[v1,...,vn])

The contour lines are then at the heights v1 to vn. The interpretation of A is the same as in mesh(A).

A density plot is a plot of a matrix, that uses shades to make the values visible. It can be made with

    >density(A)

The integer parts of the values are cut off. So the shades run through the available shades, if A runs from 0 to 1. A can be scaled to 0 to f with

    >density(A,f)

f=1 is the most important value. The shades can be controlled with

    >huecolor(color)

Any positive color produces shades in that color with varying intensity.

Colored plots

The color 0 uses a rainbow color scheme. The color 1 is for gray scale shading.

    >solidhue(x,y,z,h)

makes a solid view with shades. h are the shading values with the same interpretation as in density. Thus h must be a matrix of the same size as x, y and z. Each point h[i,j] controls the color at the grid point (x[i,j],y[i,j],z[i,j]).

    >framedsolidhue(x,y,z,h,scale,f)

works like a mixture of framedsolid and solidhue. scale=0 and f=1 are the default values.

Easy multiplot figure

multiplots figure can easily be obtained using the figure command.

    >figure([1,2]);

defines a figure with one row of plots and two columns. The function sets the screen window so that you can draw the first plot (top-left). For the second one, just write

    >figure(2);

Then, plot your second function, and so on ... Plots are numbered from left to right, starting with the first row. The figure command uses the holding feature of the graphical screen to achieve the multiplot functionnality. So, you have to use

    >hold off;

to be able to clear the previous plots. You may need to call shrinkwindow() to have a common full screen plot, as well.

Choosing Coordinates with the Mouse

It is possible to sample coordinates from the graphics screen with the mouse.

    >mouse()

displays the graphics screen and a mouse pointer and waits for a mouse click. It returns a vector [x,y] which are the plot coordinates of the clicked spot. Using

    >{x,y}=select()

returns several x coordinates and y coordinates at the points, which the user selected by the mouse. The selection stops, if the user clicks above the plot window.

How to Animate Plots

The animation scheme used here is slightly different than the Window's one, but it is simpler as well. Animation is made of a sequence of plots (any plot type) recorded, and that can be relayed.

To start recording a plot sequence, use

    >beginpages();

Draw the first frame. Each time the clg command (clear graphics) is called, a new frame is created. This is what happens when you simply call xplot. To end recording, use

    >endpages();

To replay the sequence, use

    >playpages(delay);

where delay is the time between consecutive frames. The function returns the number of frames.

You can also the number of pages of the animation using

    >pages();

While recording nothing is drawn on the graphical window. After the end of a recording, the animation is deleted whenyou plot another function or when you clear the graphical screen.

Here is an example that showing a curve evolution when the parameter k changes from 1 to 10.

    >function record()
    $  x=-4:0.1:4;
    $  beginpages();
    $  for k=1 to 10 .. plot a sequence of 10 plots
    $    xplot(x,x^3+k*x^2-k*x);
    $  end
    $  return endpages();
    $endfunction
    >record();
    >playpages(0.2);

For more details on creating functions, see the programminf section in this manual. playpages runs the animation once. To show the animation in an endless loop, use

    >animate(0.2);

The loop can be broken by a key stroke.

3d animation can be quickly set up, using

    >rotate("f3dplot";"x*y");

Note the use of the semicolon.

Exporting and Saving Graphics

All Euler version can save graphics in Encapsulated Postscript (EPS) format, a feature, which has been programmed by Eric Boucharé. The Windows version can export Windows Metafiles to the clipboard, and save Windows bitmaps on disk. Moreover, there is a special Euler metafile format, which might be used for external filters. It is documented in the source code of Euler.

To use the postscript export, there is the command

    >postscript "filename.ps"

This command will overwrite any existing file with this name. The size of the Postscript screen can be set with

    >pswindow([width,height])

The default is 15x15 cm.

You can save the graphics screen in the internal Euler metafile format with the command

    >meta "filename.met"
euler-1.61.0/docs/reference/sin1.gif0000644000175000001440000001032007417015637016011 0ustar ericusersGIF89aŚK‘˙˙˙dd!ů ,ŚK˙„Ź©ËíŁś´Ú'\Űôł}×H–扦ęʶîۉ_,„ -ľúÎ÷ţ ˛21Çčą!ŠÂ¦ó ŤJ§KćŃ*C&©Ü®÷ ćÖB5Q;ŢŞÍą°ű ŹËOíŮüŽĎë÷üľ˙(8HXhx¨¸ČŘčř)iPiy‰™©ąÉŮéů *:JZĘ9€šjşĘÚęú Ű0‰Šp[űHË»3Ŕ<Ü’ |사ł¬ÜÓ<­Ëh¬=m諢ýr˝âýM¬Rť|@~>.ÎĚĂŤâŽMn0ďo‚ţűĽŽ pż_č#qĐ^źzô*Ä“đBDtţś4q®\‡ţ8’đxdČvŇ ňŃ䞉X–YfĚŠ#Rz“i­ßE‹:\Nđ©ŇŤHśAąŤpÔŃŽ:Ůýkn)˝¦Ý¨şHúkQ*2Ąn}˘µAX ^”5KS)Z))ś…šV Á’_ń´…𶮏± ř⍫n§Úµl)F‘wAâ~ëÍłtńă«t« f!ŮĆż„kZ-öąWĺÉB “†ÓAj¸—ĺňôü ŃĚš[î9ú´—»hëΗóaÄĂ;ł6>łřËĐ+Vpţű¶éč] CĎi;…ośrg.Ý2nŃÔw»./Ĺ:xíë‰Ăć»kűéâç’GĎU8ţ)ę•˙śżŮHd (`vô˝FŮ}űA‘o BĐźJ¸\đ]Ř€RPpú ™2ˇS&ž *b¸b})‚¶C‰#âŚMČřây0˘Řbln Ćá{<*Âu6B•™G>çax;©ŁŹ?f\şŘäF.‰]7J‰ă“9Fé$‹RR‰&”eę7^s\j¸á›öąéźX˛ŮŁ™Čť©&{uJ”Ąśö)(p¤ˇ˘Lţ $ˇň™'¤’ŠIiĄtbpD˘™.Z(f"~9ăDg, –µ9ú(™Š]ÉTšwŞęg›lş­¦ľ©$¨#ŠZ†Šp«FŻÂšjaŤşş'ž˙c®ąM ťĆôĄ®†©¬ĄÄ:i«UęymśĂ 0â&3nąäžknşč®«n»ěľënĽđÎ+o˝ôŢko»·ä‹ożüţëoŔL/µÝţÇč¶Ůr›ěŞ Oi%%Î>‹ěĂ+`0ł±˘ęíqÇVěpÄ /űÎÄ/ĚńÉdĽ1Éîqü«ĆŠ qĘZš¬ňĚAH‹Ë/۲µ!,s—6}đÍDć\óÎL+}éŃ ýłÇSG:´ĹXk\ňŇOk+Ďčů\lĐT—}*Ň`ë 4ÚUă,A°#Š=Ő׍íŮnçm´Ú ×M3ČIęµÝV‡mřOpű˝7ßÄFÖqß.;>¸Äţ…'.9âgµřŐ\ż]mÖ‘7ťyč•{îĺ›Îŕę+w>˛é§“.:Ńv–>»ŕźµëµ?A÷oxŹľ;ĺfăŇxömüńÍŞľyđČűŽ1ě´ç®;čiŰ~űôoí|ę˝Sż|ëä«f}öÉs/´WRĄăŕvpBýüů¬K!ýdĂł/{ńüoß=ĎĹOkŕ;Áţ–?ďťď€ŚkžöU÷NoÄóýÄwľĐw DÝ-´>p€ß+ ďęG>Ţ4A_é`ě°gÂŃťE„!“Ú aˇôuŠ…\ť ŻÂĘ0lë!Qľ®ŤĎu<4bâ~¨>®Żh3, mx˙C j‘‰ĄY ×FÁ ‚î-UÄxFĹAĎnMt˘á Ă˙qOd<Ď™'ĹđŞ f@_ßĐƇŠVZ8@°äG@奎ż›ś?¨ÄYŐˇWśň] ÝřµAÖÁVóâ#ó¶H;vŇ4`…?Rď’÷óá˙6EOŢ.”®ąŁ#?©ÇWr‰•­ÄÁŘż$ҧAʲeĺ¸EŠl™k&3źéĚhBó™ű’¦5§yÍlbS\ż„eqÉ=bÖr”Yć “™8^öň‰şT^)c©0qĘĹÁ|g.×Ŕ9¨łÝD"<Ë9ťĹČł|Ç”eQN6Ţaź“č§;˙‰Ćźţ ôIôśăCĎÉč-”zť E=*ť‰î¨˘iŚâ=—h8†®3“í©9żůžŤ”śµg‡đy2•®ôi-b=!Ş"™˛‰¤/ç3šN=čÔ=­á-‘ů2ˇę‡¨6…Ş)qJ±Ąî4gM5cUę§$Y†Ş@ŤăQŻŞQĄş®«Ťü)L$V‹ő­µJź¦Ő­žŚ­ |*XÝWgĚŐ¨E+BSʇĽ*‚ݤ+)7C±ÖŞeÍ!Vw¸W^¶°Ž(dK–Ér¶łjĽkΫWŠ16µ„­ëL"ű ŃşÖł'=,^˙€ÚC¬– őé7é%šš´µ-ié~rË[®˙שťmo€« Ů>–´q[.z›Ü˝Z·­˝e®§éĎʆ—şHŮnt°›Ý‹íşx¤,y˝ůŢń÷nćý zŃ+ő‚WľŁťďpÝ ŕδĂ/~ˇ_ĐÂWŔÎ% {›;Ý›řY>đŚĹšľDşĐÚŻK‹zÖDQR ŞüZ…Ůy(BXÂ5kCÂa·<Ř­ţ­nŠ7ůą=ĆÂî&I5âCzřÉq†`«`ţX”śAŽ+Ź7Ö—µ ްZŚ< $gřżKNhV Ńc>@g›đŞ&™ĹefmŞůĚŇLó™ÝĽć8ł9_pŢćnwl0ëĂí­r–[ÜŞŔöůĹţ]FjNˇç<đŮŻ ^ –˝e`Ň8ĵ=-˘í¶hÓv0ŹćŚ mĺBÖŇ—ćé”Ó+^%S©Óg’*¨7Mi “şÔLËô¤ T@ĂÇŐšÖpĄ ýeD$ú¶î®WcŞk>‰4Ň’¶-F ¬aˡŘ%u1ŘXÝ™eşŃ–ť0®!í8Pĸľ¶=¦íWűZÖ^T¸ĂŤšSĎřÖ×Nv¶ŐmíPŰŐŮw­ĺ=dßĆéÜl(ľóMßÍέđvøżĘíßÜ©ď5—÷ÝîoSăß ×7¬Ëmś‰KŽ–Ě^p¬O®ńŤ«ě᩾(˛DŢH’oŰă ÷ö‘NĺP<É.ţďĚűŠęŹÓ|Ý(Ç8…ó/°<ľŞFÎĎ7ČČ’7˝ćüNą#’^ťťK˝çfzz/Ł>sˇ·ăǵĹʵv˘OĘëűÁ›ťqŁ ë9źÚßnňµŰŰŁeÜ:‘ź x9Ń=č:'»Ú‡~q߲ý&ŐÎ{Ä_gřň žđ»ş»Ĺ^şĹ ńp'·ÜżËIL> {ň“~ěT3őÜĄüÔ/vŞ7`T¤*ńÜu1z°śRĹ…2Ď˙Î-Íoţđ±'ľě@ű*8&آWď)› ‚ ď}ř÷nÝRúťú /úÂqŻZËÓ›ó+>÷_|Ř—Vs–łűŰŻ/řżţňŻţ?ý׼ôcމć·~ú;_}Ç7j‚‡ ąw#âgl­§;ý—zčg|hc6÷ x}ĺ‘~éĹ€ ČuŘ|ěl7gr8¨€ű€-G"§¦$čz=€Ťç€n¤‚+x,Ř‚ż6€ˇ7‚ťb‚x~Ô—@÷;Čśy§!CH~;(ÓçŤŐSřzXuß„…"…Ix*t„H¨~K¸…ĺŐ„“ń„XHk¨„q8†=¨Ţ4¬§Ý'jŃ• *4m…‰Ő‡~řzXdAiH‡©W†f¸— ÖŢ'€Úq‘mAńnđ3‰c'ţ¦wř0Ýa… 3[F†Ç ]5‰ť¸Qš(l áŠÝÖ…0㏠نYH[§v„¸ łyźř¸g[Ńc¨ŠÄ¨†fĂ®c¤‡n‹RÓŠ’X‹ź‰'†ŚQö!‚5±z\ĆaĎXŠy…óö=¤Ś¶ŽĎ•€šSćv”¸~â…‰XŽg¸‹E8Gł?…č2]€ŘEßU Y@Ő¨Ž‡çx‹ 醣%Ś)HPYą•ąކČŢAYŇ5‘Ós0ˇŽ^8áBíČŹćSŠ%“!1y†Ľ’XŚ7Ă98ą‡ąŽ.ř˙y… "E9’f‘’1"‹y‘˙Ř’˙¨"q@7©…4†j6 Ń•SťT•*‰•bŘ0^)‹±?tłTJą”ć<•h”Ćh–ăh3A©–~9“Ůâ•XÉĂ#=*E—uɇécń+,á‹|#Z€ą} éz36ZIxŽÉIx‘@ •Љ?‹ŮŚ#|!ŠţÁ’VYQ‰%™©™ËČ„$pšrhżÇpqŔCőŕŇ•L·=“Őš)K&s~Ă2mÄKˇéŹňŘw‘1ô[.™<Ĺ©›–IyĐ%›ąScVfö'ž÷W.uFžç9žéI/橞éRgÔ2 ‚ ˙‘i‡pćX醏}ęHÎy”M &™)PÂ0Wéšł)Ť&Âkü#ÝiźxW M„Őł4É9ăR‘IˇŠ…ôiE¶|˝3—vI˝©SŐP"*Y⡗G…?ů#Z&"ˇ Ó A9[†$ >*’BY‡¸ ˘ŤµYąźýZ>Ę–<š‚Čb˘á¤Ję6©Y™čHdV*ś’hN "‡9S€]0f\*•‡1”Ů©ĄFřŁjyg:‘ń¦FJz5Č6*šG꓊‚ĚP§łÉ…q§O4ą r9a8%#jťsĘ‹>ů§Évq* +4#ď ŻËŚJĺ°KŇťđ¦ŻĂW˛ áŻ;˛+S‰Ż@j±BŃwGç®ođ˛u9”9ÚDĄ˙®ú•(›Ťŕ–ł¶aLŐ±R¤Śh6ˇ4z˛YٰzµŠ#}§wu]j_$ µ76{î8łŔ—‘Uş I¡ ř©Đúy’|$VI»9°§*˛@»{“T˘żz‘,iŻi‹´ ·q«µĄ9{ĐçŔ ĐNo) Ak‘­¦ßjµäř¤|J°éo=Ď8yŕYěyM¦ëžő‚şčyşĄ+ž«‰íąžőG¬_P…–¤‘ş@ą5k71źĆzą°Ń J«;»ç¨Ç…h±Đ f꼚˝¬0Şp Ó˝×›˝Ň»˝€˝Ýß[˝ß[ 份曽öŁľëËľíëľď ż¨UŔG)ŕµCŔżBżő»řŰó›ż:Ŕż&Q·űŰţ«|Üż÷»l < ¨4˝Ŕ¶IÁĽWżâŔÁ ŔŚLżzŃÁtÂt żĽÁ|Â(|ż)Â-śÁ2Á0ŚÂ+śŔ8l"lÁ:ĚÁ6Â><<üŔ@żGŚÄI¬ÄKĚÄMěÄO ĹQ,ĹSLĹUlĹWŚĹY¬Ĺ[ĚĹ]ěĹxP;euler-1.61.0/docs/reference/sin2.gif0000644000175000001440000001126707417015637016025 0ustar ericusersGIF89aŹM‘˙˙˙dd!ů ,ŹM˙„Ź©ËíŁśmĐ‹łŢĽ/ë…âH–ć('8-đńńÎë­¨řÎ÷ţźşh‰YL€”iI!JçŚJ§ÔTÚ:µJ„‘X%]Ăä˛Y4Ž6a[0Űë~ź9éąýŽGÔČZňďÖ×5ł–'±w¨¸•xgCÉ8Yi)äx©y‘ąéů9Ń :jEjzš‚ŞZ±Úş*ęŞ K{7[Ëx‹‹Đëű ,Ią"ćţśŻDÝ·őęě;'|ÝůóQ‰—şď>řŘő˙ôgu›z¬ ·IíM đ%ČqĹé·ž€ątwŔ XXŘyĐ h™{ńPça‚ ňµ ‚acč…Gˇ'şhŢŠŮ V [QöžŚ–R‹ ‚Ąá„-ľ‘ŔíčŮ‘röLЍă’Y9ř ‹ANć#‘Fb'Ą„\j÷¤ŤNÚĺ†$RŮŁŹ)R`ŇšlfÉă•]îG#‚ŠŮ$’_F¨§|q^ćfžf¨ZĆ8¨—?2çcŢ©çCĄýéÁ–°ĘRˇŹňGi’sňąč™‚n ŕ›×IЍ‡Ş‰ĄSš–J᪌&Jg|Ť:J*¬‘ĘůišS¶řŞh˝–l˛Š ¦t˙u’É,¤·ęŞ­&vŞU±é):‡µTŘ%ÝÂ(-­ .;j®şšëi´łŞJA ¸[ˇŹˇÚ–¶JÇ­KČ–jv㆛áłçâ*§şČ6(ĽKĚ`éwxŕeďž«q»Ć†XJ®˛_Ë1‡CËk˛~˘›˝® [EÄQŰgČŕeü1şÂ\°ËQ"l:˙¸sĎ<˙ěsĐ@-tŃDmtŇH/­tÓL?ítŃăD uŐT_muÖXoÍ4Ë(cűňĆŢŮŮlĚéÚ,®Ż#łjÇÉ-“ˇ˛^‹Ś¶ŠcżÝqŢw›śÁxłKňjÚŠ7¸ĽER vÚ5J¬řަ’MłŚMxĄţ†ŽIۆĎ]wâ‹Ďűµ‚çŚî,“÷kyĺ‘Y«ë›#ľ_çdĂpąĄë"čţŢ<­ę}ąîđpúîůîźÓŽ»ăŹGnćéb#űOŦ8ýëÄÇÎ;rČ+ż<äɇéüş=E/ýÔgkýŻgáö÷†©W"”‡żľÚ8k>ÁĆ-7ův×ßľŤ‘{ď»ýţ6ľëĺUnÚ_úÖ@ă-Î}şó^÷ľ÷¸ŽPN}÷ŁSfţőOźŁ›„(8@V0HDôHMJ††; s:;ą/?ž›T źÇΕŚXp#â;hÂĆýo…Šă!NÓ™Š/uô  R˙Ä#önŠ*ś`¸ÜV6roERŚ !?,^Q5˘»¸ÄíőɵŰPxF$v'PTŁĽÜč©$†FŽ [˘CPé1—K™A¨Eű%r‰d”–KüĺĂIRŤ[”WŃÉ?úOڞ ň. ¶Ň´É…AĄ@> J)p„U¤ktĘ7ŽJ•x,^;É6YÚ‚Ťmt%ül‰K[Ť(vĽÔ$) M+NsÂ,ć -¨KŃn™µzË*H–v «!{`˛iš3_’€ĆŔů$ů­›‹ů&[9…‘łść„PÄÎgÍ„é« ń‚ç3•"ĎR Ş™Čôĺ V1&ţđł†ţ4‡:ĘɆ*2# eŞĐ.ň—i ˇaNÖ2¤UOĆč%ÇdŠ•á×n޵śâ´gSÓ©OwúS«ő¨D jQŹúS@ŢŽz©F›%S3:ź+Ý#J1eŇuó‚,5•S»jٍö’©Tͨ4Ć,˘5ĄJťŞH9Ş›;âF¬ÎÄ&ŕŞZĄĚµj­Z˝ć1ÁÚrÉ?DËL жJŻŠHëSµ˘ŘŤfÓ=Ër¬]“y–ĂŢł¦xÍ«,ëÇϲu«aô¨Y*;ÖxâCłR-ëH=‹Îä𵯝]Şdk‚ÚşňrÉÉÍĘHŠÎVH±­_ąjZ«Ô˙ ´Eč:|KS Döw?eau+én°”Xnk§ÓŰÍľU’ä-iWv^ăÖÖ­ŰeŠwSˉťiş iď"ZôÖ7$Úm©măB#ć6·Ďo{Ë\ávĹş×ĺ.8ú{Yö2ł~Óol»»÷¬űudzŐ»áB&—®p(ě_ §řˇ!†­«1ş+®±tﻋĂxÇC‚˛ŔţŰ$w8T>ňdëbe\hů]îN‘‘űĺ&xË·C2›Ű¬á×Z5Č!Ě1ĺ¬b#{Ëľń‹é\Z“Ô“ţ0ađěLŰçÍifS™ űç!÷ŮÇ‚ć°< ]ÇE˙äĚŢ3źăËäřúÍW4Ą -釱6Ńxv˛šm i@s9SJÖ´(&‰6¬$:FČŞ1 }Â_¤ć[¬W‚â?‘ÖĹ6¶k l%LTĆmÂôĚ<ŤŻv T µžŁăGź¶…µvubĹÉn[Ćçě1XÉ8c7Ă~Fv»?Í™d‹¤Üîfq«‡xiűŔ[”65*҆jpž"Uj ]Ăžp˘!üá§xÓ&^qNÇĐ!Öf¬cfgüŘn·uôÝ~ŹüŮ•6/¶ßýŘËhÎřη˝ďmëx ü%*ţź´©dp‹cž¬ţ1Ź}îIńÖŰ^Ý9Ezţj0w7úŃ'rŹç<„Yzł›âôĎ@]Ů,—w?+âŠ°Ź‘ŕ4î·Ű•‹vĆ5:đű·ýmôFÖŰęs‡lÖŻÝwŰ<ĄÁ5g–Ú©bwFźzńzz+Źs3˙=Ó['É/ÂtĂĎ‘đć&;gmé5Çâđ§%čߎt·\~í/÷"ßiĆă=Ą«}äeVĺ©Ó»ňÔá!ćżůř”ź˝ŮĎžôZ¨˝ôBy©;ŻÚÓ˛ľđyZ>çQźúĎ˙{Î$łÓ™ßüÉcp÷‚‡đĺŢzJž?w°'ŮeŹęÝ€ßĐ'ţ˛ř=†á™t&/á÷§_±tď§`ňe;7?ŕ|¸‡}ě×}ř—ʞ~ŕC|ăG÷G ¤“€ô·r §{4Ç{íˇ‚µB:Ř€ž÷dHu*˛Ľq‚ě¶n§×ŮçE.H‚ϧHX}-§}2#/Č*(y,Č€5G8I¸]<)íW‚h|ÔFY‡#28ŰgQ÷QWŘ„"÷„čWR¨A„ńwb·7·@„=°€bč…ł^Ĺ€·…Žb†N(umçr:W>n¨…‚×§„b4 PŘíĺueł‡rxnH؂Ղ‰8[wé7‡ÇäłĎţÔĄóZW…X€€X>˘#€ŔmăÄmÓ_›ČUBŠ(‚hV‹¸2Š€w| mq°kŹG‰ŐB††8<•kúňN˛&ŠĂh‡·hąxm»řŚ+ŚďbÁř \VŚÂXŚoč¸ÝćĆř„ŽP¤x‡Ď’Ž·BŤač…(fŽ…Ž—H’¨Ž‡hAňÓŽŐŘ…vőŹ€÷Ž?Ř‹Égq§D…q:35 ą™)‘ITq¸Ź‰M{0đČ‹Ćó{YŽć‰~Řx4QŹMEř‰iŤî'Y+yNź(äŔ‹i‹ÖH§Ř!I]ďy}‘‚Ě F“˙zvW ?#ŮŤhxh‰_{”B)Źl(‹±g2Ń”Nů•=9}8I’öĄŹ€ây)=) ,Źg F¸b®–©öm!N©•%ą“ną—Ţč—·–•dů””—”Š÷—9ą•0©“\č–)yw9c})—‘ů’÷–gH”먙}H™ř™)™“é•)šő—V‡ąŠě@‰©Y)88š1zhš«ů’S¸›0” me˛™vÁy•oi’ńĂ”Ö×a™ šîw›óĆ–9pśůś'Ć‘Ő)dWś7ÂżIŇh“üh™TY–ĺŮdŃsٱo&žĚĄťÄDś˙(’ń›áśYdy™™Ľ©–ćůüžĄ)W7ž§š©j˘•TřW˘€b‡) vyš‰ uđIť.É—śźĂ5źú•e •˘–X_šy0©ź±(‡#ęhŞ9'9e2J›č6n˘'şŠś)†şŔoÉĆ‘¦Ř$Zu› äąťŽW¤j©G“ťŘźŚyž=Şoţč 0Ú™ †¤´WŁ‘¶ˇ™x#ţ  QZˇJĘ@ú<¬I¦-)˘.š˘…|07_Mú¦Ăšu‹lřśdÚ˘f´Ü¦NZEY\^ $ůe–ɉˇ¸™®f˘ĚȇŠ@)DĄ*µ“ú¨Kt˙Ť… ł ]”:^ź©ÚŁŠ)Gt„°0]e%VH\Śu $¤LŞŻ&ŞŇąĄĄú)¤g¤ľ=k"BIJ}ŐĄ?ťPß‚©¸Y¨ş]ąşžčYŰ„J‘™¬Ę(¨ňiQZ734« OcÁ¦{׬ž§¦Sz¦ňÄMkŘ!®[*©ńZ•BŔę®äś>Ş$ýw®ňş©9ŮQ×n€T=ôz‰éd>{ŕFŞĘ¤üşm*­O)X0eWD’4I‘»k‘«± 5 ˛ G4śă«Ugr+ş§{{‚Ą«Şčq˘2Âs°±D/1‹&§Aâ™\W§đÚŤą­3ă5šŞ‰˙?ű“śjł¤ MDn⦞C{Şó^/+–nš`ÖŐG,É@ł„Çrś3µhz©,űŤfް"+F+µ¸:pĂ`±*Úé[Ź6®ţ—8fi›ŻËÚ;Öƶ@zYŐp(ńŮš© gşŠ»˛f»[Z¸˝&§ K0f±„©©zš›S۸‚›­|kŻ×ഞ旓›·sž w¨xK‚ś‹d}:şźYşŠ:š®: «{«Lňk˝Ëş˝É‡™Vm®éąz§žJ¸łyČ»UjŹxðV›‘FI ´Ű®¤;Lš»źz Ď[®t×+Ó۶›ˇ˙J&Ř[p©­6›á˘˙ß[›·o›‡®1i:H»ľÚk°îűľĆËĄňËľÁ«~&dż°KŔ¤â7ęK°işŹËnőň†ŕ ŔxBtŐ Áe;ŤQÂŔČi»ćĐÁťZľw@ÁŰÄÁ6ʸť  żÇ»¨ Â<¸(|%lI‰˛®n[˝,b!|Łü‹UÔ;§#Ś6<+Ü©›Â[†¶ ˝üš ·÷żĚ:Ľb1ż¤Ş«Ăč…=¤ż ,ĹSLĂë´ ÄćË•ĺÇĹe ş°b~Cę”ěaG+™9Ś F ¨Ş7pűĆĄr·;¬ÂµK tŞŻRéÄ­ Ç˝„ri)Ä^ĚÄŐµ˙™ŔČë‹®X°˙‡\łŽZ ěÔšLÄÎvĄĆĽŞiY>lť—\ŰŚ·¸ď;Éč m픍§\Ť@ŠhŹLÉWŁPěÂ Ž ¬ÚXĐZĹ©ĚŮ•Ĺ,ę‰k›čÉĘXK¤âŔ®Ëżˇű`y1‘"űSŕL˛;˛)Î:uÎ7%Îéě±g‘tĽ˝V¬Í X9ĆI,¸tŮ‘Ł,Ďj,xˇ˛ľÜĘ…ěkç;ĎäęÎöÇ Ü` ŘŔĐÂŕĐŐ`śÓđ ýĐ}ŃĂ`ŃÍŃ=Ń  "}ŃŤŇ)­Ň+ÍŇ-íŇ/ýĘj<É(2}Ż6 ®4]Ó8ŔÓ;­ÓĹń‹7˝ŹAí®3 Ë%`Ô,pK˝C˝ßâÔĺSlMŐ ¬VYMÔ+ŕŐ,đÓŕ*aýÔIťÓMÍŐ]ŤÖ÷ęÓcÍÔk}Ť2†Ó5 ×b­ÖríwýÔ|Ý×`í×P×0MŘ…m؇ŤŘ‰­Ř‹ÍŘŤíŘŹ Ů‘-Ů“MŮ•mŮ—ŤŮ™­Ů›ÍŮťíŮź ÚˇťŘ;euler-1.61.0/docs/reference/linearalgebra.html0000644000175000001440000001634507417015637020143 0ustar ericusers Linear Algebra

Linear Algebra

This covers

Solving linear Systems

There are lots of built-in functions to perform linear algebra. The matrix product has already been discussed. The operation

    >A\b

takes a NxN matrix A and a Nx1 vector b and returns the vector x such that Ax=b. If in

    >A\B

B is a NxM matrix, then the systems A\B[,i] are solved simultanuously. An error is issued if the determinant of A turns out to be too small relative to the internal epsilon.

There is also a more precise version, which uses a residual iteration. This usually yields very good results. It is of course slower

    >xlgs(A,b)

You may add an additional maximal number of iterations.

    >inv(A)

computes the invers matrix of A. This is a utility function defined as

    >A\id(cols(A))

There are also more primitive functions, like

    >lu(A)

for NxM matrices A. Probably, this function is only useful for mathematic insiders. However, we need to explain it here in detail. The function returns multiple values (see Multiple Assignments) You can assign its return values to variables with

    >{Res,ri,ci,det}=lu(A)

If you use only

    >Res=lu(A)

all other output is lost. To explain the output of lu, lets start with Res. Res is a NxM matrix containing the LU-decomposition of A; i.e., L.U=A with a lower triangle matrix L and an upper triangle matrix U. L has ones in the diagonal, which are omitted so that L and U can be stored in Res. det is of course the determinant of A. ri contains the indices of the rows of Res, since during the algorithm the rows may have been swept. ci is not important, if A is nonsingular. If A is singular, however, Res contains the result of the Gauss algorithm, and ci contains 1 and 0 such that the columns with 1 form a basis for the columns of A.

To make an example

    >A=random(3,3);
    >{LU,r,c,d}=lu(A);
    >LU1=LU[r];
    >L=band(LU1,-2,-1)+id(3); R=band(LU1,0,2);
    >B=L.R,

will yield the matrix A[r]. To get A, one must compute the inverse permutation r1

    >{rs,r1}=sort(r); B[r1]

will be A.

Once we have an LU-decomposition of A, we can use it to quickly solve linear systems A.x=b. This is equivalent to A[r].x=b[r], and LU[r] is a decomposition of A[r], thus x can be computed with

    >{LU,r}=lu(A);
    >lusolve(LU[r],b[r])

There is also a more exact version

    >xlusolve(A,b)

wich can be used if A is in LU form. E.g., it works for upper triangular matrices A. E.g.,

    >A=random(10,10); A=band(A,0,10);
    >xlusolve(A,b)

This function may be used for exact evaluation of arithmetic expressions.

lu is used by several functions in UTIL. E.g.,

    >kernel(A)

is a basis of the kernel of A; i.e., the vectors x with Ax=0.

    >image(A)

is a basis of the vectors Ax. You may add an additional value parameter eps=... to kernal and image, which replaces the internal epsilon in these functions. These function normalize the matrix with

    >norm(A)

which returns the maximal row sum of abs(A).

There is an implementation of the singular value decomposition. The basic function is

    >{U,w,V}=svd(A)

As you see, it returns three values. A must be an mxn real matrix, and U will be an mxn matrix, w a 1xn vector and V an nxn matrix. The columns of U and V are orthogonal. We have A=U.W.V', where W the a nxn diagonal matrix, having w in its diagonal, i.e.

    >A=U.diag(size(V),0,w).V'

This decomposition can be used in many circumstances. The file SVD.E (loaded at system start) contains the applications svdkernel and svdimage, which compute orthogonal basis of the kernel and image of A. Moreover, svddet computes the determinant of A, and svdcondition a condition number.

    >fit(A,b)
    >svdsolve(A,b)

finds a solution of A.x=b for singular matrices A (even non-rectangular) by minimizing the norm of A.x-b. The function svdsolve is more stable and should be preferred. By the way, U, w and V can be used to compute solutions of A.x=b with

    >x=V.diag(size(V),0,1/w).U'

if w contains no zeros. This is a similar procedure as with the lu function above. By the way,

>svdsolve(A,id(cols(A));

will compute the so called pseudo-inverse of A. There is also svddet, which might be more stable than det.

Eigenvalues

The primitive function for computing eigenvalues is

    >charpoly(A)

which computes the characteristic polynomial of A. It is used by

    >eigenvalues(A)

to compute the eigenvalues of A. Then

    >eigenspace(A,l)

computes a basis of the eigenspace of l. This function uses kernel, and will fail, when the eigenvalue are not exact enough.

    >{l,x}=xeigenvalue(A,l)

will improve the eigenvalue l, which must be a simple eigenvalue. It returns the improved value l and an eigenvector. You can provide an extra parameter, which must be an approximation of the eigenvector.

    >{l,X}=eigen(A)

returns the eigenvalues of A in l and the eigenvectors in X. There is an improved but slower version eigen1, which will succeed more often then eigen. There is also the svdeigen routine, which uses singular value decomposition to determine the kernel.

    >jacobi(a)

will use Jacobi's method to compute the eigenvalues of a symmetric real nxn matrix a.

A special feature is the generation of Toeplitz matrices with toeplitz. The parameter of this function is a 1x2n-1 vector r and the output a matrix R with R(i,j)=r(n-i+j), i.e. the last row of R agrees with the first n elements of r, and all columns above are shifted one to the left from bottom up. You can solve a linear system with a toeplitz matrix, using

    >toeplitzsolve(r,b)

where b is a nxq vector. The result satisfies toeplitz(r).x=b.

The Internal Epsilon

    >epsilon()

is an internal epsilon, used by many functions and the operator ~= which compares two values and returns 1 if the absolute difference is smaller than epsilon. This epsilon can be changed with the statement

    >setepsilon(value)
euler-1.61.0/docs/reference/compl0.gif0000644000175000001440000001053607417015637016342 0ustar ericusersGIF89aru‘˙˙˙dd!ů ,ru˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§Ôj'€Íj·Ü®÷ ‹Çä˛y;H«×ě¶űÍ>ËçôşýŽĎf‡AČč!8¸Ghř禸ŃčřWÁ‡Aiő˘ö“yądiaůČ(ůz±ŮđöPj:Z:á9É)ŇFµVë3Kú <±©ĐjQlĚ8|L±ĚÁ+«›Ü|™K=#-áűÜaq<ĚęÍŽ-Z®NJ[™-1o,?O˛Ý÷ű]^żÎZź4ÎA0čaBwđe#hŹÄ >čÖ ?ţţeü(ĐĐDUűPĚ÷n^GŠ%V˛DŮPźĆŤć*$yŇ\It‰fzĚyqŹ®‘/e-4%€› ö,xÔ)1ź?C2(5AV™@XôZĺ(RbÇřÚŁŐ Í\.ÝÉn\R[ Ô}K5Z{‡Ü5›˘ěËľ Ôňó)xj^ari~LüŻëÜiJ•@ ä25Âzą®u¬áß»ŁWú°dľB‘hĆ\äuÎ ë|ć´ôjW‹#«GÚtáÖDdĂNbü í¶MJŽswAáÓĄ{Ž®úó‚ĺg…@?Îä{îš„Ľw8ęά‡Ć~Ű=sâ=ţ‚?"žyó“Ů˙ J/ßzę ¨+X`g•‘eß}á5XĂ~×Ĺwš]t!9Â7‚ŮÁô‰:řÄ1 %€ĂYaYRcŚÎÉč߆&Š Ö‰đôĂ^:Ö6áŚ. ŇŘ“4Éb’B®8‰>Zae (¦¸Łn*é$o ¶—ä‘ÁäĆŢ| şĺ•×(!a”gcSu>5¦o‰ç%7ô±Ą›fÚy˝uh˘.ŞhŁŚ>ęh¤N©M”^š¨Ą’nŠi§ś~ęi¨źj**¤¤‚Šj©©:' ‚ľJf­öY¤žaVxŢ­Őĺi+žf.‰c+´ +EÄr0ë>˙h–ů«‘Îć m´Ä“fwkJTl¶bňl,Y˝řljŔJ»í¸7ÖÚ$­¶¤m»ĺâĐm;uK.®őÚ+®®ŠíËky*ânŔřĘoż_Üě˝»"|nşŚiU­ż×š+pĹHŢP0z'¬đĂĚ^Lń» ÓŞîż![ڞŻ· $wěńÉ Ë3Íľ ÖħĚ3Ç…˛L!Îů†+2Ě˝ f2ŻKtĎNŰą˛RL5"tŃ;ŤôÁ6]Ł”&ütŘPżq¬čbŤvÚ`Ż=sÓl36/CÂf-vŘÇî8·h «Ý¶Űfë[łßłó­Ü†ż]wâgßtß‹#ž´ŕ\_Í÷ŕţtĂ·,e1U®xçÜ]6Čc3<úÖZ›~şä“‹|Ó9Lîy좗úŢr˘>»ę©ëľ;ĺV[­w/_ű,{ńü2.őęźośű奮ĽăľKŹ—ĺi o»ńÚß.BíGO=ä‘OľřÄ˙ľ6ťÂë¬ňöî·ď÷Ź/ç÷?Ďűůĺď;üÇ—Ěľ˙˝o€ö«Hă˛W@Ü!Đzč3źţŘ@ŇďD ŕüř>űČĎ Us`ó8×?ň…„ăĂ_¸9 b0!đ^đîç?öN„#ôŕÁw úÉ‚w[ˇ»îR;…t5$"‹(A#Îđ®Ă^ő|EÎ-o1TáK(˙C+b1‚HLbŰ×Äö0Š?ĽÂ/(Ĺ,~PŤ7Ľâ•¸D>‘{Á:śÉÇ;¦Šz„Ł˙Č6ľŃŹ‚Ś#!ŻĆ=ć0ŹytJĆ2Gş*ĘQ€ÎKă$)ÉF&rŠ}d¤'oR0© Ń‹_$)ÝČB®Ńc›´ă=Y1…Ä«pőë$ MYJ\ęr—©śJ+×·HX~R‘ŔtY$%yJ^®ň’Áäb.{9-;îЖ¦4abLŞr›ÜDf2 ůMh6Ó™ÖRä+«i±_jîPÇÄ$9•ŮMo>s™‡”g<ŔÁ´s˘3–Ŕ¤bÜj‰FTŇ3śhAáIk¬Kźűäç4óFŻ[ţ‚“ –d&5-Љ>¬ m¨G/ަŽ’˘öDhI5jĐŠÖÓťbZ†ü> K—žQ›*ťçAQjғާⴟL“Ӡ㥥ŁDyşÓž‚”¤:Ť'ż†Ú†U`PM ˇ2ŠT§ŽsĄ,-ęHSZşbÄIŞS XŁúU°v•«KeęZmŞU¬6«c-ëTé*v°©5…+_űŞÖ­˛U®ą+…„ČjWł^ďzm§`ýú×·BV˛9ĄlVĎŠĂ&¶¬™ÍëˇWٶNV´}liI{Yv–±›˝+k*‘Í˝ZV©„lhQK[ŁfRŠŹŘb[[F*}"¶ŽĹmRŹkŰÔF˙Ö´§Ő-Úz»‡ßW[Đ…­sß©\ćŢöşEýl%—kÜ56·Óu-Ţ&A\š‚·¶ÉEn{Ý;ŰÜVmĽŃ-ŻP…‹^î–˝ń…Żvłű_˙8®‹Cyí SO&­ŰőîwL`ýŽ6Ľďµť‚w‹ŕÂPüío„ś[UŔ^ďă6<â ŻP–đ„;\b‹Ă–ńŚ»» §XĹÔ1h@,_ćEřĆ^r…UęcěňIţ IěâćyżQpŚ!ŚävwÉťkň®žüa#ŰĚcčüĽěV.-žršŻ ç8WŮĘ0®łťÝÜE6ďXÍŰÓóŹĹ,c2׸Ěţ˛Ĺň ßęg%ó™…môˇĺżÖçß|ô„f‡2€ľQ~â`sŞ—(jx0 (gÚ§n¨eŃ'ÇAŤ—|Ŕwž§€Ř— !Řn*ř8‚ćG‚ü’~,\ě·ţ÷~(H?x‚,ua !]8X"çŐ é„2zü}haH( Eh„á_IČ€8u0č{PFôe]UNW8…YŘ„[8K¸}Ť†D(†%…Ü „%¸hč„ŢGrQ]nř†ŠE†rh†v(5k¨{"T؇±±žĹ…=rŹŘ„¸Z1ˇ‹čŻe‰żG~ZH]ţČy•X,†ĺiH‡X‡Š¨Šë`ŠVEŠ‚‚WV%‰Ox‡Ţ×€ý3›s‰±("u´>W@Šś¨†u g‹ľh€(ÄG<8‰ÄŠąU%RĚÎȵ‡^(yÇŘŠŹ"ŰŤ 8ŽĹ´Š…ŚŇ¨Žá ?µG˝XŽ0ŔQ,㍑č‰ěЦWŹ•!ŹóŘ 4˙4źÇŤxŹ# ňŹýDŽىgř‰Č„t‘Ůię4MŤUŚ iĐh‹$‡ç¸‘i ś„ŽUGŤi’ůmyŽb§’>€ł¤Ź9’ŤÇ’Ú‘6y“; Kg$J˙ůŽ)ey4)”`W”9JH ŽNYW)’ë¸-P Ś 6•<˛Ź’·Ř”/i3â•»H|aRQ6SŁ”ÓŽűITsMQyrnÉ&fT†–KY—<É•°ł–‹%z|é*~yŤMti–˘€ˇpšŠ‰uáB„éŽi™~‡•#T™ŤšŮ‘-4S˙ő¬Č”’©Ô2”µ‚¦ą’¨ů—¶µšíŘš Ůq9–—_ą€´Y›¶Ů•›g·›Ű¶mń›lYšÂYŚTśuśś™śĚGęŁ9,bĐé{M8TťEö™ĘąÔś‰‡Ţąžŕ‰BÚůn1y–˙sÉšŞ4šî9›ě™źřą‹đśˇé™ňéš@!w5)›í©ź7śáI=ăIeןɨ;Ż  J” úžŔCźş9?éI›ZˇŢůJDu#Š‹Z’°Đ2éi™í¨źúd˘‚˘ˇ˙IwGˇßišR5ŁłˇČ©˘Ý‘˛Ł‘’҇X?z3AjťC*“·Á`GĘŠS)]LJ5ZvP:ź1ĄNŁI…Xʛ剝©Mxi¤`ZĄĺx‰[B%Ą!‘Zi¦=×"8ę˘G}ěbˇRůŰp §üá-* eЦ Ő _IŞiÂ8[‚p„Z.D§‡zxěá›˙kjAنIJ¦ S e©©Î'§¶4lşn©{:Oçtł:*˛Ę§B«ąj«N‡«G׫˝Ş«łJĄ§©’’ŞŁşJƱ•ť™©$XŞĘŞ|ŠŤŻĘźY[š¨¦*{ ZĂŞÔŠNŕZ­šn۬ڬĽ(ŚJLFń†âú˘-É,Ąp®őę¤äé5ź,h¬ÚšuЧŮJĚ ­úŠ J Ż"šˇőCözŞvš/»ť.ú– [7ý$˙Şn±˘;ů¤řB±Z±89sk±qęps*+mćú™ŢJ•(Ű.»  Ł˙Ń#Z: s˘Ş‡*łőAł$bł˛‚ł˙v`<‹¨Vń#˰ęÓU´úq´ś9cĘzŻ4ÜZĄ÷y’ř1µ¶F€¬z0K°9KËĘ®ÜéŰgC{e;° €.»\˙‘µÉ´Âdr«%Uëˇí—•ÚzjZ¸HÓ·o ¸A°B·ßX i‹´MˇJ«E‹+pk|ŤëŻ· ˛#łłx+@śk‚†ű´Îůlŕ&Ź›2‘{sůĆąN[ëş·ą¤ąö`şa±»»w[&A»Â0Ă«¶!Ş—x QŕşĆó»§ËšW5JÍ‹Ź”űNą«ĽÔ{§EĎǬKjÜ+¤Ö+>ŘűC‡Đ»KqeµYpk˙yżň;żôżöKż ľn ÷+żţ‹Ŕů+ŔwPŔaЧ ¬Ŕ l1úoŕŔ§§ÁPÁ<Á`rśÁ °Á‡Á đÁŤšÁ¬Á#\& *,Â(lÜÂ% Ă q śÂ+üŔ7<Á5Ś3ܨ|Ă|%ÜĂBěĂpÄH,Â,ÄCśĂ#ŔĂ‚ŠĂ<ĹçÂKLÄÄ@ĽÄTüŔ[,Ĺ˙vĹ\üÄ4Ě Ć/üĹNĚÁP\Ĺ<ĆFĽĆĹjśĆ6¬2ĚÄb|ÇDÜÇrÜĂwlĹśĆWĚÂ- Č!ÁÇ|Ć+ÜČV<$“É\É1üȇěČ6j,¨…ĽÁ”ěÉ“ÜÉ‚ü—LȢ\Ę`ĽČpśÂź<Ę Ë±,ËłL˵lË·ŚËą¬Ë»ĚËKP;euler-1.61.0/docs/reference/compl1.gif0000644000175000001440000000755107417015637016346 0ustar ericusersGIF89ax{˘˙˙˙Îdd!ů ,x{ţşÜţ0ĘI«˝8ëÍ»˙`(Ždiž(5…ˇą%5˘$ ‚Óጧ”¸ÉŠ’á¨ Ź´UiÖčV7Ç™W|ńčHcŚ2y¤‹DB[ç()!“ç8ه”]&j]ľČÉřŕŁ'ʸť™•h‰Úš»Čiăĺ™xçhôŔÇ•´x‰†ťţąÖˇÚç‡W†&‘s KJ D•˘(š[Ú˛–Ţ€i¦&ĐyŠoşIĘʧŻĹ Ž©úŚ:e-¬úD‰¬’)–®dŇş"DMÂkšf0lr.ţŞŢž)ŔŠŠ7ÇvúŠ <ë,DŃ’*Ômizăm·ŕ~+n¸äŽk.¸őť«îeę–ën»đľ+oĽôÎko˝řş+Xľëň{ďżţĚT•{X[¬ŮŢ8©˛PĚõ¦”p‡Ó2¬šĂŹ0q®$ZÜC´ÎB\ EÔ1ÁRd+rS%« µ'€ěÄĘŁ´Ôrš/{¬µ4‹Ég*0“€ńĚösŽ:ÖhĆ;´¬*%A#Ě,ŃlYpsĎyfý„ĚLĚš)QŔuX{2•Ó`'mÂŘ]3wt(aw04ŮEk€ö(qS†dŰ żÍIŢĆîŤFŮťĚu·'€c07ß[ű µÚR/ťáś˙4V2噡|©ŕڧě¸$‰WŔöŕu{px%ˇO0zçž ŘIę,NzŐ \ţ7ä¦OÍú ź÷ű«O^zí˝ďń»˛ďλšŹkłîk`^‰v§űq<É+ż¬ë ăn7ç|HOIzŐóq˝Ůkż=÷Ö{¸ä}?É|ĺŻq~úꯏeűÎk ~üĂ+AýĐp=üĺO ¶óťű¬˝đP€ĹSÇE×Ŕňa€Q8ž…G;`P‚ý#^-xÁŞe‚±áä' %P żŰ hÂŔN†ÜĘÎCB‡3Ô_…zÂÜÁŻ…LÁmčCŕ1·âáRÄŮé°iţ5ĚźĹ(˛/M<#ÁB2zMŠ ÔZäXÔE=ˇń [dŁŮ’¨´/Â1Ś VŰÂ7ž°zKÔ;X-?ú tzäŁ(–D rWt›‰Gô=R‘nÜź)GH¦q“äAâ‰ÉQlLdŁĽdáčĹPę •ť,e&‡¸ÉJňjŹň`e+5ÉD@ľ/H˛$Ĺ {©F±©˛rşÜˇ!iKá2}äĺ`9«P<ÓµYć ¨ą$h S›(ŕfŻDqÍžaŻl&0˝iĘ,ú2skś)Ę˝ĺI“™ďĽ€¬čÉN'ş2śęěfÍ’YHp–@śČęg;˙i„Jk•„ţĚ&CĐq*t– eEs9O‚t˘xŚĘ>/şPćł#BűNG#*Ń{ô¤(I1šQ-nôˇŤä9ÝyŹJSüś©MĘź5b=ŁKjT™ µŚ,*LcĘŃ•ęÔž´ÜfS-úT¨´˘‚겞sčý)W­™TĄ.5¤k›k[˝HÔ°ĆU®l%g]íZÓܰŞ{=Ó[{:U–®,Ýi_ýńWŔj+±;Z¬_ëŘË 6˛­»+gëáAśböI“EHe-˱‘ –°˙#={ZľfU­«e­Ë¬úɦ6,kmÝú[xJU‰C˙*hC+Z¸ŽVź52+fÓŠ×:îv Ëena™ú\Ĺ™l¸Š-®ÎgÉë~öŞ4/J»ë]ś×UęĄyóč^Ţ*D~ÔeoC )ÝÄ欔­Vż‹^!ĆVżÁ‚í{¤YŐ"Xq7Ł[v[ÚÜ͸YśZ°$ă+JA"T˝Š0Ő ŚŐŰĘöWrP«*b C°ÁŃŔ ü0ěµx/ŻU° -¬Ć6v±o+ŕ KĹ>X†ź0`&3Ă*É-mŃwc!sŕżÎ˝°Xb·d “¸Ä>.óFćyť¦ĚhšÓĚć5»ąÍp¶WşŢŚvŃů\óm-đşŚă Sx»'~p,ţm\e+˙ŇÄŐőr7ŃäŃ‚^q`ůlč”B™´‚^'•!űeí:Ń}ţiˇ+ČKŰDĘÂŐmN{űhHk¸IV5©=ć,‹Yµ˘ď뇨n ĎôťuÁ`ăW °ŃŤn~‰m\['ŮBŲł»CdçřŁ®6vł‘[_ayÇ<žvĚ4dm?’ČEľuiÍëí?×ZÜé^7»=Éë/1{Ľ¨Žn»Ó‹î_KR§€vÄçkgڟ޷»ßMmu[ZĎŘítßî˝^m_yĘ ßp¶-^ńĽ¦ÚµćV Ĺ;o~<ăç޸Ăăí?Ó2úÚ›ą|+k'÷SÚ+7¸Ç1ţŽĚëř=xy]ŽrQÉ|ćB—uÂĎËj~«<ç~8Ń‹.ď§—<ę-,˝ ‚VžęęG,Ő•ię( }¬Ę•¸ČËnvŽwVëcçvżĂÝđäj×ř§ąëvŞÂ=î;ź;ËénL˝®şŢ7؋ϩŢîG'yÝ ořžç}—‚ĽćĂ^ůÇ7~ď|_|{;?=Wôˇżú÷Şéy©[˝ďvýßKďsëf~óX79é[ĎůŰ]ő‡űÖ'’ř1¦~ňFt*ď!Ďv’ÜÔńf¬˝Ü}˙{äËMÓËg>ő«Ořëł~řűŔÎ űh*?űĄŢ~î­ßűÝG˙ňFo>ŇËżţ©AŁ?ý¨)ýhË7ý:‘k™†+6×Fătű‡pß÷rŇ÷bň7˘§O@w~—†ő|ł‡D ({Ї€řvçGŞ€ë×}íç~~P€¸6qęg‚%č}ý'‚őׂ.(€Y·€ăczşgZup·$ Čpč8?:|ݧ„(x‡[DX„ď÷d—„J|Á‚@¨tĆ—NQź×C€ü'…ř„WČ~0}´'†;Č6uv]č„$Ȇ6xnh„x‚B8‡f¨€{(K(uXO}¸zČ}¸×†h‡Ťč”„‘‚G“ř‚•h‰8ţČ{jOx†h¨pr¨QIDžŠ^gXč‡M(*#а‡ž¨…€‡‹˘xYČ‹jP‹8ŕ!ľř‹±(‹­Ř‹wH~Ŕ8zĄxV™8›¨‹Űć€`rÇ‹5¨}ŮhET荩xG«=dXiŰČŤŹ(Ž—ާ‡FĎŚÂ(l騎ť8†ł¨lÓhŽÍ…ŁXź8kW3 y<îČuúxŽäYŹ.VÍ〴؏÷¨ŠY‘ 9]ŻFĺHŠßčh兀#i<¨6T‰X[ILó¸‹űh‹GŘ’.™Ś“Ńö‘S”’ČŹ2هů:<Ů“+ůTA)”˙!i~'ą‚ č4ŇlDY” E“ ů’ě8ˇŽÔHR•Q)•Át”˘ŕ•ČSEĄRWb9–C©” Mi©–IÉ„ňäd~ö–pid R|89Cvy—FÖ*ząŚĹL}é—,yČG…iôŃ‘Őč $ó5«ň+ÖjXDŤ‰7k)—{9ŽTˇ’“)Ź6Y-fŮ9Ną0_gq6g®yg˛›´9›lfgµą›˙B–ščL]DiÝć ľ ]’ŤHÁŠ`éÝ(YČÉ4Fڶ—W9—ڱ+¬!ťÓą‘Ó·”†Ň™żđ™0)ĄY$Ă %·PśWFJm#śç©â‡˙Öi™±’\ݞń)ꎩŕɚ܉yí¸ś· %˘ť’ל˝Ćžx!śŠoÔŢIžć!ˇçůy“\âîŮ ×¸Ž·˘GuÁˇV3*9ń4ľň ;Ł »ťů&쪮ž’®o¨•úP®ňžńpýŘŁűšŻ˛€Ż xŠx‚©Ű˘˙Šwöz¨ôz°Ą °őZ’wš°{2˛ îzśJ±«Żű + ľ±Ëś^:š;˛ [˛Ł Řđ˛0łĂ@2[ł6K 4{ł:»łËŔ˛>űł@´M űpd8Bëf I{´Ź©KË´ID µ10µô`´T›µZ»µ\۵^űµ`¶b;¶d[¶f{¶h ;euler-1.61.0/docs/reference/compl2.gif0000644000175000001440000002326607417015637016350 0ustar ericusersGIF89a]Y‘˙˙˙Şd!ů ,]Y˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§ÔŞőŠÍj·Ü®÷›Çä˛ůŚN«×ě¶ű ćôş}Ďë÷üľ-"6sgÇ0pX878#⸂Č#9rg@ů iI˘™óyů1Ę(b¸Ú ššXgZRÚ!{ÂJc›ů ›Ŕ{ŕ €Š CěA» ;ˇkLüLÁI·¬ˇÖbŚÍ<ÝÍü Ž »ë“ÍaŤN}É˝N.í0ľŢ nqbéúľé?ŕŞE öńc‘ŹBB/Óś <ĎŰ7‚ő,”p‘Áţ”(^zŘ*b&‰#ÜȱEF+«´˛`L3iöB9ĄĄťĂvĽ”YóŁHx%‡ô'ľ@¦B *”č?ŁS7)e“AV W=xÄ%ŻhŐ±dş3™T%S†NËžkR‘0›RÍnëjd«˝$‹u¤®«BĹÉüôm0´„Ô>Ú‚4[XĂÜ€Yf÷3j]˛m«đµ¨ÍEçżnźÎýEUqÜ“©.N…·BěźÔöiËá.z‰K»ů÷fĂXn0îű”/NĂ5k]XµŮÓšMçb1›ĺÚ(ťŁOĄţşąđŢnźCuNĹ8r»%$W‡Ý0yéŢçŤ/Ô=ŠěÔ˙CY¤ß)ăvHv°d4L6ů•Féd?3Éĺcf±ĄU:î(ź\ÔĄ &L Â9ÄŚ)i@&XŇXřăaăą™$›Ä±“ÜMI űP¨ÉšuňĄ—8 ł@–H„ťűe0 WGÉDç}Áuůbnŕ© l/v҇öXŮkžg—¨đRiˇůę ‘ÚE¦ šÖ2k˙ÄÇ\I˙Ľ‘Š*”’—,ŽŞf$ťá¨B<ŔńPW,Ďnäh.÷ÝÄtďkᲚ(%ç2d4Á 7P=ßĺŃQZ3\O”G(vip eö2) í D©cX´DůČ”BNÍÖD­HÜ^ OaČŤ Ę‚e—öC;öŻ‘D $×uD`:ˇDYˇŞhŐŁO6{ dŹÂ95EÂŽšB Ű%gX‡O™y^”¸ąÍ@1RžÍŚdX UbAnħÄRËÎňťďß+Q8*ńç´ŢĚÚ©»ŇţĚ“™‹ěaŹé]o"č|č5~‰Ąő3ť|Şd í7ťŢýČŚ&çIósKV&‘$h¨G]SJ%y•ü4<ćÓŤTpYÎPk%¶hR:ä¬`Iő—V¦ôŚČ¬ŞJw >ţYłžM­ĄRKř?¶FŞ4%ŕ3±¶ËJoŹ(]?鏑úň«ś2á*˝úě)—rUž~»W¶łĄ‚őŞg·PŚčó†âËf5žč}łŞeM+f@6Ôť’E7ëĄbAŠEňµttäLW/hŮżRvv}-çiY…Ă…ÝU}ÇmGĂ)ÂÖŞ0a]mÎ|»:˛ň(–µžpç MďÝDcϱŐ$ŤßÂß*C˛’Íŕ;˘ôÔšĚůźĐ`OĘ5“‚§9óŹEůÄß´ÇĆĎŔë©^ŕě«·­‹5D}}]°ź&úvůÁnxˇÇ‰QYţíkw•á­¸ëăf…űI\fW{×»×&/—q€qwaŢő|čÓv°qV~Í“e[gpJŁ?$Xű6z˘7s„{’§U&[AT4ÇEc‹EnňĹ}‹Ç^§7\.zěcGŐ×Z;ř%|ŻÓ@ĆÁ8qs8„C„CKH¨„Ă6‚ł8Ň7sS„{S8SČ„Wč„j…K…\8=\~Ëfr6ÓuÖçyĺT´b€•ór&ĺCŐl2†XĄoVŃ\;'†Fˇ‚čv:BW‚ŇćvÝƆ79ë†~—“u÷öAgwMG|y@Xw÷÷\=i‚—nE›hF@ĺtĺţĉzFf«˛Ş.Žó2ćŐ/ČrĎ7Rč|Ýuuˇč@G}RpM7‰îł‡i¤QľŠöŠ.uehv!ČŠËn#čÇ8\E†Ď&=#k«@{ČŠ?‡J(‹ş—pn—m?·zX6hlµP¬`Ť &VR„[äHm C5ČR•t^·˛t"°EPľH>›§sařaCÄ$í8jľb{†GMŞX‹8¨näô†Ać$ą#°ebV{&Âuéř™[hG‰Óć{áčx’'1ݍ}Ě…öŚ¸ČŚđ6ZŮdägs2,ô^ŚAŽ# n­X=?p—Xh=ŮŚ8…’ň(!˙BŮŹ_D}ţÔ7iaý×[Ătq/Hxݸ€cä'—‰Ŕ•|¦[¦‚|b)Wš’ŚŞw2ÉGE׊KĆŹđ÷•™^+i ŮOG9t”(€8ö~%É;? f‰:)~!9GyvPř‡*©R.™”ô¨€Š©“C÷‰981v|[…yiT“kĂx‘éç†úoóčFŽą’ fš ř“ Čf‚vL‘g—ąvbrâ×€ÜX-îçŠÍ‹6O9pŢŘnP¦Išą4Ă(¶ H€Iz>¸R#č–o9ť¬y—őHU‡Qv(IťŰĺť“hJ éA¬FÝ÷a(ÓrE›y†M€%™[wť6a˙÷řŤE)Žń&sŠFsSsoI¨dš0#׸ž‡YA]j’š|;ZťŞ¸ŁŞFm'–#Z_eşęhýÖ€…• É’řy_ő %w!¨@Ex¶˘śČ§fŠOĽ¦@< *˙aş§~*ˇ§§ű-AÚAtĘź>Šˇé źě)Z¨ÉRń gj9â™?s—’q™ą:¤(š”ŹYޤa:‹•l'Ey¨:“dş™ 6 ¤$6ę•i7šĄW¤Cęsł&}ăg¬{•¨Ý*Š·¶r˙k»Egh;•6© ôjl‡TšB8ťĽä«…HXę¦Ęxs«ąg«·Ä(é5«Đ˛‘óĆ—¬z¬Ö:Ż×IŻż:źŔĘ­ÜeŮŞš˙T‘ c@ź¤ÚMG9A…®ëa‰$bÇy•ţ‚¤U,™UYSŰŽD‘‹ Ş©§r—}g)fáD)ÓáHE'Źyźąw§˙U}6~0—š$9¦=viŰřwtŕĐł ±łĂ#ÜÇSÄŮ ˛2¬)™´UĂc[xeS±Űłť vl[dE˛ňpµTizŁäYł;z˘*S•¶BZ‰2K’ÖTĄŘ¶Řر†6iÜ% sű¤á—E&vâjťK¶g۲{…帴 +‹‡ µ 2—–)ş7kŠŤËX—c‰tbŐÖ{Ďş˛ĎU¶{ąaK¸QŮ…W$¸ó:sÜů˘®Ú'kZD¨űX—+řČlşíµ—Më*}Yă«&ššW꥓‹fűkŽ‹FgŘ~!jłoZ§ź»‚K§R¶ë{S¸ľ‹ź˙_Ë{Ů«GxÄ©"' fĽQÇRËxż™ˇ­ S]*7'ş•—Ű–L˝ŮŞź©˝-Ú‡?żł ¨v. ›q鵚ŰIźDȹ׾+ ««Š.„Z†ěÚ˝PÁQʢŁË› ‘)»YŞ–O÷˛4K´>§”ëGbŰą±ú꡺ä\obmpłxß„˘Śś9W„ŻYŻDĘÄ‘ ž¦»ş™Ć Fś©üű_Ř;¸ikź[ŞĆĘ)bu±Rş_ڎ¤ĘtÉJ1–aÄŁ¬žmâśtާ‰ńę65ČóůŁ첢dşÉÚź8k^,*vĚ˝^i+ťh7lźeŰľQV˙Ś6»¦Ę˛*‚2 Ľwk~Ň Žl’ĚJ¸¦zƸKťęŠÂćöˇŘI¨Ük¦Ľźâ;Éő8Ću żżš«\ä­ ‹Ě…kĚĹ좤›5N3Ŕ °Ź É{˘“˛Ąßą{Z°¦XÂČ|˘ł¬®ąčn~Ő†J<ĽŘ<ËSÍ |/Ů;Űy’âL,¬AČsÚżcĽ±Ŕ[]ÄhÍđ/ćĂg;ëŔů·܉â<Î䬻™;łČ›Ş ČrÂ|ż¤ý,0Ľtwx7Ń;?čŘ-NŘ‹«’íĂY+Ç\ś BXŤsí ŔmŚĐ簢ʑüźŇô¸/DÖ}°˝ĂŤ¶}B€ âÔ ĘÇ=×ĘÝÝ(N†zťŘłŐ@şßË:žpĎÚ Ő˛ŤĹ%>̡ýpžŰ§˝ËN{ÖZşÚ |C"˝üŤßŐ%ŻGMĘÎzĚÝÔ‘lXÜ…MäYt™›}¶R˝ Ş<Ă?ľ¬;ßt ĆÄĽŐá/^ĹĘéwŔIݬ}ĚŠöł{]۽ܴ±ż íćmÜ)Ôf{Ůű1čoÎÓ˙‘n”đíż˝<Ç]á =Ď íZ‘ů°H+ËŁĺµ;˝Ŕ ÂJžźŁţCIýŤľe@lpĽ ѧţn.+…–nÎŰšŕ°ťÝsŰă»ę&~]B,هËD©ÁX¨iÝĚÓűÍň “ąn]Än®ĘîÂx`Čžbźíźö˝ąfĂV{€ľ‡kH!´ll*˘::Ił–¨Ů8đŠëÍ™"ŽK(ąŔľ+ÍŻőŘ/ľ )tGĆS ?«hS%–ŰŇŃ6A:QÄ””\Ň­}ŚM¶ĹÓ*ÇmL éZKNą běËňŇÓ;ě&ۉQzP …"Jä^ięÂ…äű*Ëk˛Ë/˝F»®Ž&…l¦ş3aKp±ŹRă’âČ ÇŁ:[‘Ć`îÄ)O ™ň˝I­ĂĘ?Ýô‘Ěł!;BrÔߵ홿îjŃ˝Iqţ¤H;*}ş4˘s´ÔďÓí&éR&{ôb(™î†ě,’ţŘ!u7Q]­ X"ĺLѢOIŰŇ\ŃŃUÓDáÄKç”-ČźĚkd&MgůWáůÓňšnĽůÂ(®ŮIź)gĎC¤JgšóB >úÔĂ—Ůť¤ô8ý9oOs›#É ›m­Téü’Äť’ó8.ŠOĄBŮÍ˝{‡úă‡O~Řzg‡Ŕů祧®Ţ­x–ŃÖ#÷ťť2šT®8â/˙˘ßýhĆ<đ:W^ô Ŕ@śÁO}ĂÜ´¤†=Ŕy¬aß!\éÚă±11ÎiqŁŐž¨•ö5đ}ŚQď´â˛˘EŤ&ÄůXÉ|µ–ߍč>ä âČv7¶„Rëc˙ßjĄş¨c›×Ą5<ÁÁlnbŞGśtô.”9±m"ĽžúÄG±-ťpG”Űí"ł_kyU4 Ô˝mQ|Ń0ßęW-řé‚Řăë%1hVTCČÚ\Â34ŮđeäĐţ´WÇť5¨‚0Š$•öÂ<ćnz” o%±]k‘;JS {¤:F!ru}Ä[VÂJv„ĺ,ż KoĚň–¶Äĺ.u ^´üe/ĺ/S–Č„2˝7La겙Ą¦3“IÍaľňk\Ć\7Â^i1 ť¦ř=µąěG<”k6·´3şC‚ŔfěyľĽ•…âáţ’¤ž}ÂQŤĺl%‚ž&Đ€nÓr^»ýä ;zÖłVăŢôŽÇ¦âSkÇ %*Ż’Q†’î nóf9'h8ęĚ“5¶`hBMŮG@*NT… )W´ Ň,ňI Ňi }4ÉÓ«ˇe„â™˝ţÔ_Ç bPĐiśQj0űÔë Źu¬tS/­'ły%\ÁížńĂc§JIxĘ©ŠŃƵ¸­…‹ÝrÝäúU]«5ŤR©šĎÎmtŁR= S÷şT¬öěqi«RĄP:ÔÖAôXš" ăąVü 6€RT"PÝ©Ä'e–˛,}ëb«-/ž•F,?UXvÔzőŘ4ţT´"őžlÍcX[W==vKŹKhcř3“v°ÉE®)9Yľăú4®k˝ëĹ„Ú[žb1¤”«Y†žÜČfÍŻˇĽ©ă">­ž2uĄ!oŮ[ÚéęK¸ân»ŢÉ–žjá-$ČëÂ5‚ěő˘{;_ZńŞ’ÚJF·x`ÁzÖž|iăŃ×Evľ—şB˝7…ϝᕪ'1nvÜá˘y˛źőť`¸ľ™Ţ˙QĂčXava*]/(Ć,‰o»°ăY6ţ‘ĽLÂŘ·2Îę%Ź *×4^šSŕT5ďąÄ=Vq{V)$Ă®nşUËgδ€X›uhŞ6˙Ŕ/n˛{]¬§©\UWrFľŁżj NG˛cĽŠ*•w`Ş4'©dk“óÝ0&YÉ`•ZŤĺ_«Ę©‚Ş‹KŁôűYăP)щíÖ~vĹçGů+^Ľ˛—;ěb$†ÇhâěéŐßřľ¸‡»eď—oÖľÓî/Í•~'SŰŮeOÓŮý*ŁžŃ{iőjľ†tDT]l:_ű°ç‡ÓlhMçU‡KĆ6d[Ln¬Ĺ¸0Ő.ŚŘťĹŻőÍ…÷e"»aŰŮÓŁ9rôśOÝë ýZŇdÜsÍÜńv›ĐP2´˘÷»Ĺ–ZŔ6"pş•Śák×ٶlűéŮäÝqŽ3.޵3—Jeüë ţMśâ˝0uꇗ`ÍY[Đ ¦-jělY˛z3ľ§ÝÉńl#á®ÜtÎţ°Í-Č7V]-lph]NÔ÷ňYŐ@yʱlńhküŐćög~;-çúÉ;eŁĺw®ŹLWT_)AÖW„FZsq+ý:`—{I!F«őuŮQ—zĎŃěܦ–áĄÚÂaÍm„k·žőnybŠšp‰ó˝ď±¦{Ű1­íý%±đÇnw˘VśÜ|kyäfć9şo¶^r+´­¸Ą»Š˘|ř`«¶OK˝÷Ş7O‹řIűěĄw«l“]¦±ćŻaá­Śč@ ÔŇýłżIŻűŠ/1m2ć*’ů:W±H”ţĹżkď›ţťůţľ)S?+~A >†^0–›ÚÚ@Üdu­~ńS;â‹fž_ÍWýő—ÍúZĹďXÍËX¨ŕ ň„Jîđo»HímFŞM¸.]ü.FX'íx 輮ě¶%ďoş˘ďÄHöTé˙毾´®A0˙čoę<Âî±dĆîPoăL/¶g«2pŇ6đÎšŻşn-¬­§ô-€O“ŹŘĘŹěl‡z¨CďđĄPłŚđƲcbőO S)“ĘËŽÔ« Yp ©0}şĐÄŞjkV)iÔFĐ )ě ÎĄĽŞ ÍPŽJ°Ęęc —ýŠŽŽűΰŚZϨnţšţ0ËNP˛Íɸ ±§jú°T†K [' pÚ12äęîřpé ®ř&q‡LqŤ Їbđ®ÖíŃ›Ťńžo˙úüĘ·Čäj#-yÍ‘•„ލD ×đ%P.\j„ěŚ"2PçŠS*÷ŞńűTĐŘľe_,ůćW©č´˙°ŃíŻÁęŻ ĘkĐlŃ|ŽČ~ho¬XMmO¨ş* LŮä‘Üîs1ß$ş¶ńÖLÎĎ'!qyŻkBÓĘĎwo«'Ů|jőhgńö…řű“1^ ® ĺńŞPQ~^oQuz˙, "-AŃŮp% r÷ŻěÚo÷>S¨&I˛$Ep·Tk«Î&úXrŮ˛Ź˘€.ţÜp!rôĚqs n×Fâ­Â ruhPůřOź|Ńó<±Ż’Ť‘…R„J‘§ŇN˙ńáŘŽżďçă*s'ŞŤí҉’Î úŻÇnj3+aÇš¦ 2­É—"S0ś‰™úâ2)Ó2™1ż¤é—23?s35“4Ó4)s-c± ‰ ąć+Żë"Ă’„¬ňÓţRě®ŮR×ŇcS6 ó7¦Őްułß†Q+©Ń€Č’"gë ë06Ó{şOól/8g˛1Ťóq8Ł6˙çňż8ćÂ%ő’SÓw.1Ír1 G=ˇó:kĄpî;Ń2ŃS;îöňJßŕĆ7˙3Ą놏(?é0}°Â0Îţ( [?›ćąL&Í$±3?CŹíTnŞ’CS,>ôą¬@«ń@ń°+Tädq“ôg;”KČŚ\»ŠO4CYô-3·ŠďďHŃGźeňóG]Đ6mÔTN˛hęęZĹIźtIWs;o37/GS”BĎç=S˛#±ëŽlç/ł”1tK´KŐđĹě˛3UHJMŞMťĎŹÔL‹™4<ătMĹ4A'ôNqďJUSü¨ÔoSD˙aTL!§+5ňęt/#ţÔ5‡s=ătk­QTR±“2«röĆs±Ő>WkHŻD«7‘łS‹“RżÄR/uNŹŃ7ýěUĎ´‰qUł 0ٱOá´VgsŘŕë&ŇNs•Uó´F+XKő'ňT•ŐnĐAÓńg&D§µ)AQ ‹ëző:wK©5ÝDw\”GŃuJx´GÍ5;]µrUÇőYťň­&Ió*“^5őÄ„´ŹÎ]/0`˵UŹU7ęVk0etpXµ¤tĐ8ŵZÉuaSmßöSĺ8“1uűµcŠcÓ3K˝“Ě0[ pZĹÓL˙5üäőd}NZÇ5SIÖeĂőf­µ(éURŐu`_V˙xV!Lv^!hÖc­4_ˇŐh ‹fť¶ţlÖa;ŐĘf5a§d ňU«6"Őjq–Fż–dsVĄ”¶lĄ°i‘thQ׸vun7…YɶmKOai·TĘöö<őnXËmçr"öa˙•p7TI•ÉĽÖ ÄrQ¶a 5WŁś—r‘KIă6oßöryµoW°MO·t—téTk uk­®'FÉç¨ŐrŹ“aWWk'Q Swsµ´@x‡—x‹×xŹy‹w’—y›×yźWx—z§7yEÖzĄ—zł—x±W{—»W{ą×{µ÷wÇ—|Ë×|Ď}ÓW}×—}Ű×}J$ő(ď4~ĺ×!í÷~ß—r534zú×L8€ő·!çř*Euó•uý—€'Ä€%őř€+8‚+ ~x‚ý÷=X8„7Ř„O…SX…W…[Ř…_†cX†g†k؆o‡sX‡w‡{؇Ťł;euler-1.61.0/docs/reference/compl3.gif0000644000175000001440000001667007417015637016352 0ustar ericusersGIF89a_\‘˙˙˙€Ş!ů ,_\˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§ÔŞőŠÍj·Ü®÷[ Çä˛ůŚN«×ě¶ű /ćôAüŽĎë÷üţ™¶RG0`P(¸8ÂqXI"9rHX÷¸€iB)Ňň áRŞ(qą‰1zús*! p@[‹ ŰĐÚÁËá« :ÇüŔŰůŞQś±Ěʉˇ P;m­%Ü챝 +ý0]ť îý‰řͬl<Áľ›>9_qŢ@Nmžm™Ó O‹{ n0 ^=P”ţ˝kçŔˇ·U®‚˛(ŕŤţH†ˇ»!‘E8ÚS¨îC@D†.B”i$7Ś*ˇŃë‡@Îť:{ňüé3(С:‡ý4*4)ŃĄJ›2}ęT)&¨TŁV˝j5+P“8†Ě´Ác°Ź3_;*Jz)-pťđv‡X°5ľŞXI˛A\Rk+]Ŕ łbMłšĐfšK×oŰ“Ť:~µ;ř‡$Äyě…ŕ•¦¦nź ţ ÁsÄĐc{Ňüŕrę!€ÝŃm8l(Şd^,Űu˲ â.Měę_6ű Ě;ĆlĹĆ–+©­·ďé‰É?‡%\uł´ĂŻo¤Ł5sĺÇ+ ďťÁí›Î{f÷Ţ{´f‡bŰ[źî|]űňÉ˙óx,Hz ¬Çî§›ŔxŕnĘśWťKů„)0Hš\Ü`€ Ř‹{¶™DĹ0ŘYMöŤXśšw_ žĄ!CZĽP*‘ő[Ś :“!nł54dwęé7HŠţą0#ZČŽ€‚ř˝äŹA˛Ĺ’(4Â7^WH˘ŕK“dÉč P"!ĺ5ŇÁÂ%č¤iř9WfH,~·BS^¨ă fú¸$“´qPNŽvúP{eŇů&–~­Ę?{NŘ燱Չ¦ˇ6 \”ęŁč–ډ§©śÂ©ŞŤ\Fúep!JË>ݞ:H§uůęmZëf¸6HśoZŘ­˙*řhŹ|Q¸#¤FzůšdFüŠU¶N!e ·Z}«-NŢ.5.¸ć®UĺRµîąŕ¶»ŐĹFˉ6öŢ‹oݱ¦ żRyć±g)[?U*$ˇ!^ÚKCÓj ­´ţ™Čô;qúÎqV<0śâu)đ©yä¨Â!zb°˛É ň•­9ă‰#kÄÍÁś¬Ę«ĆZéČ’šĽhpB Ě0ËÎbĆsĄjł¬PKś3±4üŰ×r'ĆÉ]ŃĆz=tQ:“L¶Ě*ˇ,őł.FMfÁžq8$ĆSës Xš2XG‡v«űíößVÓŮdfżÜńׂĘŮv˝J&áÜĄ‚ŕU·ţ‡çĆY°=+ÎyĐtí2ÁeÉçÚkjxčô^(9›żp·ic n2?wNűëąĂHYŇ3=¸č›ľčě8Sú0Ý­ßv ±7§;óEE˙1őŔ[ß÷íő%_ýľŢ Ź8ń¸ŻłlöTŻü´ůŻĂóň,hVżËl“9рۿŽďÍ+\b‹¦ěď »Đďrč»Ëý•1¸/;ŰůŃض¦9őŐM‚Ř›ę„Aöa껞ôřÁy0‚Ť+źóšöK9 ||»^żÂîÇx/ś  aC[őÉŔŞ }XĂşŽ{8$˘Wş)YzJËçÎ< F±ăbgD“˙'츰ŠŃŮ!±ˇµ˛mŚ,L›yP”+@'QZ‰,GEüM‘‚4Î:(@)n‘Ž6„ü´Ä1NRE—&WĄO<ť;'±clâbÂŁ%Ą¨Ân6ő“ăj‡ĽK–l ŰŽ6âHHЉ'Ŕ–Pŕĺ.rĄk(—ĄTĐ5[Ňr–ębW·x Ě^şkyc–Ô˘GŇě ŠgĄ ä>E˛l"™K'›w1ВʍdI(ďhĚ.Šo›BÄbË´¨Ĺez2&ˇYž 5đĽ99“:‰ĽĎ5(Iir1ÔŁá:«(‘xđť#(?A¨N˛Sˇ…ň’,”ÉĂţ¤g÷g–L†2ń‰”c@jÁUţ“fĚÔfA÷y—sňkś%[ĹŽ8CŁť*˘€ŕyŢF8rÎóŽ5Î(ÚÍż=p;=c8e¤RŤQN?yš_É>gGjj’óZ Ń‡Ń "«§¦›D7TŇŚőw +`s7ř’ÚÓiihÚ9ś˘ĂźA Ő[ŤHQ˙-Ő­ů“j|4XÔVinňdMIz?şBµ® , ŻŁ<2ëúW˙÷6ĹrSŁ}Üc:-&ŘđlküŇě"׸ҲSŚŞIýšJ ]v©ý«Ý]ŰÎZ’q·(ިR3@ZŻýÔf(Ĺ Ř ąÝ˙Ś“˘jŘŃéŐˇ’ő¬S™•0"“tŻ]aËS:Ě ÷‡¶˝¤WŤ˘ÚÍL2§Ţč#µ‡ü«şäĄ×ĚÚŮÚŃżüÍÍ!… ß(1×e(R‚ęD}vŁűť:q(Wľ4˙HĎ€ŰÝ·ŞÓ·3ŐSĂ»Ű /lĽFëͬ>b€0uP‚Eö_{27żS}É6ÖX«\xřX–JęAakŃÇVÂţ”he!»Ővćí¬ÎXL\ŹqRI ţŘŚ_Ő W>řz4crhlĹ›b¤Iî4ŞÚLWp¶ŹO®}Ľ ćÁ2Žłž˝N@–­Zs–ë‚ĺ/µâçWf ˝ţ{ŢÖťu‰čB“[ÖňZ+™ßGYĄ>Ţl‘øĘFřlI-†Łs›Ý:WD~&M/ďRJd‘*g™ž†Żu~Ů,)k3_Č}î{&-ŠÉT6ÎV/đZÝűę—­ĘŚT"®j^ î›Ęv5ËL­CSśDVŐ› uŤJ[Y<šmě‡ýkĆf[Znś/C*»C©´FăčwŻĽY4(ĆѦ\¸nGbޞ1Lv ÷űUf‹Z}@­0Ě Î3 MÁĺŤ3»mzNöËťY1Ĺ)mF)ŮÁĐÝč ÝmĹ·G#ůęâM¬‚Çő“k㰠ѦL†×yă¤N¸ÄGîl_Ę6ŕţ)íĂ1¨Öč™śŽ©ëřŔIösc…‘âÇ ť/‚Űbřĺ{ޱř‚ôťp€?SÝ őŁxQ5Ő˘Ç4wö«Šo×Ţá6ŐĄöŮĺ=E¨ 6čR…3Źí¶ ŢKŻĐÉÎĘóĆ@0é ç8¦I™m0˙ŮŤ¶ö+±oĽ}uiĽH+ é>WˇxŹ”ě/ɇü]´T‘–ç­×]xů´†Ęd‡yĹnżÍŁsÓÍѶç5׊Ň—"Rçöh˛˝5[:6Ąq‘-ţvŃɧGş•Öű]ë|hÎw8Ça‹uYßžŞDm~ăqŹń˝˛XčbV8ěąOđ† }âŰ˙>âkÜő6/ÖUţ ^|üxě{dőź^öŐ˙~bd’Up„—JŁ; ÔOô$s‘Ą\"Rm»óď„ypjç¶uB+_DEç×Ó—yćz]rE¨'ŚĺvîWµGd+xr„" xmH#Öt~ľ×7‹wm¶Çe6V*÷c¬äuTo &|„RťÖWúViťgIŰó}n(†J»ć#86„çx=h\u×=ĂĺfÎŕOIăo[fdCx€ÔC¶/§ÇzŁF$)‡%ř÷>Me|‡ÇtĘU\¸NX(UÄj‰WĐ÷††7C÷ňr*Cl'Čvr2z{¨+“ÓR!“KŻă„°÷8Ęĺ0°EŮţ4|uôvă‡{‡ć/ÔäJ˛”h‚–K˛Ôgâ˛ögµx.´ŘŠW‹Š–‹˝.A±@)fr h5ŘĆ`úő=s}É]P88&Hc¤č}8—~Ńe5Áx}Ú%)LćzŹwvɧŚ.X‡âČtg8(e<ŘH‡-dŚH>F7:ů/–(u>“ľ!l,aôEgĄVo•(A &…»ŹčŐ îčR!ĹШ€Ç×ĆsŽ+E‰ ŕŚlŐ‡#؉-óŤČzh{@("˘3¤č~8-ť ŽÖGö”\ťxHç=‹ĺ’>"I‘ć")€ˇW-yXŤ‚‘ĺbŘv –“‘†k˙äăDźxEýĹíâV[(÷Z”°’6é|Tv‰Ei~\I‚†řRöSŘtlwt —ÄAüöŽ]¸{eHF)‹‚!v„fÂr““WHµ×mGŤ[”ŠÖq•t‰u«U†“„m kqŮ™”­E…\Ćjn»"kŮNýˇ‘ÉĹ#9áK(“e‰ögwGަU€QŮl´g| v™{ĺIůg;ЏXs —ˇązÚ¨~‘y2Y™”Ů“m™lé…Đ7‹ř™ó8’i[c‰ÖÇ—ŮS×~H<’0ˇř™ţuŚO´^FI‚6˛'›AŮMŮŹâ&‰DUVj ›[˘bD˛‘˙ŠŘt„vJŇ'”3‚‰*Ţ·cÉÔ»‘ťgŃ;Ďé`Ţ)žÉÉ‚ćMŰ ˇ„–w3˙ů‚Ö8P ĹW¶…0.ů˘”üyzŹ˝ąš-Řk|81*jWŤyô‹ł”@Q“¦řqňč—<běĄ|JmŻćrI›4úˇ ™Bš›·6lő”xôŁ‘g–AŘ0 =v§ ę‰÷i—ž9i˛ç–ů„YťTV['¤+&ŁEęö©g\zh GřIM%üT}`“Ź+şIDt8&®‚źtZv‡ĘhËąśç¤•űy…§x–‰†»˛F¤ňšAxHú¦r:Ź˙s™ ŠIě0t§I—Tłv‘ú5.j•:¨1—˛‡ŚŮĄ I†|މaô†WjÂŞ˙¸“şĹ©§Ô›Ś˘r`řŚ”¦žěčŁÜµ¬fŞ‚ę«d˘´FJ4:’› r}IŚř•«Ş¶)=`(”ž¦'˘ć §îXš tń­*ę§Ú—sgş|ëCźčęˇ^™–=.w’¨ ®€7)ľKÖşK±Š° «° ˰ ë° ±K®HUv|é-Ůźׯ °ńš¦ń÷“˙ŠŻµö~˛J¤ů‚áäsÓÄ“}WĄbeż2§7˛â©Łąö®‹–ʱ¦ńE¬4Űnéú•䩱˙ÉŞ§ĎŠ~§č¬/ °ăŠDą´Úz®Ź¦­´jł%y«˝¶ł“ śúł{É•FÚ°›şť:J˘h[Ş*‹7¦Ú¬9ĄŞ®€Ą!źoZ¤ Ë }hłü9¬ÎHŞŰwq;WaűCu‰¤k¨úš©úů€Đ™!Jg~8Jq{ĄkfrČ oů–µ§u*r©Ă·–gٵ>jFF¸ÜɸąąÁZ­šđ}jĄЎ-1·Ă'}©& «‹i¶Űc´:ˇZ ­­™»<ËJ©+ťźç•_şąĹ;§xĽŻV~'Š˘¶z¸»“ŹĹ=jąďŁv띲j›÷™ąűŚ}ép˙©işË뼞B¸vú•HçˇSk¨¦Č‰µŮ6“ŹĘŁІÔi…^8Żî1·::Rx¨źĽ—čąwú|!Y}˝O±‹I­K~ć-Á8\Úćś-]x˝ÍĆJŐřÄ™iÓ_­ŹĽ<Ѳ]M˛ciśKZ̉X±2˝É¸wvnÝ ÍŻ×ˇ ¦"´â›"ĄyŃěčU­ÉŹĺSÎu=‰ěňç¬ď˘„pŞâ[<8玭ł«ą˝C¬•fCĄ„1WO–Üë®j<ěç>ő˛{ä3né™>Z4§%™Ą9~ľŽŹşÚéďđ–ud.˛ďwiîĎuě@8ö á:­ńö{ěÇfô­GŇČŐăŕ¶ŚU’ÜÝ`öÜçÜ­H“E ÖŁ‡ŽfŞçş™Ývo=«×čx‰Ç^Ť˛ő›—ř_·eQîCÄ=kxWäo_ů’šˇá…ăHnŃ$ď§$ŰzÇę´OöĚO;g ĽÚ>•ťÝéIIgÝÉ’;ĄőőlĽAĹoQn/ĺŘß\`ÎđeńĐ…nÚ˙‹/ĘáO]·.-OěwNfë÷ Oŕ‰Ĺ>řnůÓF{›9éâSuJśŃŘř¸ńÉ)2ąŕl6tKĎ’ş¶Un{;v;(â‘ř[!°ĆóQB„SMŽd5YŤĹ—’Ą×r|€ťŐX ŽZ†Ó%dÝd7ř˝Ě/amĎ)#*P(Ż"M+ěî"Pń¨ŃëĎŤÄf­bQłĂ1‰iňuŹfÓđ¬3ÖnŞĚôÄÖĺŇ4ÔŐk8.rSF¶lŤáđ¸×Piru:”ö°űµř…I@@p¦ëvW/ö:«Ü¬·•|´’4ó UOŮ%\a°› w‹<9ţ·¬µŰ†ŮAžl€ŰçPśş„ćDą›‹Ý/„”4ę0őfŰ4x-ňµ·ŻÍĄz<*ńŠw EAŠ Sńč¶SÉtş÷„=m+˛ůĺ‰Q:óܤWÔ ťDd9 Č&ŠL¨ÇaĄ)qëר¦©Ú1%a¤˛Î [ęۣëvýű šR©ÜbhóŰđ_Á 6\±ŕ¬ď7.ĽxqbÉŽQž|ٲâĚ9oöL¸,ecžő9¶VÜ1Y“^J7ďĆŚw_ĎN—ěU>§€1Ukh÷Ä^ĹŞÄšÚµÂÓ˘ľýÖ¸Üç°uĄşóČqŁ˝ÓĚqń‡ţ_TÜ|ĎÜĎ1íÚľąvöÓ˝g—ď\«mćŇçë%ąľ?®Zč4VĐ㊦ôŕۆ»˝Č©#żE€Ło® ÷ŁĐ?x"ĤřĚ„˙łĐľë@Dp<…J)Ž(śÄń„˛Č¨‹ 1¬ďĂKÄ.«ô»ŃD '€1ÄI”ÍHë†k ůSR!"·kĘŁăńĘďÓQČ.Ís¤É#“Ŕ.źĘfL÷zcqÁ/ؤNMĄ\˘ĘP<Ó—łÜ’O gä«¶í­L +h·/ßěĂIĽ~|±P 7„.GűäË 32 ›jú[®;˛äšÔĹCÉ[ôĽ7 4ó 93ŕŽđlţjSË=kµőR$\UIN—tPTsHĺĆÔt¦QbYm5R#Ą+.V­´4×ZSt<—~1XjOMeX1 Ä*ZMUőđL9›mç&ibr-ÍjiݲÜů°50“;‚§”Đ<°Ęiż#ÜtϵČŕâ\5ठ*oŮÔÂD7^4 NčŢ5źÝWp@Éß@;m)©kőŕmS6`aVÎ])¨Ţ„ĺť×Ú?r´·Śą˘_–ÇŐYçh“˝§fWpé&ÖĺQ¤›ĺ«Ld8ëÝŘçł.2§zdMđ·°/~ -6“•ălB5îŚíĚ“°í¸?óKl±ĺľ{nĽáΛnľţĺ~۲–ťĆ×ŃżJ;Ó•Ç>Wđ`}r¤bJŽ3ćÄůŘšZĚéě–pĘUdqË͉Ćů\t=Ú­Xę‰;-á)ž˛ë‘g7ô¦qÎ]wŽ A˝Ătô˝•xsmÖdă,ě˛=Ôß?׳s&u'ý˝Ţ}g¨rŕźůÎě1nxqĄ^Ó~ľřčĄďńí­{čqÔ|wŮeNogĄkę^˙źfW†űŔöľYÔN~Áă ĎŚÇşďÉ A_`˝Uľ˙ Śzőcŕô^g@çqÎ~°řÓšRWÂű Ppź +88‚.1ô =ż:°F¸k żńI€D»˙Ţ׾”eP|vŞáq.ř@y¬°>Ô€RyuĽ8ĐŻp\{a„Ģę_KdP©h(feúˇ÷âDţ©L‹74ŕ×GzOŚ[dÂジżŞA¬j;śbýd‚Ĺ*Ň®cóĚň·ˇ©Ę‹I˘c#ăh’Źąě|!$_őÖ?ňůPR“#áý7‚~ˇäeđŁdŞi¶FJa•l’*1ÉH¶P˘üâ-ĘŰ Ëo|UC4oÄ’Ë[Z$Y2Idţ̆šÄŁň:"9aîňv9ScŠÔWI">3™Ň%űĘNU™.zóxÖŔíMťđlç<˙™yľ“žů|LŢţĐ©Js†ÓŤë]9˙©»~ mš‡<…¶é­ň”3Ě""ĺXPt0s‚JšE xĐcRp“ـڧ Ť–±•$m(EŁÉQw°f€—;©KéQ>’’›Ń€iw°š™ň2ˇ×Tč0HSňüF¨#5ęRŞÇ:ЍMiÍV"ÓÇśz«›«(Są¨T T•«a=]NPVłž­@ëZŮÚÖ¶ŞŐ­q•«Yá:W»˛µ®w-+kŢŞWżž5ݵk`+WÂÖ­‡˝«XŰXÇ>˛‘•ěd)[YË.ŐHČl6ËŮm,ť%hE+Ň‚Vł Ů3W«ŮZľ˘µg­g?•űZ6Đr¶@Xmn‚ŢZ/hż5­m˙ \ÝW¶¨-.l/iÜť$Ŕą$Ŕ-8•ű är6ş¦­®gł«Źëş–aß=.ĂşËTn7ŹĄ%fyĄ‹Ţo°×”îM-|'Ŕőš¤ňíŘy/Ű_˙ţŔđ€ \`Á Vđ‚Ü`?–đ„)\a _ĂÖđ†9Üa»´;euler-1.61.0/docs/reference/examples.html0000644000175000001440000006542107417015637017170 0ustar ericusers Euler Examples

Sample Sessions

This filecontains explained input and output for some EULER sessions. Each one is dedicated to the solution of a specific problem. The following topics are available.

Evaluating a Function

The following session has been left as it was (almost). It contains all the errors and corrections.

This is EULER, Version X.XX.

Type help(Return) for help.
Enter command)

Loading utilities, Version X.XX.

This is the welcome message of EULER.

>sin(2)/2
      0.4546487

We wish to study the function sin(t)/t in the neighborhood of 0. Thus we need some more digits

>longfromat
Variable longfromat not defined!
error in:
longfromat
          ^
>longformat
      10.000000000000       5.000000000000

A typical typo. Simply press cursor up and correct it. Format was set to 10 digits width and 5 digits after decimal point. The new format gives 12 digits after decimal point. Other options are goodformat and expformat.

>sin(0.0001)/0.0001
       0.999999998333
>sin(0.0001)/0.0001-1
      -0.000000001667

We conclude that sin(t)/t converges to 1. Let us see a picture of that function, using a function table.

>t=-10:0.01:10;
>s=sin(t)/t;
>xplot(t,s);
>title("sin(t)/t");

t is a vector of 1000 values from -10 to 10. s is the function evaluated at these points. Remember that EULER evaluates all function on a vector element by element. The result is the following picture

By the way the above plot could have been generated with

>fplot("sin(x)/x",-10,10);

more easily. There are many functions in EULER allowing an expression or a function name as input.

Of course, we know that we can expand sin(t)/t to a power series around 0. Let us add a plot of the first 3 terms of this series. This shows, how a plot can be added to an existing one. It also shows that truncation of large values is done automatically, if the plot scale is already set.

>hold on; plot(t,1-t^2/fak(3)+t^4/fak(5)); hold off;

The result is the following picture

Using Expressions

Many functions of EULER can use expressions as input. This makes it easy for the casual user to get results.

E.g., if we wanting to solve the equation cos(x)=x, we can use

>longformat;
>t=1; root("cos(t)-t",t)
        0.7390851332152

In the case of the function root, the variable name may be arbitrary. There could also be other variables, which must be global variables. t is set to the computed value. The second parameter must be the name of the variable.

root is a special function for command line use. However, there are other methods to solve equations. The bisection methods needs two points, where the function has opposite sign.

>bisect("cos(x)-x",0,1)
        0.7390851332157 

This time the variable must be named x. We must provide the two points of opposite sign to bisect. Other methods are the faster secant method and the Newton method, which needs the derivative.

>secant("cos(x)-x",0,1)
        0.7390851332152 
>newton("cos(x)-x","-sin(x)-1",0)
        0.7390851332152

In the case of the cos function, iterating the function converges to the fixed point.

>iterate("cos(x)",1)
        0.7390851332143 
>niterate("cos(x)",1,10)
        0.5403023058681 
        0.8575532158464 
        0.6542897904978 
        0.7934803587426 
        0.7013687736228 
        0.7639596829007 
        0.7221024250267 
        0.7504177617638 
        0.7314040424225 
        0.7442373549006 

We can view the history with niterate. The convergence is very slow.

We remark, that expressions can also be used for a quick draw of a function.

>fplot("x^3-x",-1,1);
>f3dplot("(x^3-x*y)/2");

Even a differential equation can be solved this way! Try

>x=linspace(0,2*pi,100); y=heun("sin(x)*y",x,1); xplot(x,y);

(Another implemented solver is the Runge-Kutta method, optionally with adaptive step size). Or an integration can be computed using

>romberg("exp(-x^2)/sqrt(pi)",-10,10)
            1

1 is the exact value of this integral from -infinity to +infinity.

Another example is the minimum of a function, which can be computed with

>fmin("x^3-x",0,1)
      0.57735 
>x=1; root("3*x^2-1",x)
      0.57735 

Complex functions

We wish to visualize a complex function.

>phi=linspace(0,2*pi,500);
>z=exp(1i*phi);

Thus z are points on the unit circle. In fact, we just went once around it. Let us see, if the point in z are indeed on the unit circle.

>max(abs(z)), min(abs(z)),
      1.0000000
      1.0000000

They are! Now let us see, how these points are mapped under the exp function.

>w=exp(z);
>xplot(re(w),im(w));

This plot connects the points re(w[i]) and im(w[i]) by lines. By the way, we could have used xplot(w) simply for the same purpose. We see, that the plot is distorted. Thus we choose a more appropriate plot region.

>setplot(0,3,-1.5,1.5);
>xplot(re(w),im(w));
>title("exp(z) for |z|=1");

We compare the picture with the first three terms of the complex power series of exp(z).

>w1=1+z+z^2/2;
>hold on; color(2); plot(re(w1),im(w1)); hold off;

Finally, we get the following picture

This visualizes, how a parametric plot of the mapped unit circle looks like.

To make a plot of the exp function near the unit circle, we need to define a grid of values. First of all, we establish the r and phi values

>r=(-1:0.1:1)'; phi=linspace(0,2*pi,60);
>z=r+1i*phi; w=exp(z);
>cplot(w); xplot();

We defined two matrices of x and y values of grid points (r,phi) and mapped them with exp. We made them visible with cplot. Note, that cplot does not add axis ticks. We had to do this ourselves.

We can now see, how exp distorts these values, using

>cplot(exp(w)); xplot();

A Differential Equation

We take the second order differential equation y''=2cos(x)-y. There is a numerical solver implemented in EULER, which uses the method of Heun.

>help heun
function heun (ffunction,t,y0)
## y=heun("f",t,y0,...) solves the differential equation y'=f(t,y).
## f(t,y,...) must be a function. 
## y0 is the starting value.

To use it, we need to write a function, which implements f(t,y). It has two parameters, t and y. y can be a vector. In our case, we solve the equivalent equation y1'=2cos(x)-y2, y2'=y1.

>function f(t,y)
$return [2*cos(t)-y[2],y[1]];
$endfunction

This function was simply entered interactively. Now lets compute a solution at discrete points t of the initial value problem y(0)=0, y'(0)=0.

>t=linspace(0,2*pi,100);
>s=heun("f",t,[0,0]);
>xplot(t,s);
>title("y''=2*cos(x)-y, plot of y,y'");

This is a plot of the solution and its first derivative. Since the exact solution is known, we can compute the maximal error.

>max(s[2]-t*sin(t))
        0.00022

Next we try to solve the boundary value problem y(0)=0, y(1)=1. We use the shooting method. So we write a function, which computes y(1) in dependence of y'(0).

>function g(a)
$t=linspace(0,1,100);
$s=heun("f",t,[a,0]);
$return s[2,cols(s)];
$endfunction

Then

>g(0)
        0.84147
>g(1)
        1.68294

So y'(0) must be chosen between 0 and 1. We use an implemented root finder, the secant method. We seek the root of the following function.

>function h(a)
$return g(a)-1
$endfunction

The secant method work like this.

>help secant
function secant (ffunction,a,b)
## secant("f",a,b,...) uses the secant method to find a root of f in [a,b]

So we find the solution with

>y1=secant("h",-1,0)
        0.18840

Indeed

>g(y1)
        1.00000

Lets have a look at this solution.

>t=linspace(0,2*pi,100);
>s=heun("f",t,[y1,0]);
>xplot(t,s[2]);
>title("y''=2*cos(x)-y, y[0]=0, y[1]=1");

Bezier curve and surface

We compute the Bezier polynomials first.

>t=0:0.01:1;
>n=(0:5)';

>S=bin(5,n)*t^n*(1-t)^(5-n);


We need to explain this. By the rules for operands or functions with two parameters, S has as many rows as n, and as many columns as t. The expression is evaluated correctly using corresponding values.

>size(S)
      6.0000000    101.0000000
>xplot(t,S);
>title("The Bezier polynomials");

Now we generate a Bezier polynomial to the points 1,3,4,4,3,1. The x-coordinates are simply equally spaced from 0 to 1.

This has been done with the following commands.

>v=[1,3,4,4,3,1]; xplot(linspace(0,1,5),v);
>hold on; color(2); plot(t,v.S); color(1); hold off;
>title("Bezier polynomial to a grid");

We can also get a surface. We use random z-coordinates and an equally spaced grid for x and y. However, the graph looks clearer, if we decrease the number of points in t a little bit. To redefine all of the above, we can simply recall the commands (or paste them).

>t=0:0.1:1;
>n=(0:5)';
>S=bin(5,n)*t^n*(1-t)^(5-n);
>Z=random(6,6);
>triangles(1); mesh(S'.Z.S);
>title("A Random Surface");

Another view, using central projection.

To view the surface from another view, we must define the x and y coordinates properly and call framedsolid with the scaling parameter of 1. I had to play with the view parameters to produce a nice look. triangles(1) makes 3D plots look better. This can be done with the following code.

>view(3,1.5,0.5,0.5);
>framedsolid(t',t,S'.Z.S,1);
>title("Another view");

The Fast Fourier Transform

What it the fastest way to compute sum z^n/n^2 for all |z|=1? This is a case for the Fast Fourier Transform (FFT). So

>a=1/(1:1024)^2;
>w=fft(a);
>xplot(w); title("sum z^n/n^2, |z|=1");

results in a plot of these values.

Also

>longformat; w[1]
       1.643957981030+       0.000000000000i 
>pi^2/6
       1.644934066848

w[1] is sum 1/n^2 and thus about equal to pi^2/6.

Lets take a simpler example.

>z=exp(2*1i*pi/8); z^8
        1.00000+   -2.45030e-16i

z is the 8-th unit root. Now evaluate 1+x+2*x^2 for x=1,z,z^2,...,z^7 simultaneously.

>w=polyval([1,1,2,0,0,0,0,0],z^(0:7))
Column 1 to 2:
        4.00000+        0.00000i         1.70711+        2.70711i 
Column 3 to 4:
       -1.00000+        1.00000i         0.29289+       -1.29289i 
Column 5 to 6:
        2.00000+   -3.67545e-16i         0.29289+        1.29289i 
Column 7 to 8:
       -1.00000+       -1.00000i         1.70711+       -2.70711i 
>fft([1,1,2,0,0,0,0,0])
Column 1 to 2:
        4.00000+        0.00000i         1.70711+        2.70711i 
Column 3 to 4:
       -1.00000+        1.00000i         0.29289+       -1.29289i 
Column 5 to 6:
        2.00000+    1.22515e-16i         0.29289+        1.29289i 
Column 7 to 8:
       -1.00000+       -1.00000i         1.70711+       -2.70711i 

This is exactly the same. FFT does the inverse. So ifft(w) yields [1,1,2,0,0,0,0,0].

What has this to do with trigonometric sums? Let us start with a trigonometric sum and evaluate it at equidistant points.

>d=2*pi/16; t=0:d:2*pi-d; s=1+sin(t)+2*cos(t)+3*sin(5*t);
>ifft(s)
Column 1 to 2:
        1.00000+        0.00000i         1.00000+       -0.50000i 
Column 3 to 4:
   -5.18102e-16+   -1.12612e-15i     2.52999e-16+   -8.88178e-16i 
Column 5 to 6:
    8.02039e-16+   -2.52673e-16i     6.52961e-17+       -1.50000i 
Column 7 to 8:
    8.07853e-16+    4.28197e-16i     5.55112e-17+    1.08247e-15i 
Column 9 to 10:
   -8.32667e-16+   -6.12574e-17i    -1.11022e-16+   -9.99201e-16i 
Column 11 to 12:
    8.20540e-16+   -4.58826e-16i    -8.29415e-16+        1.50000i 
Column 13 to 14:
    8.63296e-16+    1.91416e-16i     6.02979e-16+    7.77156e-16i 
Column 15 to 16:
   -4.44158e-16+    1.09549e-15i         1.00000+        0.50000i 

The relevant coefficients are clearly visible. Thus a[0] is 1, a[16]+a[1] is 2 and (a[16]-a[1])/i is 1, (a[12]-a[6])/i is 3. This is taking the real part of the polynomial.

FFT is usually used to make a frequency decomposition of a signal.

>t=linspace(0,2*pi,1023); size(t)
        1.00000     1024.00000
>s=sin(50*t)+sin(100*t)*2;
>s=s+normal(size(s));
>xplot(s);

We have a signal composed of frequencies 50 and 100. To it, we added noise in the form of a normal distributed random variable. In the plot, the signal is almost invisible.

The signal looks like this.

This is really a noisy signal.

>xplot(abs(fft(s)));

However, the discrete fourier transform clearly shows the relevant frequencies.

Solving Linear Systems

We try to solve a 20x20 linear system, using the interval Gauss method, starting with an interval matrix A and an interval vector b, we solve A.x=b. I.e., we compute an inclusion of all possible solutions of A1.x=b1, where A1, b1 have all components in A, b respectively.

>A=~random(20,20)~; b=~normal(20,1)~; x=A\b,
         ~-8.82886,-8.31189~
           ~6.75804,6.86954~
           ~3.88369,4.21000~
           ~1.77887,1.93779~
         ~-1.10686,-1.06680~
         ~-1.63162,-1.49419~
       ~-12.37560,-12.36436~
           ~6.57582,6.58060~
         ~-3.99866,-3.98221~
         ~12.02685,12.03148~
         ~10.92949,10.93122~
           ~7.32614,7.32686~
           ~3.32568,3.32682~
         ~-5.00561,-5.00428~
         ~-0.58250,-0.58215~
         ~-7.73372,-7.73332~
         ~-3.28384,-3.28366~
         ~-0.49704,-0.49702~
         ~-2.53221,-2.53217~
         ~-3.84874,-3.84874~
>max(diameter(x)'),
       0.51697

The computed vector x is an inclusion of the correct solution of A.x=b. However, we are not satisfied with this inclusion. To improve it, we use an approximate solution x. Then we compute the residuum r=A.x-b and solve A.y=r in an interval manner. We then set x=x-r. This yields an inclusion of the correct solution, which is at most 0.00002 wide.

>x=middle(A)\middle(b); x=x-A\residuum(A,x,b);
>max(diameter(x)'),
       0.00002
>x[1],
         ~-8.57038,-8.57036~

To do this, it was not really necessary to compute the residuum exactly. We could have used x=x-A\(A.x-b). But if A is badly conditioned, this will give a worse result.

Let us demonstrate the exact scalar product.

>t=exp(random(1,100)*40); x=-t|t|1;
>longformat; sum(x),
      6.567650591472
>accuload(x),
      1.000000000000

It is clear that the sum over the elements of x is 1. And accuload correctly computes this sum. You may also use the following method.

>{y,i}=sort(abs(x)); sum(x[flipx(i)]),
      1.000000000000

This sorts x in descending absolute values and adds them. However accuload is just as fast and it will also handle scalar products.

>y=t|t|1; x.y',
  -9.27123614247e+18
>accuload(x,y),
      1.000000000000

The Hilbert matrix is badly conditioned. Let us try the 8x8 Hilbert matrix. To avoid round-off in input, hilb multiplies it with a factor. So H is exactly representable in the computer up to 28 rows.

>H=hilb(8); b=sum(H); x=H\b,
      1.000000000001
      0.999999999955
      1.000000000648
      0.999999996236
      1.000000010663
      0.999999984321
      1.000000011500
      0.999999996676

We get a considerable deviation from the correct solution (1,...,1)'. One residual iteration removes this error.

>r=residuum(H,x,b); x=x-H\r,
      1.000000000000
      1.000000000000
      1.000000000000
      1.000000000000
      1.000000000000
      1.000000000000
      1.000000000000
      1.000000000000

To compute an inclusion, we use the interval Gauss method to compute an interval inclusion of the residuum.

>x=H\b; x=x-H\~r~,
         ~0.999999996598,1.000000003402~
         ~0.999999995447,1.000000004553~
         ~0.999999997545,1.000000002455~
         ~0.999999999070,1.000000000930~
         ~0.999999999703,1.000000000297~
         ~0.999999999925,1.000000000075~
         ~0.999999999984,1.000000000016~
         ~0.999999999996,1.000000000004~

This is sort of disappointing. And it may fail, if the Gauss algorithm decides that H may be singular. Let us use another method to improve x.

>R=inv(H); M=~-residuum(R,H,id(8))~; f=~residuum(R,b,0)~;
>longestformat; xn=residuum(M,x,-f), shortformat;
   ~9.9999999999999956e-01,1.0000000000000002e+00~
   ~9.9999999999999944e-01,1.0000000000000007e+00~
   ~9.9999999999999878e-01,1.0000000000000011e+00~
   ~9.9999999999999811e-01,1.0000000000000018e+00~
   ~9.9999999999999589e-01,1.0000000000000040e+00~
   ~9.9999999999999800e-01,1.0000000000000020e+00~
   ~9.9999999999999922e-01,1.0000000000000007e+00~
   ~9.9999999999999956e-01,1.0000000000000004e+00~

What we have done is an iteration step with a pseudo inverse R. R is close to the inverse of H. We then computed an inclusion of R.b-(I-R.H).x in an interval manner. Since H is exact, it is crucial to use an exact scalar product for I-R.H. Otherwise, the inclusions are not satisfying. We have also proved that the above vector contains the exact solution and that H is regular, because xn is properly contained in x. (This is a Theorem, which the reader may found in papers of Rump.)

>xn << x,
       1.00000
       1.00000
       1.00000
       1.00000
       1.00000
       1.00000
       1.00000
       1.00000

In INTERVAL.E there is a solver for interval LGS. Using this,

>load "interval";
>h=hilb(8); b=sum(h);
>longestformat; ilgs(h,b), shortformat;
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~
   ~9.9999999999999978e-01,1.0000000000000002e+00~

we get a good inclusion, plus a proof that the interval contains a solution and that hilb(8) is regular.

Exact evaluation

EULER can evaluate expressions more exactly, using residual iterations. As an example, we take the polynomial

>longformat;
>p=[-945804881,1753426039,-1083557822,223200658]
Column 1 to 2:
             -945804881              1753426039 
Column 3 to 4:
            -1083557822               223200658 

We evaluate it at a special point.

>polyval(p,1.61801916)
    -1.160660758615e-07 

However this answer is completely wrong. We get a better result with

>xpolyval(p,1.61801916)
    -1.708110500122e-12 

An inclusion can be derived with interval methods.

>load "interval"
This file contains the following interval methods, all producing
guaranteed bounds.
idgl, a simple DLG solver.
ilgs, a linear system solver.
iinv, computes an inclusion of the inverse.
ipolyval, a polynomial evaluation.
inewton, interval Newton method.
inewton2, Newton method in several dimensions.
>ipolyval(p,1.61801916)
   ~-1.7081105002e-12,-1.70811050003e-12~ 

Next, we evaluate an expression.

>x=10864; y=18817; 9*x^4-y^4+2*y^2,
                      2 

This answer is wrong. To get a correct answer, we transform the problem into a linear system. This is simple. We can use x[1]=x, x[2]=x[1]*x, etc.

>A=id(9);
>A[2,1]=-x; A[3,2]=-x; A[4,3]=-x;
>A[6,5]=-y; A[7,6]=-y; A[8,7]=-y;
>A[9,4]=-9; A[9,8]=1; A[9,6]=-2;
>b=[x 0 0 0 y 0 0 0 0]';
>v=xlusolve(A,b); v[9]
                      1 

This is the correct answer. ilgs provides an inclusion.

>v=ilgs(A,b); v[9]
 ~0.99999999999999978,1.0000000000000002~ 

Interval methods

We compute an interval inclusion of the integral of sin from 0 to pi. First we set up a vector of intervals covering [0,pi].

>shortformat; t=linspace(0,pi,1000);
>n=cols(t); i=~t[1:n-1],t[2:n]~; i[1:3]
Column 1 to 2:
           ~0.00000,0.00314~           ~0.00314,0.00628~
Column 3 to 3:
           ~0.00628,0.00942~

Then we sum up

>h=pi/1000; sum(sin(i))*h
           ~1.99685,2.00315~

This is an inclusion. We could try to get a better one with the Simpson method.

>f=4-mod(1:n,2)*2; f[1]=1; f[n]=1; f[1:6], f[n-5:n],
Column 1 to 4:
       1.00000       4.00000       2.00000       4.00000
Column 5 to 6:
       2.00000       4.00000
Column 1 to 4:
       4.00000       2.00000       4.00000       2.00000
Column 5 to 6:
       4.00000       1.00000
>longestformat; r=sum(f*sin(~t~))*h/3
   ~2.0000000000008753e+00,2.0000000000013367e+00~

This is not an inclusion. we have to add an error term. The 4-th derivative of sin is bounded by 1, so we get

>r-~-1,1~*~pi~/180*h^4
   ~1.9999999999991747e+00,2.0000000000030371e+00~

This is an inclusion of the integral.

Let us now demonstrate an interval differential equation solver.

>load "interval"
>help idgl
function idgl (fff,x,y0)
## Compute the solution of y'=fff(t,y0,...) at points t with
## y(t[1])=y0.
## The result is an interval vector of values.
## Additional arguments are passed to fff.

The function idgl contained in idgl.e will compute an interval inclusion for the solution using a very primitive Euler polygon method. We have to enter the differential equation, here y'=t*y^2.

>function f(t,y)
$return t*y^2;
$endfunction

Now we set the initial value y(0)=1 and the step size to 1/1000.

>x=0:0.001:1;
>y=idgl("f",x,1);
>y[cols(y)]
           ~1.99604,2.00399~

This is an inclusion of y(1). The correct value is 2. The solution is 1/(1-t^2).

>s=1/(1-x^2/2);
>nonzeros(!(s <<= y))

Thus y contains the correct solution.

Let us demonstrate the interval Newton method.

>load "interval"
>help inewton
function inewton (ffunc,fder,x)
## Computes an interval inclusion of the zero of ffunc.
## fder is an inclusion of the derivative of ffunc.
## The initial interval x must already contain a zero.

We have to enter a function and its derivative.

>function f(x)
$return x^5-3*x-1
$endfunction
>function f1(x)
$return 5*x^4-3
$endfunction

inewton does the rest.

>longestformat; inewton("f","f1",~1,2~), shortformat;
   ~1.3887919844072540e+00,1.3887919844072545e+00~

We have also proved that the interval [1,2] contains exactly one solution of f(x)=0.

You could also pass expressions in x to inewton.

>inewton("x^5-3*x-1","5*x^4-3",~1,2~)

A similar Newton method works in several dimensions.

function f(x)
    return [x[1]*x[2]*x[3]-1,x[1]-2*x[2],x[2]^2-x[3]-2]
endfunction

function Jf(x)
    return [x[2]*x[3],x[1]*x[3],x[1]*x[2];
        1,-2,0;
        0,2*x[2],-1]
endfunction

This is a function in three dimensions and its Jacobian.

longestformat;
x=newton2("f","Jf",[1,1,1]); f(x),
Column 1 to 2:
   2.2204460492503131e-16       0.0000000000000000
Column 3 to 3:
   4.4408920985006262e-16
inewton2("f","Jf",[1,1,1]),
Column 1 to 1:
   ~2.9831157345242825e+00,2.9831157345242847e+00~
Column 2 to 2:
   ~1.4915578672621415e+00,1.4915578672621421e+00~
Column 3 to 3:
   ~2.2474487139158886e-01,2.2474487139158927e-01~
shortformat;

newton2 is just a two dimensional analog of the Newton method. It converges against x. f(x) is indeed a small value. inewton2 produces a verified interval inclusion of the solution. euler-1.61.0/docs/reference/functions.html0000644000175000001440000001254507417015637017361 0ustar ericusers Functions

Basic Built-in Functions

This section introduces you into

Basic Functions

There are the usual functions

abs, sqrt, exp,
log, sin, cos,
tan, asin, acos,
atan, re, im, conj.

They all work for complex values. In this case they yield the principle value. There are some functions which make sense only for real values

floor, ceil, sign,
fak, bin, logfak, logbin.

floor and ceil give integer approximations to a real number. "bin(n,m)" computes the binomial coefficient of n and m. logbin(n,m) computes the logarithm of that (for large values of n,m)

    >pi()

(or simply ">pi") is a built-in constant.

    >mod(x,y)

return x modulus y.

Functions and Matrices

Note, that most of these internal functions work for matrix input. They simply evaluate to any element of the matrix. If this is not the case, or if you have written an own function, which does not accept matrix input, you can map it to a matrix with

    >map("function",...)

where the elements of the matrix parameters ... are passed to a the function. This mapping obeys the rules explained in the matrix section. That is, if you pass a row v and a column w to it, both are expanded to full matrices with as many rows as v and as many columns as w.

Max, Min etc.

    >max(x,y)

and min(x,y) return the maximum (minimum resp.) of x and y.

    >max(A)

and min(A) return a column vector containting the maxima (minima resp.) of the rows of A. The functions totalmax and totalmin from UTIL compute the maximum about all elements of a matrix.

If A is a NxM matrix, then

    >extrema(A)

is a Nx4 matrix, which contains in each row a vector of the form [min imin max imax], where min and max are the minima and maxima of the corresponding row of A, and imin and imax are the indices, where those are obtained.

If v is a 1xN vector, then

    >nonzeros(v)

returns a vector, containing all indices i, where v[i] is not zero. Furthermore,

    >count(v,M)

returns a 1xM vector, the i-th component of which contains the number of v[i] in the interval [i-1,i).

    >find(v,x)

assumes that the elements of v are ordered. It returns the index (or indices, if x is a vector) i such that v[i]< = x< v[i+1], or 0 if there is no such i.

    >sort(v)

sorts the elements of v with the quicksort algorithm. It returns the sorted vector and the rearranged indices. If

    >{w,i}=sort(v);

then v[i] is equal to w.

Sum, Prod etc.

If A is NxM matrix

    >sum(A)

returns a column vector containing the sums of the rows of A. Analoguously,

    >prod(A)

returns the products.

    >cumsum(A)

returns a NxM matrix containing the cumulative sums of the columns of A.

    >cumprod(A)

works the same way. E.g.,

    >cumprod(1:20)

returns a vector with the faculty function at 1 to 20.

Rounding

    >round(x,n)

rounds x to n digits after the decimal dot. It also works for complex numbers. x may be a matrix.

String Functions

The only string functions in EULER are

    >stringcompare("string1","string2")

which returns 0, if the strings are equal, -1 if string1 is alphabetically prior to string2, and 1 else, and the comparation operators ==,< ,> ,< =,> =.

Besides this, you can concatenate strings with |.

Furthermore,

    >interpret("expression");

will interpret the expression and return the result of the evaluation.

Timer, Wait etc.

    >time()

returns a timer in seconds. It is useful for benchmarks etc.

    >wait(n)

waits for n seconds or until a key was pressed. It returns the actual wating time in seconds.

    >key()

waits for a keypress and returns the internal scan code, or the ASCII code of the key. You can check this ascii code against a character with key()==ascii("a"). euler-1.61.0/docs/reference/euler_links.html0000644000175000001440000000275307434665474017676 0ustar ericusers Links

Home

Features
Supported Systems
Download

Documentation
Some Examples

Forum

Version history

Deutsche Einführung euler-1.61.0/docs/reference/euler_systems.html0000644000175000001440000001010207417015637020237 0ustar ericusers untitled

Supported Operating Systems

Euler has started in 1988 on the Atari ST. However, this computer and the program version for it are long outdated. I once had even a DOS version, which was very, very restricted.

This description contains download links too. Note, that Euler is distributed according to the GNU general public license. Also note the usual disclaimer contained in this documentation.

Windows 95/98/NT/2000

This is one of the main versions. I did the interface using Borland C++ in 1994. The interface is in notebook style with editable commands, comments and the Euler output. In this version, Euler graphics can be copied to the clipboard in WMF format and saved as bitmaps, or as postscript files. The version supports sound output to wave files, and can play an external wave file. The registry is used to keep user settings, and the windows sizes and positions.

The documentation is contained in a HTML file, which is installed along with the program and linked from the start menu. The Windows help file contains only a short introduction.

Installation is done by a setup program, which was created with Inno Setup.

New Unix / Linux Version

The new versions for Unix is based on GTK, and was done by Eric Boucharé from France in 2001. Many, many thanks to him for doing this. For recent developments, see his homepage.

The version is similar to the Windows version, and uses a notebook window. The source is diverging from my source in quite some places. To compile it, you will need the GTK development files. On Linux, a simple make will be enough.

For Linux, I have prepared a RPM installation file. It needs to be installed as root user and will install Euler properly in /usr/share, creating a link in /usr/bin, which can be used by all users. You need GTK to run it.

Old Unix Version

The Unix version existed before the Windows version, since about 1989, running on an IBM AIX system. It never reached the same functionality as the Windows version. The interface is restricted to a terminal like intput and output, using a seperate graphics Window. The version can save graphics as postscript files only.

This versions needs either an X-Window graphic system to run, or it can generate a no-graphics version, which uses stdin and stdout to communicate with the user. Actually the non-graphics version might be useful as a numerical filter.

I distribute this version only as source code. Compilation is a simple make on Linux, but for other systems, you will need to make some adjustments as decsribed in the makefile. It has been successfully built for a lot of Unix systems, including 64-bit systems.

This source is also used to build the Windows version.

OS/2 Version

Lacking a working OS/2 system, I stopped maintaining this version in 1996. I wrote it back in 1993. You can still download a build from our server.

DOS Version

This was only a demonstration joke. The version is too restricted to be useful. euler-1.61.0/docs/reference/commandline.html0000644000175000001440000002166707417015637017644 0ustar ericusers Basics

Basics

Explains

Using the EULER windows

EULER uses two windows. The text window and the graphics window. In the Unix version, you have to switch between them by pressing the TAB key, in GUI versions you can alternatively use the mouse, of course.

The text window contains the menu and is for user input and output of EULER. The graphics window is displayed, whenever EULER draws output. The graphics screen is visible as long as there is no text output. In this case, EULER pops the text screen to the forground.

Notebooks

This applies only to the notebook versions of EULER. Notebooks contain the commands, comments and EULER output. Old commands can be edited and changed. Text may be added to commands to explain it. Notebook files can be given to other people or can be kept as documented computations. However, collections of functions should still be kept in program files, which could be loaded as first command of a notebook. A notebook could accompany the definitions, which explains the use of the functions with examples. Another idea is to use notbooks for teaching mathematics.

The most important fact about notebooks is that EULER still uses the sequence of commands as they are executed. So if you change the value of a variable and go to previous command, the changed value is used.

You may not only change previous commands, but also delete them or insert new commands. Use the notebook menu to do this, or the keyboard shortcuts. If you change a command and execute it, its output is removed and EULER proceeds to the next command, unless you choose to insert all new commands. In this case, a new command is inserted after the one, you just executed.

You can delete the output of commands. To do this, select a text area and use the command in the notebook menu. All output of the selected commands will be deleted.

Notebooks in old versions of EULER

Notebooks can be loaded from all versions of EULER. However, you cannot edit them. Use

    >notebook filename

for that purpose. It will prompt you after each command. If you press the Escape key, the file will be closed immediately. Otherwise, the command is executed. You can turn the prompt off with

    >prompt off

The Command Line

Text can be entered after the prompt (>) using the keyboard. If a letter is wrong, it can be cancelled with the Backspace key. The cursor keys position the cursor back and forth in the line. The line editor is always in insert mode, so any character is inserted at the cursor position. The Home and End keys work as usual. Escape clears all input. Shift plus -> or< - position the cursor one word to the right or left. Finally, the input is entered by pressing Return. Then EULER will start to interpret the command. The cursor can be at any position of the input line, when Return is pressed.

Previous input can be re-called with the Cursor-Up and Cursor-Down keys. (On the notebook version use these keys with Shift). If a command is recalled this way and entered with Return, cursor-down recalls the next command; i.e., cursor-up and cursor-down are always based on the last recalled command. Clearing the input line also makes the last command the base for recalling (use Escape or Control-Cursor-Up). Thus Escape plus cursor-up recalls the previous command.

Pressing the Insert key extends incomplete commands. Pressing this key again gives another extension, if there is one. The search goes through the command history, the implemented functions, the user defined functions and the built-in commands in that order.

The End key will insert the text "endfunction", but only on empty lines in porgramming mode (see below). Otherwise, it works as usual.

There are some other special keys. The Tabulator key switches to the Graphics screen and from there any key switches back. The Escape key stops any running EULER program and some internal functions, like the 3-dimensional plots, the linear equation solver and the polynomial root finder.

The Page-Up and Page-Down keys provide a means to look at previous output from EULER. EULER keeps a record of the last output. When the command line becomes invisible, pressing any key will make it reappear.

Input can spread over several lines by the use of "..". The two dots are allowed at any place, where a space is acceptable. E.g.

    >3+ .. some comment
    >4

is equivalent to

    >3+4

Comments can follow the ".." and are skipped.

Function Keys

The function keys may be programmed by the command

    >setkey(number,"text");

The number must be between 1 and 10 and the "text" may be any EULER string. Then the corresponding function key will produce the text, when it is pressed together with the ALT key . If the function key text is to contain the " character, one can use double quotes as string delimiters as in

    >setkey(1,''load "test";'');

which puts

    >load "test";

on the function key Shift-F1.

Loading files

To abbreviate tedious input one may generate a file containing EULER input. This file can be generated with any editor. To load that file enter

    >load filename

All lines of that file are interpreted just as any other input from the keyboard. Also a loaded file may itself contain a load command. If an error occurs, the loading is stopped and an error message is displayed. There is a default extension ".e", which you should use for these files. You need not specify this extension in the load command. The filename may be included in double quotes. If you are using a string expression, include it in round brackets.

The best use of an Euler program file is to define functions in that file. Many predefined functions are loaded at each start of EULER. This works in the following way: EULER will load the file euler.cfg everytime the program starts. This file does again contain load commands, which load the necessary utility files.

EULER looks for the specified file in the active directory by default. You may specify a path with the path statement

    >path "..."

where the string should contain a path like ".;myspecial". This would put the active directory into the path and a subdirectory named myspecial. The path command is handy for network setups.

A file may contain a comments. Comments look like this

comment
This is a comment.
Comments can spread several lines.

Also empty lines are allowed.
endcomment

endcomment must be the first string of a line.

You can turn comment printing off with

comment off

Otherwise all comments in a file are displayed, when the file is loaded.

comment on

turns this feature on.

Euler Errors

If a computation error occurs, Euler will issue an error message and try to print the offending input. This may either be a place in your input from the command line, a command line in a loaded file, or a line in an EULER function. In the latter case, Euler will print a stack dump of function calls.

You can generate an error yourself and print an error message with

error("An error occured");

If this line is in an Euler function, execution will be stopped, and the normal error routine is called, generating a stack dump.

It is also possible to test an expression for errors. This will not generate error messages (indeed it will surpress all output), and return an error code and, if available, a result. An example is

{n,B}=errorlevel("inv(A)");

The matrix A will be inverted to B, if possible, and n will contain 0. If the inversion fails, n will contain an error number different from 0. The variable B may not be used in this case. Use

if n<>0; error("Inversion failed"); endif;

to test for an error. euler-1.61.0/docs/reference/index.html0000644000175000001440000000122407417015637016450 0ustar ericusers About Euler <BODY> <P>What? No Frames?</P> <P>Try <A HREF="euler_links.html">this file</A> or get a newer Browser. </BODY> euler-1.61.0/docs/reference/programming.html0000644000175000001440000004710507417015637017673 0ustar ericusers Programming Euler

Programming EULER

Another long section explaining

EULER functions

EULER would not be as powerful as it is, if there wasn't the possibility to extend it with user defined functions. A function can be entered from the keyboard or better from a file. Since there may be errors in a function, it is best to call an editor, edit the function in a file and then load that file.

Loading a file is done with

    >load "filename"

A function is declared by the following commands

    >function name (parameter,...,parameter)
    >...
    >endfunction

It can have several parameters or none. If the function is entered from the keyboard, the prompt changes to "$". "endfunction" finishes the function definition. An example

    >function cosh (x)
    $  return (exp(x)+exp(-x))/2
    $endfunction

Every function must have a return statement, which ends the execution of the function and defines the value it returns. A function can be used in any expression, just as the built-in functions. If a function is not used in an assignment and with surpressed output (followed by ";"), it is used like a procedure and its result is evidently lost. However, the function may have had some side effect.

A function can call itself recursively. In this case, you have to take care that the recursion stops. If a function overrides an internal function, you can call the internal function with an underscore _ before its name. Thus a function is able to call the internal function, even if it has the same name. This is useful to give enhanced flexibility to built-in functions.

Global Variables

Inside a function one cannot access global variables or variables of the function which called the function. To use global variables use the command

    >global variablename

in the function body. Of course, one can use other functions in expressions inside a function, one can even use the function inside itself recursively. All variables defined inside a function are local to that function and undefined after the return from the function. There is no way to define global variables or change the type or size of global variables from within a function, even if one defines these variables in a "global" statement.

    >useglobal

lets you access all global variables from inside the function. This is only valid for the function containing the useglobal command.

Parameter by Value or Reference?

Variables are passed as references.

That means that a change of a parameter results in the change of the variable, which was passed as the parameter. For example

    >function test(x)
    $  x=3;
    $  return x
    $endfunction
    >a=5;
    >test(a);
    >a

prints the value 3. There is an exeption to this. A submatrix is passed by value. Thus

    >a=[1,2,3];
    >test(a(1));
    >a(1)

prints the value 1.

Variable Parameter Number

A function can have a variable number of parameters. The number of parameters passed to a function can be determined with the built-in function "argn()". If the parameters are not named in the function definition, they are given the names arg1, arg2 and so on.

You can access the parameters from the n-th parameter on with args(n). This functions returns multiple values (argn,...) and these values may be passed to another function as several parameters. pargs() will return all parameters from the first non-named parameter. These additional parameters may be passed to a function. If the parameter list in the function call contains a semicolon ";", args() will return all parameters after the semicolon.

Default Values for Parameters

Parameters can have default values. The syntax is parameter=value in the parameter definition; e.g.,

    >function f(x=3,y,z=1:10)

assigns the default value 3 to x and the vector 1 to 10 to z, if the function is called in the form

    >f(,4,)

If the function is called

    >f(1,4)

x has the value 1, y the value 4, and z the value 1:10.

The function can even be given a named parameter. Consider the function

    >function f(x,y,z=4,w=4,t=5)

Then

    >f(1,2,t=7)

calls the function as if

    >f(1,2,4,4,7)

was entered. Actually the name needs not be a parameter name. Thus

    >f(1,2,s=7)

defines a local variable s with value 7.

Returning Multiple Values

A function can return multiple values. This is done with the return statement

    >  return {x,y,...}

You can assign all the return values of a function to variables, using

    >{a,b,...}=function(...);

If the result of such a function is assigned to a number of variables smaller than the number of returned values, only the first values are used. If is is assigned to a larger number of variables, the last value is used more than once. Some built-in functions return multiple values.

Function Comments

Comments can be included, starting with ##. Comments are ignored by Euler and do not appear, when you type the function body with

    >type functionname

If the lines immediately after the function header start with ##, then those lines are considered to be help text. The help text can be displayed with

    >help functionname

This feature is a good way to remember the parameters of the function. Also

    >list

can be used to display a list of the names of the user defined functions.

A function or several functions can be removed with

    >forget name,...

By the way, a variable can be removed with

    >clear name,...

Program flow

Like in any other programming language, EULER has commands for changing the execution flow. These commands can only be used inside user defined functions.

First there is the "if" command.

    >if expression; ...;
    >else; ....;
    >endif;

The expression is any EULER numerical expression. If it is a non-zero scalar ora a matrix with all entries different from zero, then the part from the ";" to the "else;" is evaluated. Else the part from "else;" to "endif" is evaluated. Of course "..." may spread over several lines. To work correctly, keywords like "if", "else", "endif" and others should be the first nonblank characters in a line, or should be preceded by "," or ";" (plus blanks or TABs). The "else" may be omitted. In this case the evaluation skips behind the "endif", if the matrix contains zero elements (resp. the number is zero).

You may also include one or several elseif commands

    >if expression; ...;
    >elseif expression; ...;
    >else; ....;
    >endif;

This is the same as an if command inside the else part. However, you do not have to type several endifs.

There is the function "any(A)", which yields 1, if there is any nonzero element in A, 0 otherwise. The function is useful in connection with the if statement.

Next, there are several loops.

    >repeat; ...; end;
    >loop a to b; ...; end;
    >for i=a to b step c; ...; end;

All loops can be aborted by the break command (usually inside an "if"), especially the seemingly infinite "repeat". "loop" loops are fast long integer loops. The looping index can be accessed with the function "index()" or with "#". In a "for" loop the looping index is the variable left of the "=". The step size can be omitted. Then it is assumed to be 1. As an example, the following loops count from 1 to 10

    >  i=1;
    >  repeat;
    >    i, i=i+1;
    >    if i>10; break; endif;
    >  end;

and

    >  loop 1 to 10; #, end;

and

    >  for i=1 to 10; i, end;

Debugging EULER programs

The command

    >trace on

sets tracing of all functions on. Then any new line in a user defined function will be printed with the function name before it is executed. The uses has to press a key, before execution continues

  • Control-F1 debugs every function.
  • Control-F2 debugs no function called in the current line.
  • Control-F3 will stop debugging until return of the current function.
  • Control-F4 will prompt for an expression and evaluate it.
  • Control-F9 aborts execution of the program.
  • Control-F10 ends tracing for this command.

Any other key will display the available keys. Note that the help key is mapped to the insert key on a PC.

    >trace off

switches tracing off.

Note, that with F4 you can evaluate any expression, even if it contains local variables or subroutine calls. Tracing is switched off during evaluation of the expression.

A single function can be traced with

    >trace function

or

    >trace "function"

Execution will stop only in this function. The same command switches the trace bit of this function off.

    >trace alloff

switches tracing for all functions off.

Programming style

All internal EULER functions can handle vector or matrix input. And so should user defined functions. To achieve this, sometimes nothing special needs to be done. E.g., the function

    >function kap (r,i,n)
    >  p=1+i/100;
    >  return p*r*(p^n-1)/(p-1)
    >endfunction

is automatically capable to handle matrix intput. Thus

    >kap(1000,5:0.1:10,10)

will produce a vector of values. However, if the function uses a more complicated algorithm, one needs to take extra care. E.g.,

    >function lambda1 (a,b)
    >  return max(abs(polysolve([1,a,b,1])));
    >endfunction
    
    >function lambda (a,b)
    >  return map("lambda1",a,b);
    >endfunction

shows the fastest way to achieve the aim.

Forthermore, as a matter of good style, one should use the help lines extensively. All parameters of the function and its result should be explained. This is a good way to remember what the function really does.

Passing functions as parameters

It is possible to pass functions to a function. E.g., the function "bisect" in UTIL finds the zero of a function using bisection. This function works in the following way

    >function f(x)
    >  return x*x-2
    >endfunction
    >bisect("f",1,2)

The result will be equal to sqrt(2). If "f" needs extra parameters, those can also be passed to "bisect"

    >function f(x,a)
    >  return x*x-a
    >endfunction
    >bisect("f",0,a,a)

will result is equal to sqrt(a) (for a>=0). The search interval is set to [0,a].

The way to write a function like "bisect" is to use the "args" function.

    >function bisect (function,a,b)
    >...
    >  y=function(x,args(4));
    >...
    >endfunction

Then "function" will be called with the parameter "x" and all parameters from the 4-th on (if any) which have been passed to "bisect". Of course, "function" should be assigned a string, containing the name of the function which we want the zero of.

The function bisect does also accept an expression in the variable "x". The programmer can use

    >evaluate(expression)

to evaluate an expression. The variable "x" should be defined either globally (then useglobal must be used), or in the function bisect itself. To determine, if a string is a function or an expression, the function isfunction("f") may be used.

Another way to achieve this result is the use of args() without parameter. This will return all parameters from the first additional parameter on. If the user calls bisect like this

    >bisect ("f",a,b;4,5)

All parameter after the ";" will be passed to function, when it is called

    >y=function(x,args());

User interface

Clearly, EULER is designed to run interactively. The user loads a file containing the functions he needs. The file may inform the user of its content by simply printing some messages with commands like

    >"The content of this file is:",
    >...

Alternatively, the file could contain a comment section.

comment
Any comment!
Even in several lines.
endcomment

Then the user can use the help facility to retrieve further information on the functions, its parameters and so on. He (or she) then calls the particular function with the parameters he desires.

However, it is also possible to run a file as a standalone program. If you start EULER from a shell simply put the file into the command line.

If you wish a standalone application, the user will have to enter data. You can prompt him with

    >data=input("prompt");

The prompt

 prompt? >

will appear and the user may enter any valid EULER expression, even if it uses variables. Errors are catched and force the user to reenter the input. If you wish the user to enter a string, use

    >string=lineinput("prompt");

The string may then be evaluated with

    >data=interpret(string);

and if it does not consist of a valid EULER expression the result is the string "error". Also

    >errorlevel(string)

returns a nonzero number, if there is an error in the string.

Output is printed to screen. All expressions and assignments produce output unless followed by ";". If formated output is wanted, use

    >printf("formatstring",realdata)

The format string obeys the C syntax; e.g., "%15.10f" prints the data on 15 places with 10 digits after decimal dot, and "%20.10e" produces the exponential format. You can concatenate strings with | to longer output in a single line.

Output is surpressed globally with

    >output off;

and

    >output on;

turns the output on again. This is useful if a dump file is defined by

    >dump "filename";

Then all output is echoed into the dump file. The command

    >dump;

turns the dump off. Note that the dump is always appended to the file. Furthermore, that file may not be edited while dump is on! The utility function

    >varwrite(x,"x")

is defined, which writes x in a format readable by EULER on input. If you omit the name "x", the name of x is used automatically. This is done with the help of the function

    >name(x)

which is a string containing the name of x.

    >cls;

clears the screen.

    >clg;

clears the graphics. Also to show graphics to the user, use

    >shg;

Subsequent output will switch back to the text screen.

Finally, an error can be issued with the function

    >error("error text")

Hints

One can make all sorts of mistakes in EULER. This section tries to warn you of the more common ones, most of which the author has some experience with.

As already mentioned, you should not assign to the parameter of a function. This will generally produce strange errors, which are difficult to debug.

The next mistake is to produce matrices with 0 rows or columns. EULER can not do any computation with these matrices. Make sure that every index you use is in range. And use special handling, if there is nothing to do. However, you may generate such matrices for the special purpose of appending vectors to it.

Another subtlety concerns the use of multiple return values. The following simply does not work

    >x=random(1,10); sin(sort(x))

The reason is that sort returns not only the sorted array but also the indices of the sorted elements. This works as if sin was passed two parameters and EULER will not recognize that use of sin. To work around this either assign the sorted array to a variable or put extra brackets around it

    >x=random(1,10); sin((sort(x)))

Also a return statement like

    >return {sort(x),y}

really returns 3 (or more) values! Use

    >return {(sort(x)),y}

One further misfortune results from the use of strings as functions, like in

    >function test(f,x)
    >    return f(x*x)
    >endfunction
    >test("sin",4)

This works well as long as there is no function by the name of "f". If there is, this function is called rather than the sine function. The only way to avoid this is to use really strange names for function parameters. I prefer "test(ffunction,x)" and used it throughout UTIL.

Finally, I like to stress that the user defined functions are serached before the biult-in functions. If you want to call the built-in function explicitely, you can prepend it with an underscore "_". euler-1.61.0/docs/reference/about.html0000644000175000001440000000504407434665072016462 0ustar ericusers untitled

About Euler

Disclaimer

I will not take responsibility for any damage EULER does to your data, files or computer, or any other damage. You use EULER on your own risk. Euler is freeware and may be distributed according to the GNU general public license.

EULER

EULER is a program for quick and interactive computations with real and complex numbers, matrices, or with intervals. EULER can draw functions in two and three dimensions. It contains a programming language.

In general, EULER is a numerical matrix system. However, EULER is not a MatLab clone, but very similar to this program.

However, it should be stressed that EULER is not a computer algebra program.

The most recent version will be available on mathsrv.ku-eichstaett.de in the directory /pub/grothmann by anonymous ftp, or via the homepage of the author.

The Copyright on EULER remains with the program author. The source is available according to the GNU general public license. This license allows you to do whatever you like with Euler or parts of its source code, provided your code is as free as Euler.

For recent information and discussions about Euler, please have a look at the euler message board.

The author

Please, send bug reports and other comments to the address below.

The author is interested in applications of EULER and will collect them. These applications could then be included in program updates. Some interesting applications are included (with extension *.E).

The author wishes anyone success using EULER.

EMail: grothm@ku-eichstaett.de

Visit my hompage for recent news. euler-1.61.0/docs/reference/files.html0000644000175000001440000001063507417015637016451 0ustar ericusers Files and Directories

File Input and Output

Shows


Numerical Data from Files

Often, you have numbers stored in files in a unpredictable format. You can use

    >getvector(N)

to get a vector of these numbers. The function will read over any non-numeric data and will stop after reading N numbers. You can use

    >{v,M}=getvector(N)

to get the vector v and the actually read number of data M. If the vector is a matrix, you will have to resize it with

    >A=redim(v,[n,m])

There is also the utility function

    >A=getmatrix(n,m,filename)

which will do all work for you. If the filename is empty, the function will assume that you already opened a file for reading. Otherwise, it will open and close the file for you. This way, you can read several matrices in a single file. The converse is

    >writematrix(A,filename)

If the filename is not empty, the file will be created (beware!) and closed. Otherwise, you need to open and close the file yourself.

Primitive Input and Output

There are some primitive file input and output routines. The normal method is via dump. However,

    >open("test.dat","w")

will open the file test.dat for writing, erasing it if it exists. The two parameters of open must be strings and work just like fopen. So

    >open("test.dat","r")

opens the file for reading. Opening in binary mode can be achieved with "wb" or "rb". "a" stand for append and will write to the end of the file. You can only open a single file at any time. Opening a second one will close the first one.

    >close()

will close the file again.

    >putchar(c)

puts a character with code c to a binary file. If c is a 1xn real vector, it will put n characters to the file.

    >putword(x)
    >putlongword(x)

Puts a word or a vector of words (long words) to the file in binary format.

    >c=getchar()

reads a character.

    >v=getchar(n)

reads a vector of n characters.

    >x=getword()
    >x=getlongword()

reads a word or long word.

    >x=getword(n)
    >x=getlongword(n)

reads n words (long words) from a binary file.

    >s=getstring(n)

reads a string of length n from a binary file.

You can check for the end of the file with

    >eof()

It will return 1, if the file is completely read.

    >write("string")

is a function, which writes a string to a text file. You can add a newline with

    >write("string"|asc(10))

Directories

The active directory can be changed with

    >cd "path"

where path is the new directory and may include a drive letter, like

    >cd "a:\progs"

The changedir function does the same. It will return the active directory when it is called with "".

The command

    >dir "*.e"

displays all files in the active directory, which fit with the pattern. An empty string fits all files.

The function

    >searchfile("*.e");

returns the first file that fits to the pattern. Further calls of searchfile without any parameters return further files until "" indicates that there are no more fits. euler-1.61.0/docs/reference/introduction.html0000644000175000001440000001100307417015637020056 0ustar ericusers Introduction

Introduction

Shows

Overview

The idea of EULER is a system with the following features

  • Interactive evaluation of numerical expressions with real or complex values, vectors and matrices, including use of variables.
  • Built-in functions that can take vectors as input and are then evaluated for each element of the vector or matrix.
  • Matrix functions.
  • Interval arithmetic for result verification.
  • Exact scalar product.
  • Statistical functions and random numbers.
  • Optimization.
  • 2D- and 3D-plots.
  • A built-in programming language with parameters and local variables.
  • An online help.
  • A tracing feature for the programming language.
  • Possibility to read and write raw numerical data or even binary data from and to files.

Most version are in a notebook style. You can edit old commands and execute them again. Moreover, you can add text to every command. The notebook supports a color scheme to distinguish between commands, text and output.

EULER is an ideal tool for the tasks such as

  • Inspecting and discussing functions of one real or complex variable.
  • Viewing surfaces in parameter representation.
  • Linear algebra and eigenvalue computation.
  • Testing numerical algorithms.
  • Statistical evaluations and Monte Carlo simulations.
  • Solving differential equations numerically.
  • Computing polynomials.
  • Studying interval arithmetic.
  • Examining and generating sound files.

Files and Installation

EULER consists of the following files at least

  • The program code and the on-line help.
  • euler.cfg (is loaded after the start of the program)
  • util.e (in turn loaded from euler.cfg)
  • Several other *.E files, which are loaded from euler.cfg.

Note that there might be a command in euler.cfg to switch directory, so the program files need not be in the same directory. There are some additional files, which help using the program

  • demo.e (a demo file, see the demo section)
  • Other *.e files, which contain sample applications.
  • The Notebook files *.en, which contain sample notebooks.

You should name your EULER program files *.e.

To exit EULER issue the command

    > quit

or close the EULER window.

The Demo

The best way to get a good introduction into EULER is to run the demo. To do that issue the command

    >load demo

Do not enter the prompt ">" and press the Return key. Of course, the file DEMO must be in the active directory. This is usually the progs directory and shoudl be set up automatically. There is also an automatic, non-interactive demo, which you might load with

    >load autodemo

You can learn to program EULER by studying the demo file, of course.

If you are using a notebook version, you should start by loading the welcome.en notebook.

Online EULER Help

You can select Help from the menu bar or press the F1 key to see the help text. Also

    >help function

will show the help text of a function (see "programming EULER"). For user defined functions, this is a very good way to remember their purpose and give some documentation to the user.

For builtin functions and commands, the help command will display the help text from help.txt. This file is loaded at the start of EULER and is ASCII readable. The format is simple and you are welcome to extend this file with your own comments. It does also contain help for brackets, as in

    >help (

There is also this documentation, which explains how all these commands are supposed to work together. euler-1.61.0/docs/reference/Makefile.am0000644000175000001440000000017710263642606016510 0ustar ericusersreferencedir = $(prefix)/share/doc/euler/reference reference_DATA = \ *.gif\ *.html\ *.css EXTRA_DIST = $(reference_DATA) euler-1.61.0/docs/reference/Makefile.in0000644000175000001440000002317610331246752016523 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs/reference DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(referencedir)" referenceDATA_INSTALL = $(INSTALL_DATA) DATA = $(reference_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ referencedir = $(prefix)/share/doc/euler/reference reference_DATA = \ *.gif\ *.html\ *.css EXTRA_DIST = $(reference_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/reference/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-referenceDATA: $(reference_DATA) @$(NORMAL_INSTALL) test -z "$(referencedir)" || $(mkdir_p) "$(DESTDIR)$(referencedir)" @list='$(reference_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(referenceDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(referencedir)/$$f'"; \ $(referenceDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(referencedir)/$$f"; \ done uninstall-referenceDATA: @$(NORMAL_UNINSTALL) @list='$(reference_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(referencedir)/$$f'"; \ rm -f "$(DESTDIR)$(referencedir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(referencedir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-referenceDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-referenceDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-referenceDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am \ uninstall-referenceDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/reference/polynomials.html0000644000175000001440000000667307417015637017724 0ustar ericusers Polynomials

Polynomials

Shows you

Basics

EULER stores a polynomial a+bx+...+cx^n in the form [a,b,...,c]. Note, that this is different from MatLab. It can evaluate a polynomial with Horner's scheme

    >polyval(p,x)

where x can be a matrix, of course. If you want a more exact answer in case of a badly conditioned polynomial, you may use

    >xpolyval(p,x)

You may add an additional maximal number of iterations. This function uses the exact scalar product for a residual iteration. Of course, it is slower that Horner's scheme.

One can multiply polynomials with

    >polymult(p,q)

or add them with

    >polyadd(p,q)

The polynomials need not have the same degree.

    >polydiv(p,q)

divides p by q and returns the multiple values {result,remainder}.

    >polytrunc(p)

truncates a polynomial to its true degree (using epsilon). In UTIL

    >polydif(p)

is defined. It differentiates the polynomial once. To construct a polynomial with prescribed zeros z=[z1,...,zn]

    >polycons(z)

is used. The reverse is obtained with

    >polysolve(p)

This function uses the Bauhuber method, which converges very stably to the zeros. However, there is always the problem with multiple zeros destroying the accuracy (but not the speed of convergence).

Interpolation

Polynomial interpolation can be done with

    >d=interp(t,s)

where t and s are vectors. The result is a polynomial in divided differences (Newton) form, and can be evaluated by

    >interpval(t,d,x)

at x. To transform the Newton form to the usual polynomial form

    >polytrans(t,d)

may be used.

Fast Fourier Transform (FFT)

Interpolation in the roots of unity can be done with the fast Fourier transform

    >p=ifft(s)

Then p(exp(2*pi*i*k/n))=s[k+1], 0<=k<n-1. For maximal speed, n should be a power of 2, or at least have many low order factors. The reverse function evaluates a polynomial at the roots of unity simultanuously

    >s=fft(p)

Note, that polynomials have the lowest coefficient first. Both functions are most often used in computations of trigonometric sums. The example file contains a demonstration.

If A is a matrix

    >fft(A)

will compute the two dimensional Fast Fourier Transform of A. This time, the number of columns and rows of A must be power of 2. ifft(A) returns the inverse. euler-1.61.0/docs/reference/euler_credits.html0000644000175000001440000000050207417015637020170 0ustar ericusers untitled

euler-1.61.0/docs/reference/bezier1.gif0000644000175000001440000001053007417015637016503 0ustar ericusersGIF89abi‘˙˙˙€Ş!ů ,bi˙„Ź©ËíŁś´Ú‹łŢĽű†ˇ@%D ’úť«¸âL×öŤ[©áĘĘň`&"řK•¦¦“GŚć¦ÔŞőú€!‹·¨ĺ‰Á]'rÜ,ť·i4:lÄĘçôzN.eŇü3fö„×ÖĆ&Řóg·ČŘxµŁ—äeY‰Ůu)9eąµ™·ăXjzŠ*˘¸”Úęú [%t´k{‹›«»ËŰëű ,~N~ŽŢažÎŢľÂí/?O_oŹĎ1°ßĎ˙ď/ Ŕ °k.°$ĆZTĂÖÚ.>Űbšßšö6‹ďcăBšeżĆF/žs=őpÄO,qĹ_lńĂ/eŚqÇěńć rÉ$źlrĘ(ݬrË,ż1 +śOV W '¨âňGî˝’b+3ż4Ű(ÁÍtšçÎ@LđĎç-ôĐěleta$ mąw5ŔÄJMNWU=ÁťJ?Ít˝Ą–íµ«`M6ÔQăp6łiĺôŇm˛ýv;_ŤÍ°ž–n­ö¨Áv-÷Ü}g3ŕď ľvĎ…“w8âţ§Aľř8Ť·ýu u+z·Ŕů:ś¸â™Sc–ăU0ĺç3“úëč¬sŢůéŃüĄúm¤W»Ď˝Ď·űŢŰŽ î´»-;áx+áűňL|ńäŢŔÍ?şnúäM®ĆÝńČGŹúôŢ<™äˇŢA`ĎCţ4„QĎ€Ń=b_»ö˘Ň-dé ·»®ă“Ď=ó‰Îp\sŢ˙Č?f8~ ¨ÚŽč÷=ĘĐsXűŘŚ°Wř ź˛ÇXđ‚Ld¨ś –Źyô  _xąî•p'Ü K¦ýnB0ž gx É 0€Ë¸= Ň@2#$!G‚%ýˇ­€č\ č˙#"ń‰ľ¸Ěŕ8 ń†I,cÓ§E2r±&9JŁ›çB+î°‡tü × Ű|qYY¤â¨Ä3Ţ1†uÄŁ.ôčĆ7ň…y dxéĂB2‡q#¤$ÉH9N“’˘'IÉŔyň“śüc 3É7HšH• Deüĺ­u•R®äÝ&‰ËX«)śe+)> ě’`„#đj™Ľ+Ě—&!řË_“,°äĄ®eLZ*Ó–ÓĽä#ŮIivÓ{Äf6™y?3R ťůŁ ĚB62—Éóťó¬'=ďiĎ|âsźúŚ'?Ő’ČúÍ.Ž‘C¦ÝŘŮFŚŹŕ)ç Q‚ţFK˘SDhµ)Nßy( ŮKĺ6“iĘebÔŽÇ̨ýćÄQZîŁ+diGjI‹šÔ`ŕtÍĎyK­ą4‚2őg ČŤŽ¦ŃçIcÎƧ@m)I—ÚS‘†T“F]©RkŐ¦Žô7C ž7‘ŞN°~ł¤«ü©VťúT¬fµ˘9ŐhUővÓ®ő¬~,«Z׺ż©t§jbRé×”6°}4(M +FÁć°Lµ«cŰÎť–ĄFTěëŰŘ´>˛X4l‘I#żł_ĺ*TŻÚYÉÖő­—š\ÇJÚČâŔˇĺ©Gő:ŃZ>в‹ŤmjgËŰŢZµ­:$®pÍzWÔú˙v®Ŕ}-lokÜóáv~Á=îrŮÚÜÓrş¬mdXzŘä*÷ş¤tn%Ń*Őč5ťĺu­v·K^đN¶ąžzOYĹ ‰v«ńU©iĹKÖôv—Şß}if…ĘÍţÚ6»0\ďë]öĘ˝˙©‚·úîUŔ>ŞNŰ;Ů͆÷™b°?Ëa ‹UĹćŻ{đ«ŕ×s}˘:¨‰îö®ëśéÜĹ:Đel~zîĘ~řŢ.–˝‡öáČ˝űÚ˙Ó¸ëCńÂb|ŢĹťqľż<ëeGüąÍ“§Üyٶşĺ/ęy­_ňÎŮŠăϸ[ş“S±ŕ9}…-úşçąę3s=ZOňĄŹöŕ[Ő/”ZGoŮóާ97¸ ĺő±8»@ký˝;…Ž÷…¶đjź}IžňmÉ˙VőV+>éZn ?óÜřĚżoßéľň‘wđooý¦?úÜţĄľÇ_ŘËŘţŇE·>űŃżµ‡vĄ…R»—{ő6aÂá|>‡X}Ô”sGg|I7~Lä€s·n%Çr±§{Űb xxbzČ÷€}G“Hţćřv\7÷s˛GxsĄ‚ĂgwČ€Ú‚9Č‚ H€+z«sk\7>Č]G-'rĐ%„GX/Řeď‡Qř%úG}€WŐ“Fě–n8„ĘVzJ¸,˘…LŘóGaHGRřîW‚9F|÷Ç÷–l+dzUČ&''\cřy¸‡~i¸k†j×*5d^xWŔ§/7xřWćö„‚8yLf#-h…%ŐgoHy]X‚uţ±l™ř€ˇogH{śH‰ŁÓfPř\m¶3ôZť‡ů˘n01&‹©Š:Č=›č‰Čµ‰Jó>4pĚRŻ±ŠąÖ"ĄhŠ&X†Î[Ż(ŤZ#Ś“vиo°×hÓ85‡‚h†7–ŚÍ˛ŠD†ŐUňÇ/–¨Ť?s‹쨋7Ž ć†Ý¨\ů?XLC|Ä’}ý¨~úPĚoj3ő¸ɆBçÉŠ€ŘK ,‰h’MâÇm—` ř‘_§fţUféÂ-çŤ=…‰ هx…dffÖdN§xL÷Y‹č‡"É 3éLBp’h–’9”-ů‹Fi˙NW‘ďÄMáhv6XJux‚7Ä…lc‰Ľ¸zy…čpd”9‹c™“ę‡.ů‰PIJ6Uݦ”Ey€Gé0µF—ýk´öjó„—uÉ—©Ö—®Ćh˘•D)•ßwvăđ7eą‹‚Ů~¬rÉ,9‘}ŚQ‡ –F–PfťÔ“”y^d—“)–¤Y™©š\™–3ixô–ŇF•…éH·yšµŮ}˘Ů´ąš`镾™š§é„DÔ6°›ŞÉ–}¨kۦ•p…śş9šż)™˝YŚĽą‡K¸“OyŤIůntgrH…Ĺ)—źtť¨iŤÄůś–—•ĂIž©×Śg–\˙ąXž)v›;ÖN„ŇIžŢ9ťÁ śü.µˇQąť—éźďYx™śYr~˛E‚虆źŃčdÉÓžeéšÝą’îiăů…z|a¨‡úŹÔŮ™]‰bu’ČťŇWźý™ <˘řů^Ž%  ˙9٬™™kć‹- }Şťü©7ÍI5šZ磱÷N^n~Žž®ľÎŢîţ/?O_oŹźŻżĎߏ0 Ŕ <0ˇÂ… 1˘Ä‰+ZĽń˘ĂŤţ;zü¸C $3IrÁČ +C ńć 4bz é˛¦Î-+ôL Ŕ¦1ˇ)N0ÚčĄKs2Őđɨ¨^°Z•Ň[ůaĹőŐ^×c3„•p퇗i#´}ŔvíÎśáóá,1B#"f [,®hbŽ$ÚÝcöĚ(#>5ř#’>b¸cŹKÖ¤“Ů‘şX© •8™dgiřś”ĚÝâZŞĺ•őś™™mŞČŁ›YµgvzŔć9iî˛g1yÎŮĺ–ńQf‰„Öih˘SÚçNź|Îó'ťwrée™ŠęčZş¨ď8Ę ¨şDz¨ś™*餞*ŠśÖçéo÷: ©qŞşęb‚*yé­­šš*žŚ¦Ck1Ĺbb«˙»ćzXˇ”řë¦o‚ě6ÇëNµL[Ş®Ľöúj¦Î>Űi‚˛zŐŽ¶O~ ädăć Ţ»đÂj.š$]»‡ş˛{ gň†«Ůżg ď4ř.s°Č튡 -fG,l¬ä$Ś0eĂ’;ďRŢEą-LłZî‹ć\«IĘ*“Ć9, `ĂnŤÜÂ0DĄlR»ş1W'Ç‚łAďáň 0k .`#Í0L#-ŢĂ CptĆzh‚ĂÓ9]CŐ¨ňŰć»ĂčxÍ;ů;5Y=[›ÇŘW¸]×AÖ+sČHĘňşĚ ˇ»i;ŕőPZŔ˝áŇ^¸·¸J:_Ţdw ‘ŃLAâţ˝0h8™˝ßÚËüx´8î+䤇®ř´‹ěą5řmôé9kcůÎśrůßMËŢô×ÝN·ÉÝT».Ĺ˙ÎMí<ď[|ë3»îEůQ­K3ÝńÄđŽzç'Mqé˘ďÝűęáçBręČ˙˝ N÷ĆČĎüן˙yýÍ‹ ?čé32;ő)+÷łŚ6hC?d$0zŢ žůţ%˝eÂn   Ö5 ˛ĎÖËFj¨ únĘkU²ęuoâË`˙TW1,"dF ÷‡¸Z†/ 迪b… Ô Ç8¤Cd„ć†Ď¨ˇÜ*—Äp|ś ń˙DHĐ…EÜ đľ˝ZĽC„Ot_E*ęŹw*4b ŞFVŚśˇh –‘jg$"3ÄBrN¶č˘G8Eú̎λ‡í׾A¦±-BI`·řĆJAPŽ^„b$•ă•WF4ŽWýⲥnA±PÉ‹¦ÚOČb‘Ť“5Seݰ—«ć#«ĆŕlvŢB ĐŠÔ±;”WĐE^N ˝ěcešTÚę(-·-NEűŘÓÝ˙vŽëĚ-ĘÖŰ; 7_§ýh‹Î ă6uşq$JĐć˘ćŞ)Ń­ćo-áZ:ˇ¤%moCč8”Ć’uÁ­D[T{Ű#˝ÝÂJ|kŞIÜb0ŁŹó[x%Z$ň–wtČĄn}Ďë#«xŔˇ…đ€ áN"ŘŚŹĘě‚ihá<đ×DTQ.…gŰŕ cŽ“Ď[ćáű"Ä «nc)ý¦Ô˝ěUńŠ‹¨Ú –ˇřŤî„w1â'=…Ť'>.ŤźúăŁŘ™Í*·Š\Ţ#ă"Éb ÷´[Z ŻTĘNfĺ‹©  `ůĂ˙ݲŤÉś3Ą°vÇ>Nń{ąPľ2S3†ÎĺĂWÖ,ăĽ]‹Ëţy†ĺI›Ľ];÷8j¤ž‹UjŃĂĘxpwń›+\hN>TŔ•ćń˘mMGĂĎuÚ¤÷B7źąÓ\´IAéĚęXËzĹßá®nű ăúÔ…Ąg çhá’ął¦˛˘1\ëcóqŐ7đ/Ż+‘ęÄ^zĘŔě%±? ĺ'»•î±ő˛!­ ?ŰŮ­Ő´őŚH”8Ńaž/˙˘BÉGăÚ˛¦7ąłŤ`ătäd7¬±Íx+»ŕĆB‰íŤ‰âJ›ŮřF1ÁüyŰž7¬śż]#ÔÖýőąl@<âfÖ6\`ČQßšhx޸0(n´Ź‡%Ç 7ąŻëló=cĺžţ^ů†iiT—'Ľä8ö’Ń]l'ýćK?Ď›žM†oJăBŹrČk,u˘é':Î{®t Ĺöë7 ź^őˇ3]ĺßŢÖą.q¨gÚ©aÝŘ»¸Ź7”ęiG{Ĺ»&se=Źä^—űŤs^ľĎţ§Ź›ßű®öą_!Éo‡{Ý/_ř¸ă}ϊ׼ĎIťëBťwpăŻčĺĂ=óžg=ć÷Uúµ~ö[łúč_.ů˘^‚O9au®ŃôEá„ň/˝q{^Äë§÷qę;>pŮż>÷Ţć=ő…¬wë'żĂ7}Ůw(gŕ/Tłâ'?őG›{ěg=\|ßţL˙nÚő—?üĺ7ţ?ôŻz˛ű¸÷®'ř÷UŐ~î÷~–‡Dň'y7ÓŇ—€ő} Yüç€Í×@'zČ}÷GYO¸€ç‡ů·y(D(‚Ćz¨Ux H/˙×Bب‹!}$Č‚´çµ‡|*8?9(K»5Ńö{¸zF8$…5¨ygp)čŰ„U–•DL8}%hSčkL ę'[€Qc(uGE®–„­\¨…[xu)H`č‚–2†dX†5W2&ř-j¸†Y(Wh†Hk^'řsęq‡x‡ NVř‡m‡ö7‰ŐÇt†X‰g‚cĆ ”‰{ţ8⇑¨€ĄHlhŠo‰ÔV‡4…؉!ä†H‹J2ФxЍ‹’…¬7x¬Č‡mçxś‹Ç°Š6 K©d‰»Č‹Ŕ‡˝(}ż¨‡Á¸ŠXŚÎ Ť€§c˘ŚËř†şřŤÍ8á ‰Q|ˇČ%‹xŤĐŤMutq‹GČŚ©x€8‹ő@űC‡Ô¨$긎ě8ŽŐX‹ŃŤŢŹâ8ŤĎčŚx7xűŽâŹ˙¨` ŮŠ€†‹QyŹů‰¸HަßuŽŮŹ Ů™T:amă§‘é‘ŮŽ @Ë•’-ÇR‚‘&©`ÓQUů’3yô“‚8Ž˙!I‘îhé-;É“=©Ť* ”ĆńjEH“Y)“ Žĺč$ P•ä¦4lbÖ•[ą”öx”´6’ĂXpUW|őWu—v‰—w©—yÉ—{é—}ÉUtů—d•88áK„g”mÉ–DÉ‘.đ•îhRcY ŽÉvąXŢD‰Šą\‰ 9©8-)™Ô;sS‘PMś¦©–ľ']6 Š`™ŁIšśůާ3ü†•E9Ź˝É›Z©–÷´–·ÉŹt"–´‰Ąax"ş©ši©™âčšw$’ˉ›vśČ™ś¬éŠĚą;雿)žŃ™Ś©EĂiv×ůŮ©ť9UŁní|˙ňśćiź¶ąĘŮ‚ĹůěŮžěřž6¦nčYź÷Éť:ť7A™± ™:âź˙  |Ɵۢźhą™ŠźšˇşJ_ŢY) ˇĐ0“šJ š˘ăi +Ş–Í㡚8":˘™Ą s˘(š îöäžcÂWűůLBŁ5jŁB*›DŠ ţž,Ú˘Łů>9j¤Ř¤A(Tę˘OʤĎyˇ[Q:¤é EZĄG ú˘Ą`Š˘lÚ¦ňé’ xi:Okz¦“i†jęMpJwťŮ¤NşˇE$¦ ĘxYa¦wJ>{ˇ.vʧ™ÉĄ»ů˘ÎrĄ2Z¦ş j™ÂH(Ý©˙>Ş˘Ť:”šA“*ĄŮq¨–:qyˇ-vę¦;:źH馱Ęo±Ş§ŠŞ©J…†úŁŹÚ©Kú§‘:´ÚG¬z«µą”ŐâśęŞqJź€ú¦ŐÉB¬ĹZ›ŃzFÓ Şrꬭڥ]BŞIJ¦na«ÔŠ«ĄşOŇŮ­×öĄËŠia+ÓJ®Óđ­š ®„ˇp˝*Şžę¬ě:0óꄬńz© I*đĘ­żŞŻ­™®IăŻÄ9¦x1®[®őŠfíQnřú¬›ŻĽ*- ®őj°+Ża)[ž‹±›˛ă±{z&+˛—ú%K„ęş®MĆŻŽ%ś;âłá7ł»ş±E‹˛˙6ë§;¶łôÚ CűłŮ°´™*µö“ kµkˇI{e<›“'÷´@ky˘eH{˛G›µe+«j¶×ă´_ µk\m«¬ ËŁÍ ¬°µw=ë¶"@lbb+K·Ěj·WëŚyű±MČ·}ë·Së°çY¸F›¶k¶g{Šë˛¸¶¸Ś«¶Ž«·¶wˇ9«­†[ąu ąź«R›Ëąťű¸:Čd‚Ką::¸„+r˙ę\Ş»ş¶đTňe±;ą+şÚ†ąÝy»ą;Ăk‘kÓ»°ËĽdK´’ [Lq$¸kĽş‹şą5g^޵ÚűĽĄűŞ> Ó[˝ÇľshÍëĽsë»Ó5B˝ă[˙Dáľ´»šżË˝ź:»ş&żĂňľđ«ż‰«©›fąř»Á+Ź+"ýëżN# ü˝Đ‰µ|·č۸™+^ ĽŔ lÁu•é»­ĆeŔ™·‚Áś 6!gůŔ ˝ë›żÖ۵_TÂ&|Â=<*Lżő Â/lQË3LĂE?ěÁ¤kżEÁ¦[µKKÄALLL‡yż Ľ<<şP,$@ěÄBLĽž´n¬ÄHÂ4¸łéˇĹ[Ľ(qŇäÂm<ĹLaÂąĆh O&1ÇolÄcĚÂŢ›Ăx6gLÇđÇlĹ=ÚÂnLťČđ¤ČxśÄ+ş…ą2ŕ€ĽČW qá ÉŃÉžüÉÁɡ,ŁLĘ`ʧśĘ¤ĽĘˇÜʡ|ɱ,Ëł\ŚLŁ=§  ˛cËÚó4şü ZC•ŔP6żĚËÄěËdpË/ĽSPhjr Ë)Íx†ĚŰIĽÍĐuÍŃĽÍ')ÍĚ<ÍÜŚÉş†™Í\HŮĚ?Č,ÎăLÍěÜÎ5±ćLŚä\ÍÚ ş¤Îé|ĎŐÍúěĚϬëüĎĆčMpĚĚEPĐ_0ĚoBăĐ =Q]Ě=Í@ŃMŃ–LËíŃ Ň!-Ň#MŇ%mŇ'ŤŇ)­Ň+ÍŇ-íŇĆ[;euler-1.61.0/docs/reference/bezier3.gif0000644000175000001440000000641007417015637016507 0ustar ericusersGIF89a:D‘˙˙˙PÜP€!ů ,:D˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§ÔŞőŠÍj·Ü®÷ ‹ÇdŮ ŚN_Îę¶»Á~Ëßřü޶ă÷b=˙ßĺ8%Hx(U‡¸XĄČře9i$Iyd‰ąÉŁÉůiă:ş#ŕIŠÚršĘš˛Ú KňKë!Z‹kbšË[˛Ű ňLĽ1[Śś0śĚ,±Ü ÝđMŤ0]]}Ť ­˝ÝÜíť ^k­ł˘n©ŽŤŮ~ m¸ł*«ž€Ř^[¬¶±vę_IŔž .ĽęŠéi‘őÍďşéš+$łlŢ‹o˝úŚnÁěr»Í™Ă:°ÁIĺ´H)ĽpŬFĽ/Ăďl8zćë0Č ó[gČĄuě ˇ"ŻĚrË-?g˛}T},đĂŰ|3|ě‚čfT*×lrÎAcĽâ»ŁŚÍĎ@»,4ÓA®§ńĆE;)ÎŰ6˝´ ß(m™áEŤńĐ`“\'ŬvíőOh“mőĹ9cGsÖťť‰44 f<¶ÜžÂ­÷ŐJočnŘ}[ě6ß8+y¶PĂŽ<¸–†ď:4Ô"*Ţ8äţ….řŕ\/Yw2ţ¶­«äN_mkÜQĆô9čşM:é<˙ť6ęŁ[.ׄ´ł tŃBňT-ŢQy{ĺµg~:JŢú.śč¬łŽ¸ÎŤ# ŚŃŚă¨ĽĹş*=†5?}íÍ#¶ŮĚŁž}Đ0sţ-ń0ß9/¦· Ô×#˙zĹşşôţň%¦ŽűččÝÍ>üůézë{Ţüś%şBh%ů+śř —ľUŹy†bŕŮ Ô@űŃĎl Ô^ŕ.x)ŘaÍzeű^÷(ÄĆOwôK—xĐÁŘM¤j ›RűG4 Á|Đ‹ Á5Á Ż@‹küzŘŠµ˝ň!{wBÂ!1J”ŕ­¦˙$Š ‡“ëÄ#ި©+b±lQ¬TśzĐľ'Tń…1$ˇ2¸E˙µKid‚YEîČumt"ŕhPG%°@Äó#‡w°8ĘqŠČ9«§ČĽ1 Źr4#Ą€ČJĽQlG„!đđ·Pbg‘ŚläreBNBІ%Äś$E K‰í “C@egE–‡Ą Ąh™ ď±/†AäŘ—'E`hŇc%C8@D3Tf¬%š9LkŮÎX’łd­ŇD娡Q̦¦v–@oŠkwá” ťůLçu ’ÇęŐ%‹ L¨ žěKÖŠůÍ€VźůĽ‚©ĘĐqŹ;Ş4¤$»X‰6ţÄŤź…%Ű&xL)j´ ŕč LGQ°PzŮIe ŃJx4t3§Ý䕇,d–Ň8•'—ŠŃ;1u¨Ţű!MmjĐ1 UpňkXIłŞQˇÖTM¨*Ż*L'Úr—FÜŰ3ęÖŽć5F‡ă©ć$čׯ†-«ÔTcĆ×Ču­Ň´'˝Hą×ŽÖ|lŢůbIJ”±¦`Íuľ0V6ö:…eTń  jF"˛2ń&Ęc1Ő±˝bě5‚Q’¨±]kcyů´¦Ż­Č-ż ęÂËÖ˙ö±y|YSY[q^Á[[+ÖúîŞŮźµąđiDqµ,® L‡¶ý­“2űĐ”&â»YXčNĎů\á>oŹémh¦ ]c0÷˝ţ$íćFzZBJ5»·%n{GŐW  TĺĹ઒ą…ĎMâĹ`YśÚ‡Yľâ‚tŁŔ¬ “°¦ŻlIüŐüfişD±SQ|b7ń®ˇ-{§°8'V¨Ř=çy}WÚ‚VĹŃ}šşvéĘ™ŘÇ‹ %˘|هV.ľîz˛` C±_貗M;€/çAĘjś$7{Ëä4őXĆÚµ°—ßüĺ0żŮťd&nňV÷Ň4G«ÍZÖ_ĺ ç.×ÁËţ̬ó~Ţ/ąfk~1†0č@ :pĎ”ŃóŘ­ťV¦}ćł!-iAů¦†NÍŞIş6QĎ%Ëeí&-éóÁŇN8ő—Čë_µöKÍn5 ýfYź’jäPĺ‹U÷bo»Ţ5śG=KbŰŃŘň5d–ĚçGآĆ­ť/´6:°ŘîŻ%˙ülhŁŃ&v¬c<Űr+ÚÁčŽó(ľŤTă˛Yă°ŞkoRÜÇ ĎYĂSyŤmGQšT’ó˘P‘<'Ř?Đb•śÖľË,z8+ţ¬‰‡Ň öA9Ů/›ÍýJ.¶­ ‘Ź<ÝqĆ5Ľ7+ЕחŃîţűuld>ó‘GşćF‘m7oßřCď¶DÎí  ÝáÉ!yąĂ‹X57x˝¨7Ĺ‘Ső@G]ę±3mńĽsľ»¨°đú×ŐôPŹťě˘z©™Zy?™žę}9¨ĺΠK}îv'|ÝE \'Ľĺ^]ú˝ť]vşÇZň$ĽŘµ(oź.žÁäŠäĹNyĐŢđ_˝ŐŻqGµóž˙»ĐC˙ě™Çđ¦ôk3oâÄű ·;ěy˛ŹťężNWY•Ű«ż–ýďgÉżň G@ŃĂgßôŞ;Ąwţó'=ű©_~ŰfîwŤzű1ŁůŢ~Ř…_vŞ—źý6ţ#ËŘ `“žô´őţjÂf¶\›ĆNžĂ~í'|s÷~ŃGqú7Č‘s ¦|˙’>ç{Ł·€˝7®€ŃI—S^÷c7®‡r'{ü7~ÜÖt7\ĺZLt€%H~ţ{HyáÇ‚ř:6;–H ě· xx°Ç€é6&[vvZC&)7Uî| u*čéalëÄx••4SXxV8yc}ôPMb {ü~…‡‚ wW‡†ô…`¨ ŘeČW7W‡X Qçv)dxx·˘a«ÇVj8~Ň·‡µvS(dwhzz}‘Wu0gUJÇ…vţȆ¨‡mHrCçs÷‰·}đz€f°t$ŘĄ‹č1)JH(ĄH0Y«ČŠâ÷}:Č‹€”uuĺxÄŔ†ż§D ĚŤ2Š„HwmqhŚé—vÉČ|Ő‡dhŠúÄYŰČŤĘ(}Tč}ď‡SŤ·jË×-9HsÎWnUR›w,ô †uGŠYŘ}ŘmöxOńŹĄ¸Ź řw¬e€÷xlhx„ý][‡aú0|‚‡‹ŕ¨Iź8ÉŹî÷†ţLí莹ŹŢ‘ůć‹Ăĺ)Š™¸Š&U‰ ů}źç’vŤ*ą’ĂŘŠ ™o7‰“9‰„íŚÖ·…1),ˇgx࿆căXŽŹ;É“í–qť•&ą“C * ˇ‚Il…oyR‰•–á•Béa™BI–ĆĄm‹­X–Ő+î’‰t †—49yuůtqů‚€ipŕÄ@Ëh‡i”*BŠ<a‰ ąpFá±mn@‚ R™ $Ö!•[ šGŔ5Ł n˘išř„š©NlÇšżäšŻ’Ň(›­I›µ ›·‰›ł…»‰ ⛂ԔÁůŚ˝IśiśÇ ‚Ęijť™šÎÉśŃ)ťÓIťŐiť×‰ťŮ©ťŰů;euler-1.61.0/docs/reference/bezier4.gif0000644000175000001440000000630407417015637016512 0ustar ericusersGIF89a‘˙˙˙PÜPŞ!ů ,˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§ÔŞőŠÍj·Ü®÷ ‹Çä˛ůŚN«×ě¶ű ŹËçôşýŽĎë÷üľ˙(8HXh'€h¸¨(€‰¸¨§xŕY9ąąpy‘©ąŮ%ę)*9*UÚđ‰‚ęŞ*Äúű‚*«Cak›Ű˛;Ńëó ěŃŮAl„{,!ś±Üdě ˝!]E=hŤ|¦}Ş‚]ÖÜĆ=2ÎöMz^’N©ŐţJN5/>8`…ĎňNgŔ!ţ\ Ś3 ?%a„łOá’dE”x¤ˇŻ?ţ `$˘ÇC6|RWź„ MŽ ¶ÉK4,=şě‘ňÇL35MŘ—b6=,[Ţôshžž>w"KzĹ©˘6ŹŢ‚šE*Ş>j­ÓÉ×.\»‡ŐËŘ-EŤ6}vĘÚ,m«ľ%×ĘÜ+mÝš< "/–˝UúÚý»6-'9u»ŢýŕH¨ÂR ;¶ ů‘`ąF|Šdroúúő 8s­Í Ý °|Ůkča¬‹PnňÚslĚAŐFIň§îŘ©{k}OMnáMwËFů÷ŤŰHŠÂ&~{/ň‰4Ívýl6»‰íĚÎô-»»xęšăy=öńĄÓ'cZţüűWÝ˙×`„iĚť{ňbź2S ČxáŃ#R‚Č :‡ÚZ@^0[aȢ$a-ĽöZţEŕ~'l¨L‰ Ľâr?Ő8ÄŠbřÂť`"jÎáXˇŽÂ9čzîL”ŕ26yä_)Ţ›’%řÚ†@ŽW1ęxŢ4,§¤WńŐČ’“xÉ•—-SRY%qW¶0Ą–±9¦Ź˙č•“+ ’ÉăŤf¦0'™]¦i&Ś_:ÔĐ'Ęc›wŠ0'‹k.Çd˛#¤#|Ž bˇůúA¦šZ™h§fůůéܨj%«ç:`“—^Pä‘5:çę«_>+´®Şk›˙¦šŠâżNzlSiţëźŢ$ÂçšĚRZ)jl&đ+ťŢöZh°¨Uk-~żBbk¸éYG®¸uľŻw¬ÚËŁÓöH,±2ŚJ+$yş{l¸Z.ëk˝ąb¨/®Ôö‹©7šĹ&Ĺění¸ŃrK±Âř2ĽďˇOá.ĹŰÎyńŔ´ŞL.ĄŮ.®{:Ü#ş±2°®¸˛lăĹ×Z)ŔB‡pľ0ióÍG”Ü1ÓÚ˝n"ôVü´ŻÝ–ZîŃéŕoŇzl§Ć6fěmÓ!bčÔ9ë|µŘBŹŞďŰŁr-C׼»bĆ/[ µĎďÚ)wŕůɬ5q–Ě`·łŽąs[{“ ôŤ~#;/ÖţmK9‡× Ů˝B®ĄÓDż+0ŁśuČ›sŢäď|şĆéť~v§Óšntáń­ÎşűÚ+şë‹ŁrxŘ~lyň«Î{ ‰+ĺďc~N3Ł®ë^şŢ±ç®hłÍ;”C™°C˝=Â`Ë{dö%ăÎ0˛k×L÷X.Î÷Őç뎼ˇŹß”Ôíîť?ýíCbHűžój€ş&•o\1ă˝27;`Imxű픀çĹď_´ `wÁ6t›śۇ?CÍh:˙úÝÄŠw˛˘ńOt)¤“ Sh“Ľˇi…,| Mć@ËŹfZ#Xőv“˛¬]0O<ě!ž&FDćh/˛«!úG˙Ârůs0SŞ X·/˘ OD,ăř@4 qŰ3aU7(S»"Áeȶ+ŽÎ~STŁ­ô¸ÇţˇÍ(–žçč=;Ö/lA ˇč4éŤđ~ŽTČ –1‚‘s–AI;ö]nS•Ą ßw46Ĺ “çjâéč-Üî„ă;ß,GxÄ\rémşÖ«Ŕ‘עŃçE?ŽŽ’Ç”dęůKWľ–ŃäUŤäB*‹Š•K[ ń¨<$¦Ňp˘á¤Öt˘z°› ăć«VĘu~Sśâ#§4)L B€z׎đrŮGp&+ž€¤%°ŕX@`Şä‹[@$ł ÄpţVÎc0ÄĄ2ß ˛Čm­ś8—Ż„é9]FÔ ěÔhEkIÉ“ÍsĐ GÚH‘–ôŠ*}ZMĂÉ2Ҭa;k©N<*Q.u¤Î$ź;1úłf6Î\†’ŚK[˝Qş3d™Ô)J7&S¨1szá V–2ŘŕDu¨ěüáőjšĚ¬*ď}…¤¨í¬ÓЧB¨dýA÷I©6í®=čÄDźŠ•®3í–Yó8ĎÂô˘‰U¬?“)M>b Č+c‘ŞŃ‚š’ŹXUk]˝s8Îu°cý¬ÉŠ©CynVŞiő,f#xÉŤľ4b:ęH­h=ľşVw=¦o·´1ÁR¶˛¶]™@Űi[’‚˙p·Ę]Ü*e˘Š4 ĄĐ´kcëĐă.“şĚUŕE ;Zé€î»i_xÝćÎ3§VĹĄą$»ÉŽ:ŕTĎ2¦L»ÜŢŢtŻżťdsŔ;[ńNרý[C§Űîşí¸ŹűŻćÂ+ŕkvçÝÖeW»VJ‘j"ôjtËó€[öÓ·ýĺ­cU«^·‰ŘUuś,Ňq;ufrżHmmr1|bS2髉hüÎîÖ` F±‘?žöŘ6?.r*'Ő^ ßÇŻífh'Ü;KÁ©Ąr•HCýxĚĚ,ü â&3tŽ‹28mÜÂţŠë˙᢮ýîn†ÜWżŚD—zŐďÚ|§O č>,Č•x¸—ůěÎOĐĎňČ_ýôwţ0µ°-I/żĎüôţë}Z€îaYz‡iř}x}L—ŠÁ1ŢWlyž§Dě'~ H$§wtÖ#7Xuo€Ž7É—0}‡‚J‚ řP‘(véwoĂ&7v_rő.8đç{Hws«Ôb8´ s‘÷g˙÷C6‚U<‡€^ç~q˛Ŕd—h0…JŘ~ő (")¨Nx„n!YB(+ç4{^8>řFKh©ŔvW†i¨†Kdžm8#— kO8¸~u«AGmV‚ť‡…„s‰˘!*X‰{ţř9ä‡Ç€F÷…sř„4ŠŐ€uű&‡Qظ‰ŇŠyŘ1H8˛8‹´{G¸}#&Š,¸‹´8‰őguĄ×O{˛ŠĂČu“H‰ţ÷‹ŔhcȌ榻çHq-ˇIv¸Š@u/§ŤŰ¨/ËXŤž lu‚)ŘWŽ[xŽÄ8_cG¦řÝŹxáŤÎ&ď(ŚůűRÇ⏡× U/y‰ ©{EŇ É©{¶`‘“P|4€‘YĂĄ‰‰¤Ő"ą™.i’î`‡±‘‘’/ňŹ+ )ÓDŤ4yˇ’8y’vă’<© ţâ /y1y ! ”śÓa” °“IY7?Ň”Nů”r“RY,OR’VY „ń D©•K)G^©•ÍŘ U9–:ˇ— –gi Nl9 3ń–p—’•t™1—x™ď°—|Ů—°–€)‰qEŮ@ `yhIs‹]9ŽIf)™Y™—‰™™©™›É™ťé™ź šˇ)šŁIšĄiš§‰š©©š«Éš­éšSP;euler-1.61.0/docs/reference/eulerdoc.html0000644000175000001440000000121607417015637017144 0ustar ericusers About Euler <BODY> <P>What? No Frames?</P> <P>Try <A HREF="euler_links.html">this file</A> or get a newer Browser. </BODY> euler-1.61.0/docs/reference/back.gif0000644000175000001440000000404407417015637016045 0ustar ericusersGIF89aÝş÷333fff™™™ĚĚĚččč˙˙˙™fff33Ě™™™33ĚffĚ333f™Ě˙˙33˙ff˙™™˙ĚĚ˙3Ě3˙f3Ěf3™3˙™f˙f™f3Ě™ff3Ěf˙™3˙Ě™˙™Ě™3™f˙ĚfĚ™˙Ě3˙Ě™™fff3ĚĚ™™™3ĚĚfĚĚ333ff™™ĚĚ˙˙˙˙3˙˙f˙˙™˙˙ĚĚ˙™ĚĚ˙3™Ě3f™Ě˙f™˙f™3™Ěf3ffĚ™˙3Ě˙™f˙fĚ33™™˙f3Ěf˙33˙f™f3f3™Ě™3™3fĚf3Ě33f™Ě˙3˙3f˙f™˙™Ě˙Ě˙3Ě33˙f3Ěf™3f˙™˙f3™ffĚ™f3Ěf3˙™™˙Ě˙™3Ě™™ff˙ĚĚ™3˙Ě˙Ěf™™3ff™ĚĚ3™™fĚĚ3ĚĚ33ff™™ĚĚ˙˙3˙˙f˙˙™˙˙Ě˙˙Ě˙™Ě3Ě˙3™Ěf™fĚ˙™˙3f™f™Ě3ffĚ3™˙™Ě˙f˙3fĚ3™f™˙3Ě3f˙3˙ff™33f™™Ě33™ffĚ33Ě3f™Ě˙33˙ff˙™™˙ĚĚ˙3˙3Ěf3˙f3Ě3™™f˙f˙f3™™fĚ3ffĚ™3˙Ě™˙™˙™3Ěf™Ěf˙™ĚĚ3˙Ě˙™f™f3f̙̙3™ĚfĚĚ3Ě33ff™™ĚĚ˙˙˙3˙˙f˙˙™˙˙Ě˙˙ĚĚ™˙3ĚĚ3™™f˙fĚ˙™™3fĚf™f3Ěf˙3™˙™Ě˙fĚ3f™3˙f™Ě3˙3f˙3˙˙˙!ů,Ýş˙ H° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠI˛¤É“(SŞ\ɲĄË—0cĘśIł¦Í›8sęÜÉł§Ďź@ J´¨ŃŁH“*]Ę”f§P›Jĺ 5ęÔ«7źbÝŠS+ׯ3˝‚ëR,Ůł)͢]KR-Ű·ÝÂť›±€»tóÖ˝‹WŻß‰U˙ ލŐnßÁV=ś¸ńŔŔŚ7ŽYrâ–3/Îl™˛ÁĘśßb&xth˛O;6,oé֪ᚎí—őÝŰ·]ÓŤ[wďÝŔoőýZx^ßĆ“+_ÎĽąsrźsí»YúW·Ő­KťťZűRąŚ­z˙?Ę˝´řńBÍFĆ>}WŇ +GwźpďöôcbŢź;wqüů•[¸HžÓ¦ |5¸ ‚"qRř|Ęa†é=ř ‡CYX`a:˘~mxbH$š¸bz}ř›kČ˝Xh%§˘Ť,R‡z ň¨źnë)&dX>’Vă‘H>Vá€LÖÔÝgQÚä•U:µXxYjŮb—Vîw0m™™7n$höh¦™k*”d›˝©ć|t…‰cć‰$źxúą„FGcꂞxˇ“N™hKŕú(E¬E¸ž¤“ăCćí)ažňę§.DÝś1bJŞ’ĄB‰ášbť˙şŞC˛Ćéęcµ¦:«©›2š+ŤŻzĄę¤Ł}¶ŕ­ŠŐ:¬ E.ËhkĘŽ ¦Ź*ţ×)´Č’*l|FBvčł»™¬¨%†«Q¬‹¶jźąXfŰPqĄÂ.wŻĆ[oŻîf (ąşŮž÷˛Ë%¸ňŢ×/ą;š¨łďÖ;pľmş-ÁřŞË.·ľR&ŢĂ­\0łK»qĹWĽ0´¨Ć—Ç[l ť0ź‰-Ĺ?vWrŔĎĹ,±Î±Ú†«˝8ŁŚî˝ŇJVťÎ˛ęŞZE Íoб©é4tK™2vĽN Üy sz§yđµçs¶`g˝›°†:ü&Dš2&»¬™i‘¶}‘§c¶¬nѲm˙Ř5CŁZúlËXGŤÝbĂYóŻr&›ňŢ|Ż%iµ˙§ßăÂĆt»§mŐŃq+ÉđÝó=n÷eśw\áĘuď|ş×´2=±fÎ0Žrb:ňĚ?ťúĂ·łÝ»Ęâ*m¬­rëĄ÷©ĹZÜç땺 {ćG>ó_ n]Żă Ż|‹oé`y§îvĺfl>Ž /oýwµŁ±E¸SŹńđŰŻvĽ¨şÖn6¨!kůćÂ>cMNq ˘źîÖ·żÎŘMfÉ3 €÷8ŐĹmtg‘čÁ|•‡ČkÚ˙´F>ÝĄŤ{‰s”‰¶Ó˝Ź)x“źč¤v>˝đ_ÝZmdčżĹŮ0wüŁß˙'cłΰy± bť†H8ń iřK Ań]¬…ů›ŕďćőCŔ py’ŕ.Č@/’QŚ+DVťşâU {SěWóָƓ•QdŮËŁĆČvÇ!q‰ˇĂżÄôĄ*"HfuĽ›ˇÄĂi/{[ä^Ф=đR’‘śëhÉ3¶ŃOŹ„d'«‡IbmN’őĂ™Ń86R~±”»z&G É+~n–¸Ľ˘Ę wIXęrlâ*ŐľRS[ł Ú15)K_ţR"·tć3¨eNsjÖĽ&0µÉÍnzó›ŕ §8ÇIÎršóśčL§:×ÉÎvşóťđڧ<çIĎzÚóžŗ̌>ź;euler-1.61.0/docs/reference/euler.css0000644000175000001440000000124507417015637016304 0ustar ericusers/*VPDbURL{file:///E|/euler/docs/euler.vpp}*/ P { Margin-Left : 10% ; Margin-Right : 10% } P.NotNarrowed { Margin-Bottom : 0px ; Margin-Top : 0px ; Margin-Left : 0px ; Margin-Right : 0px } H1 { Text-Align : Right } H2 { Text-Align : Left } H3 { Text-Align : Left } PRE { Margin-Left : 15% ; Font-Family : Courier New, Courier } OL { Margin-Left : 10% } UL { Margin-Left : 10% } BODY { Font-Family : Arial, Helvetica ; Background-Image : url(back.gif) } :link { Color : #993300 } :active { Color : #993300 } :visited { Color : #663300 } TT { Font-Family : Courier New, Courier } euler-1.61.0/docs/reference/intervall.html0000644000175000001440000001705507417015637017352 0ustar ericusers Inervall Arithmetic

Interval Arithmetic and Exact Computation

You learn how to do

Interval Arithmetic

EULER can do interval arithmetic. Intervals are number ranges instead of single numbers. Intervals are entered in the form

    >~a,b~

or

    >interval(a,b)

which generates the closed interval [a,b], whenever a and b are two reals or real vectors. If a matrix contains an interval, the matrix will become an interval matrix. Complex intervals are not implemented.

You may also use the notation

    >~x~

if x is a real or a real matrix. In this case, EULER computes a small interval with non-empty interior, which contains x. Thus ~x,x~ is different from ~x~!

If x is alread of interval type, ~x~ will be identical to x.

You can do all basic and most other operations on intervals. E.g.,

   >~1,2~ * ~2,3~

is the interval of all s*t, where s in [1,2] and t in [2,3]. Thus [2,6]. An operation on one or several intervals results in an interval, which is guaranteed to contain all the possible results, if the operations is performed on all possible members of the intervals.

Some operations do not give the smallest possible interval. I traded speed for accuracy (e.g. sin and cos). However, they will give reasonable intervals for small input intervals. Some other functions do not work for interval input.

Special functions are

   >left(x)

and

   >right(x)

which give the right and left end of an interval.

   >middle(x)

is its middle point and

   >diameter(x)

its diameter. To compute the diameter of an interval vector, use

   >sqrt(sum(diameter(x)^2))

The function

   >expand(x,f)

will expand an interval x, such that the diameter becomes f times bigger. If x is not an interval and real, it will produce an interval with midpoint x and diameter 2*f.

You can, check if an interval is contained in another interval, using

   >x << y

This will return true (1), if the interval x is properly contained in the interval y.

   >x <<= y

tests for proper containment or equality.

You can intersect two intervals with

   >x && y

unless the intersection is empty. This would yield an error. The function

   >intersects(x,y)

tests for empty intersection. An interval containing the union of x and y is constructed with

   >x || y

Exact Scalar Product

Sometimes it is necessary to compute with higher accuracy. E.g., the solution of a linear system A.x=b can be improved by computing the residuum r=A.x-b and iterating with x=x-A\r. However, this will work only if the residuum is computed with higher accuracy. You can do this in Euler with

    >r=residuum(A,x,b)

The result is exact up to the last digit. Just enter 0 for b, if you just want A.x.

The computation is done using a long accumulator. This is about 10 times slower than A.x-b. You can access the accumulator (two of them for complex values and intervals) directly with

    >accuload(v)

for any vector v. This will compute the exact value of sum(v). The accumulator is not cleared afterwards. You can add another vector with

    >accuadd(v)

Likewise,

    >accuload(v,w); accuadd(v1,w1),

will compute the scalar product of v and w and the scalar product of v1 and w1. These functions return the last value of the accumulator. You can transfer the complete accumulator into a vector with

    >h=accu();

(or accure, accuim, accua, accub for complex values and intervals). Then sum(h) is the value of the accumulator.

Exact Solutions

There are several functions, which use the exact scalar product. Most are parallel to the less exact but faster counterparts. These functions are explained in the corresponding sections.

E.g., the function

    >xlgs(A,b)

produces an exact solution of the system Ax=b. You may add an additional maximal number of iterations.

Guaranteed Inclusions

Euler provides some interval procedures, which produce guaranteed inclusions. The underlying algorithms may be found in the work of Rump, Alefeld, Herzberger and Moore. Please refer to the mathematical literature for more information.

    >y=idgl("f",x,y0);

y is then an inclusion of the solution of the differential equation y'=f(x,y). f must be an EULER function with two arguments like

    function f (x,y)
        return x*y;
    endfunction

The parameter x of idgl is a vector of grid points, where the solution is to be computed. The accuracy will depend on the step sizes in x. y0 is a start value at x[1]. The result y is a vector of interval values containing the solution. The function will work in several dimensions.

    >x=ilgs(A,b);
    >x=ilgs(A,b,R);

This is a linear system solver, producing an inclusion of the solution of Ax=b. You may provide a matrix R, which is close to the inverse of A. The procedure may fail.

    >iinv(A);

This produces an inclusion of the inverse of A.

    >ipolyval(p,t)

This computes an inclusion of the value of the polynomial p at t. t may be a vector as usual.

    >inewton("f","f1",~a,b~)

This is the interval Newton method. f must be a function and f1 its derivative. ~a,b~ is a starting interval, which must contain a zero. If it does not contain a zero, there will most probably occur an empty intersection. If the starting interval is replaced by a non-interval real number, the function calls the Newton method and expands the result to an interval, which is taken as a start interval. Of course, f1 must not be zero in ~a,b~. The function returns the inclusion interval and a flag, which is nonzero if the interval is a verified solution.

This function accepts expressions instead of functions. E.g.

    >inewton("x^2-2","2*x",~1,2~);

will compute an inclusion of sqrt(2).

    >newton2("f","f1",x);
    >inewton2("f","f1",x);

newton2 is the Newton method for several dimensions. f must be a function, which computes a 1xn vector f(x) from a 1xn vector x. f1(x) must procude the Jacobian matrix at x. inewton does the same, but produces an interval inclusion. The start interval vector x must contain a solution. euler-1.61.0/docs/reference/logo.gif0000644000175000001440000000655207417015637016113 0ustar ericusersGIF89aŢ÷€’€’ހޒŞÁÁÁÉÉÉŞŰ˙IŞI˙mmUmŞm˙$’U$Ş’˙¶¶U¶Ş¶˙ŰŰUŰŞŰ˙˙ŰŞ˙U˙Ş˙˙Ş++U+Ş+˙+$+$U+$Ş+$˙+I+IU+IŞ+I˙+m+mU+mŞ+m˙+’+’U+’Ş+’˙+¶+¶U+¶Ş+¶˙+Ű+ŰU+ŰŞ+Ű˙+˙+˙U+˙Ş+˙˙UUUUŞU˙U$U$UU$ŞU$˙UIUIUUIŞUI˙UmUmUUmŞUm˙U’U’UU’ŞU’˙U¶U¶UU¶ŞU¶˙UŰUŰUUŰŞUŰ˙U˙U˙UU˙ŞU˙˙U€U$U€˙€$€$U€$Ş€$˙€I€IU€IŞ€I˙€m€mU€mŞ€m˙'''...666>>>FFFMMMUUU]]]dddlllttt|||˙Ű‹‹‹“““›››˙¶˙ŞŞŞ˛˛˛ąąą$˙IŃŃŃŘŘŘŕŕŕčččđđđ˙¶Ş˙Ű˙€’U€’Ş€’˙€¶€¶U€¶Ş€¶˙€Ű€ŰU€ŰŞ€Ű˙€˙€˙U€˙Ş€˙˙ŞŞUŞŞŞ˙Ş$Ş$UŞ$ŞŞ$˙ŞIŞIUŞIŞŞI˙ŞmŞmUŞmŞŞm˙Ş’Ş’UŞ’ŞŞ’˙޶޶UŞ¶ŞŞ¶˙ŞŰŞŰUŞŰŞIUŞ˙Ş˙UŞ˙ŞŞ˙˙ŐŐUŐŞŐ˙Ő$Ő$UŐ$ŞŐ$˙ŐIŐIUŐIŞŐI˙ŐmŐmUŐmŞŐm˙Ő’Ő’UŐ’ŞŐ’˙Ő¶Ő¶UŐ¶ŞŐ¶˙ŐŰŐŰUŐŰŞŐŰ˙Ő˙Ő˙UŐ˙ŞŐ˙˙˙ŰU˙U˙Ş˙˙U˙$˙$U˙$Ş˙$˙˙I˙IU˙IŞ˙I˙˙m˙mU˙mŞ˙m˙˙’˙’U˙’Ş˙’˙˙¶˙¶U÷÷÷˘˘˘˙˙˙˙˙˙˙˙˙˙˙˙!ů˙,Ţ@ţ˙ H° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠI˛¤É“(SŞ\É2dľ—0cĘ”™0ßż—-sśS§ĎźmRÄ 4ŁĐ˘ Ź:Ŕ©DĄAť>•ęę@¦Xł  ŃŞEŻ\‚ ;ő}LŃžMËv+Ů…c'Ć}kp.]†vŻ6˝{0ŻCż|o– €Ă‡^śř0VÇ-ăüP2eÉZ33mڏłÎ'-‹ĄÜ•ôßšoÖ T4B×a#MM;µiŮuMGÄÍŐoíĎYŻŢ,<ôFŢ‘KŚócÎźGw>ť¸cŕn Ő=”űë‡ÍĄţGO~şóÚčł×Ô¨üňěŕÂi›Ż>űjěŐ›“ßľýÔăÁĹžw_}”ž|ăńgÝĎĹgŢsťńg_~ Š—źz )מn d…F¨ V "há…˘Xźp'ö7Ţ|2ÓvFU•k ćA)ęw`‹.ľčßăĺó`Y5Ňa‡:‘H$ABc}i!k}%ůQZ6 !•` `Ą”1Ů%G3žBđa¨ć›7q geÎi'{ir–™wöů•ś*Aŧź„ć”çTŞč˘Ś6ęčŁF*餔VJOŇ´h\‡Ú™hW™jZRf%…ję©®hb݆<˘‚ ·\Ýi;Ú!Ë.\a:–72Ś ~{ˇÉ*‡řđEőiĎ+’ bŇL‹"Ď;Gă~(.8ť‘ץiŃHáč[;OéňĆRŽ˝1Ö0fhéNZŻÍî}0†i¶tcF nA\űúµţ۵ůYÝrśwĄťňÍvť†ë=řHś&niáNYµ¸ăjB^Ż`”g®ä{kîůç ‡.ú褗nú騧®úꬷîzX¨¦JkۧÇ>ÓëIfů­CĹ®©¤ <ąŞŰž)–ÁĽŞş ŕ«ňĎ÷iđË‹ý¸ĽjĄÖĽŐCÜ=ś6ĺ|ýĺă•Zčgĺę÷Dw9ü– iV~űąJŹšü—âZ0öŕ)ďż;šťőÜÇżĄäL3»Ö÷7'fAçΊ`ńĄżĘ «” ±,ď1p]ăuôµ—e-Đ‚ćk‰hs¬‚Đ‚ý"[năBRĺ€8ä^lČwÁfŹ-ţhq‚hB6đ…*TšÍüu±âLĚ=$ŕRXT2Fč:>űµc/$.$†ÓĎĹĐŁ0ý ‰~ł!Chf±0fěŤRŰŁ$ćü§b.bc4†°ŽˇqSÜɡßXäƆŤŚŹ{DÜÓ¨’ž9 g’ˇ#űµ-Ş’lÓă‡V GÍ’7Ë"Çł&Rgi?ŇÔJ3F™I“yŚ›!9JúL˛[¦ e.˙%4EVä}áŇHŘFDĄ•P–JZŹG¬ˇ’ešcˇĹĚG’iO»c-‹™Íf‰Ń™O’Ú~%ŞŃL*V€˛&2™ĆN»ŮŚlbÓć“`YĄ8r1RŐţćżÎxbrŹëü[Účô¸{&pţĽ’ ń¨0+ĹČ—”šKçćôH„´lq•˛”8ˇL4qÁ©ćEŁŃîs»+Ý [VŇęłF)­Ć`ôR{}”ry©)ábęIâ®T7M!'j´ &ď;DĺQ»ĆѤ6p©ĺ›SĎ ŐétŞEMć°šşžLćŞ\­NŔÖ˛šő¬hM«Z×ĘÖ¶şő­pŤ«\çJ׺Úő®xÍ«^÷şĄPńő6ĆăénvRŐżâ-°…ej_ČZ<ÄjÎ/‰Íb;MąPf‡=U^y#Ř·ĚĘwNˇŢ_3ŮËJ59¨ĘVJëXčŐ]]Ľţ_ÖňWÁŁÚ5ó[¤{§B´đîµÉámüČ!×÷¶lÂűt»Űň¨6ż•&l‘kőY·„Ç5" ů×–ôĄo¶´îh…µ–µx·-ąídtS¨Łôo˝HĚĚw±k[éŽ÷űm}[éŢú­Q‡űenvńk@‡×ľ÷Ş †8Ŕ>ü/žEß`j·ż0‡˝ĺ7€yż!¦ăˇĄAƤÂďŘ"żĚśů¦nhÉ(I„‹ůEp«xÍţ´l6đ Lf9y'-“¦Ł ÍAO(‰ŰÔ%Vś-#Ů2˝?¸DeB“Śq›ß\$?ź5Ň®©Î#_r’ŕö3źÖę­ťŕIz°·ěmv3¤—´µŘ—µ‡’ŢóĚ{^Ę–Łl™%&Ôp|_ëYű,=.O•UtéWLĺ3]nöw/Ú•ń’uŮl U-jŔöĘ”9ńüÔí(OĽÉxĆÍn†óńžWůاPŞG3ă•U»ă•ÍNžł<ňdwŘcőecçvyÎĽśöx–[nUk§:©>7ż?'ł-çé%Ą«¦+“Ţž§x?×ů#U ”č 2íűţęä_·łőŘ9&÷#ń’_Ô0€;ĽîńDĹ—úĹź[”ęĆp¤FÔ(ڵhü÷˙'!ߤ>…O˝CîwLăw~răPxy÷*Ô ú÷yC÷vé|*gxç´$wvň7H-uq ç6cYgŇt|/‚ötR†Ł&¸(Ř´yň—,cÚw-1X)€§‚âqŘ—˛|yú„I&„´B„†c„×%wŁ„ËŃY˘“ôWMV‡;TRzxR¨T_(@óćV[Ř€ŘVevgHWi¨oËgX„†—pL\X‡bq‡”fzřK|¸i~ř‡Ç\ö†Q„č†H-t:¨O’ă›¶ď•;’8…”(pYx‰˝‘‰#(‡؆Šś(ЧGŠś¨5–áQ©¸)e¨ŘŠO!'ž(‹Je‹¸‹ş¸‹;euler-1.61.0/docs/reference/statistics.html0000644000175000001440000002006707417015637017541 0ustar ericusers Statistics

Statistical functions

Explains

Basic Distributions

EULER supports statistical functions, such as distribution integrals and random variables.

First of all,

    >random(N,M)

(or, as usual, random([N,M])) generates an NxM random matrix with uniformly distributed values in [0,1]. The function

    >normal(N,M)

returns normally distributed random variables with mean value 0 and standart deviation 1. You should scale the function for other mean values or deviations.

You can set a seed for the random number generators with seed(x), where x is in (0,1). There are also faster versions, using the doubtful generator of C (fastnormal, fastrandom), which are about two times faster.

    >shuffle(v)

shuffles the vector v (1xN vector) randomly.

A function for the mean value or the standard deviation is implemented, but it can easily defined in EULER. E.g,

    >m=sum(x)/cols(x)

is the mean value of the vector x. However, there are the functions mean, dev, and meandev. The latter returns the mean value and the deviation simultanuously.

Some distributions are implemented.

    >normaldis(x)

returns the probability of a normally distributed random variable being less than x.

    >invnormaldis(p)

is the inverse to the above function. These functions are not fully accurate. However, the accuracy is enough for practical purposes and improved versions are contained in the file "xdis.e".

Another distribution is

    >tdis(x,n)

It the T-distrution of x with n degrees of freedom; i.e., the probability that n the sum of normally distributed random variables scaled with their mean value and standart deviation are less than x.

    >invtdis(p,n)

returns the inverse of this function.

    >chidis(x,n)

returns the chi^2 distribution; i.e., the distribution of the sum of the squares n normally distributed random variables.

    >fdis(x,n,m)

returns the f-distribution with n and m degrees of freedom.

Other functions have been mentioned above, like bin, fak, count, etc., which may be useful for statistical purposes.

There is also the gamma function and the incomplete gamma function

    >gamma(x)
    >gamma(x,a)

and the incomplete gamma function. There is also the Beta function and its incomplete counterpart

    >beta(a,b)
    >beta(x,a,b)

as well as the Bessel functions of the first and second kind besselj, bessely and the modified Bessel functions of the first and second kind besseli, besselk

    >besselj(x,a)

where a is the order. The parameter x must be positive, and the order must be non-negative.

A discrete distribution is the binomial distribution

    >binsum(i,n,p)

which returns the probability of I or less hits in N trials, if the chance for each hit is p. And

    >hypergeomsum(i1,n1,i,n)

returns the probablitly of i1 or less hits, if you choose n1 balls from a bowl of n balls, containing I good choices.

    >normalsum(i,n,p)

is a fast approximation of binsum for large n and medium p, and

    >invbinsum(x,n,p)

is the inverse of binsum. There is also a special function to plot ranges of data in a histogram style. Assume you have bounds of ranges r(1),...,r(n+1) and frequencies f(1),...,f(n). You may use

    >xplotrange(r,v)

to plot these data.

Statistical Analysis

First of all, we show how to read data from a file. Suppose the file test.dat contains an unknown number (less than 1000) of data, separated by any non-digit characters. Then you can read the data with

    >open("test.dat","r"); {a,n}=getvector(1000); close();
    >a=a[1:n];

The utility function

    >A=getmatrix(n,m,filename");

reads a complete nxm matrix from the file, opening and closing the file properly. If the filename is empty, it works like getvector, and the user has to open and close the file himself.

To write a vector a to the file, you can use

    >open("test.dat","w"); printformat(a'); close();

This will print the data formatted with the %g format of C. To get a longer output, use printformat with an additional parameter "%30.15f".

You will have to load the statist.e file for most of the functions described here. This is done with the command

    >load statist

The first function computes the mean value

    >mean(x)
    >mean(x,f)

where x is a row vector of data and f are optional frequencies for the data (multiplicities). Correspondingly,

    >dev(x)
    >dev(x,f)

computes the standard deviation of a measured sample x. Having computed these values, you may test for a specific mean value, using the Student T-test

    >ttest(m,d,n,mu)

where the mean m and the deviation d are measured and tested against having the mean mu. N is the number of data. This function returns the probablility, that the true mean value is mu or more (assuming mu>m). I.e., the error you make, if you reject the hypothesis that the measurement has mean mu or more. Note, that the data must be normally distributed for this test to make sense. To make a two sided test, you have to check with m=0 and use the doubled error probability. You may also test several samples of normally distributed data for equal mean with

    >varanalysis(x,y,z,...)

where all parameters are row vectors. A small answer means, that you have a low error, if you reject the equal mean. Assume, you have measurements, which you assume to obey a discrete probability p. Then

    >chitest(x,p)

returns the error that you make, if you reject that x obeys the distribution p. Note, that you have to normalize both values before you use this test. E.g., assume you have 600 dice throws with certain results. Test for a false dice with

    >chitest([90,103,114,101,103,89],dup(100,6)')

This will again return the error probability to reject the hypothesis of a correct dice. Small results mean a false dice. Another chi^2 test is the table test for dependence of the entries from the rows.

    >tabletest(A)

will return the error that you make if you assume that the entries of A depend on the rows. The first non-parametric test in this file is the median test, which test two samples for same distribution.

    >mediantest(a,b)

A low answer means, that you may reject the hypothesis of equal distribution. This test uses only the order of data. A sharper test is the rank test

    >ranktest(a,b)

This test uses the sizes of the data to obtain sharper results. To test if a is form a distribution, which has a larger expected value than the distribution of the b, use

    >signtest(a,b)

or, if you want to include the sizes of the differences for a sharper test

    >wilcoxon(a,b)

A special example is the comparison of two medical treatments, done on the same subject. euler-1.61.0/docs/reference/dgl1.gif0000644000175000001440000000745207417015637016002 0ustar ericusersGIF89aYf‘˙˙˙€Ş!ů ,Yf˙„Ź©ËíŁś´Ú‹łŢĽű†02Ây—š°ş¸śÉâŤçú.ąv 8±|@Ă/¸!S)Z«yśDyÔŞőÚPN…KĄ‰Tyżß!´< 3Ëäřýt˘±ôş;–‰Cóş‘g&–ő¶Ç”vÇŘčH±¨ 3D#6¶ŐdRé™ůci)Éů÷xŠšjhęŕçfő ¨J[Ű(gk´›Ă{™ ,N^n~Žž®ľÎŢîţ/?O_oŹźŻż˙ŕ˙0 Ŕ <0ˇÂ… :|1˘Ä‰®€źĆjţ2Vřá±Ń€S#•IŇ$„‘!ő`ÜóYÉ–=Ń´sĄJG9őÄéŕäMAr†Ć<*,§Q KŻüşS'Ϩ ”zhŠ4kŞžX'Śü ¬Ř°dÇš-‹ö¬Ú´l׺m;ŕ­Ü¶tçÚ­‹÷®ŢĽ|ăîý›7.ß®k= a‹u<­óNd§)§&xÚŘAfÄśw`ľJŐge©¤ďô|Ľ™AęάA m9véÄł!#ĽZAîÖĽ1LŢ­8´éѢ…Ű6đvďĺŽű)/.şôéP'~;óí ¬_>ÜřńÚăE{×ţť»úŢÓs@żˇ=ů<č7ŹE0cđëű˙SŹ|Řw_t´QWžfüůÇ`P_~Ä…g d.Ř`†·Qa… Rŕ‡^Ř€fE`‡äI6á ˛HV*žH#îm`˘o-ş(bŹó@â{4iăŤäxA‘7()“®íř#…a8¤zJÎřb–<Âčˇg—MYb•2‰ĺ–\®HY„8ü$Žb6H&•iv)!ťsVńT›Gľéź“eúX§ťxB™Cž` ɧ•n†)č j:ÚčŹé™’‰Ć㤞"§fZ_”b`éĄďdjdĄŹBЦ¨zđj“ŤzA©¦˛óꦠvşë§wŘݡ‹ŢĘZ¬şţŞ% ˙®ú¤2ĘI,L±¦JęŞQFꥵ®$ěžŃr6í±Ëj›m«ă*k·Ş~{Ř´Ô ˘ąŔňz®ąńĄű¬6ŘĘ®8îľëŠMň˘;đ’Ěr ­®Ő/Š!¤Ć0¶ĺÚjÁЧpü6ěÍżklq“łJď¶««#`*÷ĹňĘ.· óË2ÇLóĚ6×L—¸$'멲ő6{rľr¬‘ÇsrF'™4ĐN㻣Dďł´Î×R\1ÖKZAĆHO­ĎŇG?Ř4×eł7˛6zM6ŘůmuÖZĎëëĎ3-ô°n×#öŘ(÷ěóÎ_Ť¶Ú3µ·=}űť7Ď˝ÖM¸ă†ăőĐţ‰cĘCÜ[Kn÷ŕrß«căë^ĎâšB+¸ç›«Nwč®;'5éí~zěś§řă¬3)ۇËníŚW^2|Đ&ď-đë?<ěs,1őÓWu·čŐ:ŻôŃ+X˝őĹ~»ł 3?:÷çxŻy뻯yváŻ//˝Ţę“ăý÷ l őő‡ż ÄĘwÚ»ß7ň§?ŐÄ/{YȦE@ôđ€thźřĘGľ÷ýor°úÝ×&&püăÖĎ7ľ öŹők)XAÔEr3Ě]ňx§4¶í…łŘ@úO˙ÉaÇĂn°v–Ăŕę4hÄđy,‚-L"6–8˙Âx1ŠC|šcÄEđ5ŃŠÖŔbPÂqC'`ÚŘĆýÉŚÍ0ă7ŘE/B1Žćă# çHGe¬ńŽDLáoh<ěáQŚ.Ac ËčŐĽd‹zܣٰ%6*‰Ź”Ćő‡‹4öŃîCd  Ä*e’ťŚĆ'ĎJ^2Ź´Vß4)ÇVşňčą™/qć2ÁürŔ,&1Ý"Ěş$sËĚ uŚWÂ2;mtc5)gŻĹáRЬ#*éG"Ë’łÄá!i;üůĄ_Ňś&'ż+ż$3,ňDŕ+ĄiÚmóŹÔĎĹüI¤T€ł’J(*ygĐEŇP…Rb(:ÇHŤuţJ*ˇëi§;/ŠB×؇@e!Ô~žLd±T1Đr"¬HJęčüzNáíS‹®\˘EąqÓ‹ŠRTěé]|^uOBAo¦#]†KĹy”śę4i¬Ą5iéÔ/uŽź5†RÁ®Z¤t@őěŞëkŃ…US\™‡ŃEŤ@0GĂvĽI–ôG"Öž'„fô–+ĆéŇş)źŞ6Ş-Dmä`Mőtčc95ZčÄú»~íŞ1Ź}Ld+Ű.ÍL¶łűŇěeK,¬˝2găäň [ĎéCÇš•(Čj_F>~r‰µíާ¤Ö®ŐÝe!_­»+>7H‡Í’ułË‘dŽ\Hĺ>šĂ›‹őLô˝oŔ^ăÝTFâ‹_l+Ű›Źo8sKÇďi0Üâ8ĹĹ©OÝqZ(ďˇÂ5nkŽďĐă•Ě_“}ND[%޸ʸLR®ryCţ°g)sYźă'w®±*îÜĆ•ţůÎËĚ•’#§Gw5o;Md–«ÔÜźíđ”›ëőEťćî ş7qžóĺNUȦŰhv Éőqţ$éŮ0»żŃžvÜşÍVwşŽ© ÷¸wnîR÷—Í­Š÷Ľxďo:Ři ř)Gů3dÇÜžźřKůë}Żň/yáPľŞô¸©–ŹţšĘ3ć‚7ä­ř››¤çŰĺ}{÷Dť¶ ˙»ç÷ŰűČ·žp©Ż˝íQA^ÔçŇř«ç{˝ü\K?ěgÂMá˝}űvg^ńŚÜüÖ?/|đ+=üÔTrT|HË;ËÝď6^wîsáNÔ±—ţxbÎĎ|Ĺeů‚]üŵîwň}ňE€Á'{ubtWję×|ÚG{‘µ~Î÷zčzô÷}¸iţ×q޵X2 (€(hx€”q×WsüGVżFlČxđ‚Xö7'č*í‚řÓč€Ë.(„48°DX‚d¦v+§íTnۧ{îÇ{䇄6xhf„Ń7>~1nŐ‚EX űÄJH…U5X~fč{Cs6†á„SA\…r8€Y¸†w†Z†žK†QD÷…gxu:„ŢG‚z¸‡ŠČm«6~?a;µ€˛Ä‡ą·„'ól™lŃ&3ś8mţˇ‰6㉡8Šd±ÝĂ€xyL(…>(7¨MG‡3x.‘¸Űv…Ŕ`#§(‹ŻF…m†I¨Ščfظ؇őµ­o×u!7‹Ď7ŚÉUŚf¶ČH‹Čp%*‹Ť'|2ŤĂ§†ad‹ŐFU×y‡ČŚlč‹ŘsŇh…ÝŘ\ĺhŽ”ŘÉ'čÇzí¨GŹ„ř EŹőUčxŹŐX‡®čŚärye¸uI,g©w˙‡&¸HŮ–Ž9Ť-‡X§(CT‘Žw‰')űG瑱8UŮ'T’¨Â‹Á¸v×"p&i‘ z0“sS’:y‘Ëh‡é%ô¶“˙ĐčP>ů“)”ąÂŤŚ¨’ŽŃbůÔ€ŞČ” ň„áH Ć•F9•Tym˙Čyw•Z‰&A)”!)tď·Ëň^‘áŹ|w–p"ją–(©Wů–‚”âx‰¸“ܧŽUň—ąŠú8”|dłg!‹Ř‚ą–5ą‡—yÉ–/‘ą: Y‡Y©y—2Z—‰™™I‘ÉŽ=6.[ŮuXhŤYG,ţx™FC™\™’m¦O'š)Ž·‰ŔaxŔI–ŚšĂ©6§á–6)šĆśŮ5“8ť€™›Ť—X Ć’ľ Őś—ʉů0_™Ś×ůŠ—ˇb®Öeé‘ŢŮ.p&~ÇĐ7˙ç–čé%—«Ů‹żIžBWčŮRP¨‚’čćŮ—˙äU>÷Ž<韊ŮM°É~™ł ŮŚŞy“ Žú aˇŠ››’P ”F†ň tÉŹáź#ş0o˘-ZtŞ/0Z”ĺéŤçé’`Žôą7˝Ĺ>˙é7ü¨_<ÚŁŠź¸¤MʤOę¤QĘ2>zšö‰ É)šEzś2*’ŁZĘź:•ŘśŻ™Ąăx¦Î9š_šŤeş{UfŹś™Ł)*ˇH:mÚĄɦC¦ @Ą­§R™¦jZź˝HĄŔŁiuđ§©H§VjťÂ¸Ą|š§Dą§’Ú¨Ĺ)¤h:§—Ў˙„ŽGş¨Y©Uj§ ˇŽŠŞśŠĄ\*‹;ş—˘:Ş¤Š§X°¨cĘŞČy {¨”ŻŞ—±ę©dʵ¨‚šŞŤ6¤µV†‡šDF Â*˘–Š«Ć*~Ů~˛é«ě‰«•©łšˇÝş˘ľńréECĘúHG ą Aˇ®Á®íď Ż!Żó:^%Oöúőj×ęŻ˙ ° ľ€[€Č Ž€°u`°Ö ű»Ű Ű â`±:±"°±› { [ " ±!K˛ ˛/đ±Ů°°»˛đ˛‹˛ k˛‹ł9«ł;Ëł=ëł? ´A+´CK´E{­;euler-1.61.0/docs/reference/dgl2.gif0000644000175000001440000000712107417015637015774 0ustar ericusersGIF89aVi‘˙˙˙€Ş!ů ,Vi˙„Ź©ËíŁś´Ú‹łŢĽűf2.Ây”–J†€z–lŻ)Ü îÎ÷ţOkĺ 5˘ĐbĚ:8Ůp aá†ŔŞőŠmé”EäČ 6N_däK÷…jťbs,üH›Ëôw2‹Ďë9ßĘ63FG¨U8¤f87¨Ŕ¸'9IYŃE‚¦9…¦tC冖ŁZ7ĘYąĘúŁęů¨xwhŞöÚşË못úGjÜ[l|Śś¬ĽĚÜěü -=M]m}Ťť­˝ÍÝíý .>N^n~Žž®ľÎŢîţ/?O_oŹźŻżĎßď˙]€ <0ˇÂ… :T8  +ZĽ1ŁĆŤţ;Ü@ťD‰H\RCĘI˛D\вäK—•bR˛) §•xŠ›IčÉq>-ÍŁłGŇKőŃ”fÍ©ŽR°şí)†¨Cła•đő WZŚ5p–,Ő›k„…đvZYµ]˝ĹÝŮöCZ¦önÍ»Ç/T° » Ţz¸®˛» ‘­…Č(‡°|0Ç 8+Ă|´âVž”v!Ú©Ę©KjFúZÁéł{µ=şZm»=¤ŤůöíŐ«†gŘ»»wńŘą“%gˇ5héĐĹV7đśšń Ű›WÉÎň8dşÜŻWé>™°Ją¶˝;źóďřÓÍA_yáhřÉ˙»wľ_xůí qlŮ÷\6Óź^˙¸Ţŕ7śe N¸ś„n-ř_`&č›|j(bUs!˘gµ¸]d-V–á‰FĚŤ<řřâ1ÂÖ€ŹÝ%d‘9Ƨ"ŹĆ$éb¬ ‰GT@˘w”0-™˘‚Nň˘ĺŹR®BĄT|™‰ZP’ŘĺŽ('f6aމ@™X$Ąe{ÍéÚšqzůf{ÜđI'cÄŔY^źUŢťź2 č%˛ ˇA:¶˘J&ăy8˘Řf¨ŤQé.–zJ'†Ł©xzăX§žúŞyv˘­îÝjEK–éŔ¬\vÚ¤xľÖzl˛˙Č.«lłĚ2ű’łŇ>;mµÔ^km¶Řn«m·Ü~ëm¸ŕŽ+nąµňŠ*¨l* ©Ž˘n¶â˘é蚺њdSÂ:šf±=µ‹˝ŁŮe­ünĘî»Dş;ę—Öą#p]g¦ÚÁ®žÉ0±w/ŁđD<ÔÄ%bĽńxZ<_ɦu¬= $˛«›.§*ßi+ËËó2@1_¬ľmîK3® ZłË©ţđ3nJ˘Ś0Ń7÷ŞŇ&ëÓs?M«ů€Đ]J °Ćnţ»î=Yďłő]+Ř  ŻĂ)ďs¶>iŻ­öÔŚş-öŰ+ËM_@uăs÷Óy‡˝(ß #Î1ŕ‰ ľ´ …3…$ŰţU*.ŻŢĽéśžb×3ąÍť wćš_íďp~ľ ëóL^Ôľýjyé“:Ţ×®Çs÷oµ»D»ě2M¶‰şGîÁÖ Ż¬ż?©ęĆ?¸ű;?çő|fĎříVçNgőíL<×ă§ŁľýóT§î&›G'~5ń«ch!o•?2é8‹n{˙ĐŹűá y #ŕU&Ї:)Vę[˙ţ×˝ýEŻ}¬2‹-xÁ Ä;‹ 4żAxŇsĘü*•Á®f$äjˇą^čBdE+†0ĚÖ kHĂâ$;Ôá Ż:)ť° iŐôD8B%qqHˇ Sx8(Â$ó`óŐ˙@ŹuŤŠAâO¸xÄľ)ěJYDÝ9'ŦŃ)`tšţ–HFćUqKm|‘˝Ń’:HŽsś™Ďײµé‘zk Úűľ×ÄŠQŤL¤18HB’S‘Śâ"™H˛˛ar“}ޤ{îě Q‘ś4Ý–ţhERVĚ“źś¤MX9@@Ňpš4ĺ%mKď€ňŻ%*ůH ÖŇ<ĺ!‹7ÉOĄ±—¸[˘-oÉHń1Ś˘ËĄ.—©Ŕf3•ŞŚfţdŮH?Zł9»ÔN6 Írł?Ü{NĆIN)ľÓ—Áć0˝9ĽtnÓŹÇ,a2ÁwAťŔÓÓ¤¦1űőFR ”ž˙T˘ŞÍnţŞX*Ł&!ŠÎ†+E¦=gyľŠtth<ę=Źęsź+ŧA‰©Č¤ô¤Č“)K•P‰:Ssăf=*J¦TŁĘ\ÚRľŇś‚3śĄ¤ĺ7}ş®Ł’j¨DŤeřw‰ ćô—-u)Iˇ RÎôšFĹŞJ›:Ń®z•k[ŤŞYýYUKJ’Şęˇ]uWćuŻĺúá]˙J.żň5°ÉěXÉ:¦¦¨}Ô7ŇÇ:q±4íbÜ2úL´î´¨}ÔlŇËи:±˛Ă,LuĘR€š¬ŹŠ e;Wş>‘µŽměZ­j[ŠŤöµ¤mĺeĎšŮŕžÖ©/M«é\ZŃŽ˙¶.\Yl;sËO7.U·ÍM®rËi*ĽD”«žE-nż ]i2öśŔUîw=§]ÓW¸ëekq7»ľ±đ¶ą‘Żu:]Ý®V˛´í—}·kŢL˘7˝ĺmŻá+×÷1˙Uo€y:šÁŢĺ®tůŢťeľľŤđ5Y «őĽŤ qî6|_óbwjεč=E\â¶¶ Ĺ~đmń‘–›XµůŚq~ő’ăxĹžŐ±ŚĂÚc/X)A®±ŤŁ &;8µěĄ0Ź|`ďr8¶Q®Ú„©Ľd$'™¸#®íoáúä+űC?N6sw- 4,[ůĹAťršú6guFĽp†ź h%gŮdţz–źď ^~ř©8ô‘Ý\ĺ÷Ţ΄ör”Šh5cMH7uôŹĹűi zÎ.*4š3ÍYşÍöÔoţi«aŚç?ÇÔ鬭{ë\ăz׺î5 ë,#‡˛LŤu™çCkŁÚ˝›^µQv,g0ŹyŇb~X˛ť˝ěQÇă0Âî/~żMćW§ěÚśÎ6łí‘nËzÚěݏĹKnK›[Ű{v›‹fHš Ź&¶»e[îyG›‘Q÷±ń˝ojë›DńfźŔĂ˝mVc;ŇvuOŤýn7üĂuÄ%poëW䚆rĆW»qvâőąĽO>ňu+ůąź}ůÄWÎožŮ™Ŕ2ţď,Ĺý-ŕĎ1ĺ<Ç9ËE˛s =ćK‡5ÍëItĄÝăOú™›j’ĂřébŽúŐ§NőyÝ›Ľ=ŹsŮżËu3{ý­`{ŔĆNhűXëŕM{8×đ¶+|PBî'ÖžďýÚťé˙.í—őNd?+ŰęŐţąĹŮ4ř‹/—ěöÖ;˝ż!Ă\ň¨Ś|ÂńnxË»}™ď;ŕ g†»Řç §Ľčsţöľ÷9Ń›Ďú˙9š#›6‰6Š˘74~18;Zťë™—§w,ÜÔ”g%¬“ŃAĄaĄWŞYŞĄÁĄ]š#!¦_ ¦A¦ A¤iަkÚ Äîpú¦” §qú Öp§@§=°§<Ч.ŕ¦qję§tZ 4 „ uĘ Šş¨Žş¨t¨Y©L` ÝŔ¨W©U°©)ĂP©Đ©z:©lJŞĄjŞ§ŠŞ©ŞŞ«ĘŞ­ęŞŻ «±*«łJ«µş ;euler-1.61.0/docs/reference/euler_features.html0000644000175000001440000000264607417015637020364 0ustar ericusers untitled

Highlights are

  • real, complex and interval scalars and matrices,
  • a programming language, with local variables, default values for parameters, variable parameter number, passing of functions,
  • two and three dimensional graphs,
  • marker plots,
  • density and contour plots,
  • numerical integration and differentiation,
  • statistical functions and tests,
  • differential equations,
  • interval methods with guaranteed inclusions,
  • function minimizers (Brent, Nelder-Mean),
  • Simplex algorithm,
  • interpolation and approximation,
  • finding roots of polynomials,
  • calling of functions in external DLLs,
  • sound playing,
  • Fast Fourier transform (FFT),
  • an exact scalar product using a long accumulator,
  • Postscript graphics export (thanks to Eric Boucharé)

and lots more. The specials of the notebook versions (Windows, OS/2) are

  • editable command window with comments,
  • normal OS GUI,
  • graphics export in various formats (WMF over the clipboard)
euler-1.61.0/docs/reference/fft1.gif0000644000175000001440000001004607417015637016004 0ustar ericusersGIF89a^k‘˙˙˙€Ş!ů ,^k˙„Ź©ËíŁś´Ú‹łŢĽű†b(8ĺrÂĄŠ‹°ăL×öŤwđQîŻĘ‹ ˝áĂGl șó …YS`bĺ+&“ËĄT·Ń˛ůŚžÉŞÚ+CëjÇĽF+ů—Îë÷|Ôš ´36g•řň§Ä#cwĹŘ)9)A÷f˘H©ąÉŮéů *:JZjzŠšŞşĘÚęú +;K[k{‹›«»ËŰëű ,ě—ł ˢĘ®QŰŔj°°RÓvuÝů< |X{˝źżż?z›üSĚéˇ˙çw0ßšq_^ ô÷Ę€ (h‚ä„Űk…ö—JHź 6Q ĹÉWZhăÍ`á%~ŘxÖ·^QźtčˇB'’˛ˇn,®…ÔŚâu6[S9®"orcŚKŤl¨#l:.đä@6â„-E ’F6§‹’L^fV”*VYXŹEH¦€!öˇĺ–G‰ ‰—7.‡˘™<˘ig$N‰€śîÁé掲ř)bs ŞgšAâ‰@›•ńyˇi8¨•°HÚAxZ"zćťúíyÜhŠ.¸&śV*Ł+âw$z˛ę©Ą&Ň9jźĄBA)ŞŻv˛*­ţµZk¦»J§^r»öĘÄ©˙şR‡ ˛Ä>ĘlžŚN j±ÖR ŕ­Ă.[†˛58íf\ «´Őşzí§Ůé„·ÜľY ¸ĆÖůl¬˛b[f¸âÚ›ˇuÉşű®¨ˇČ ,”rŠđ¶óúşŻąë!â(ipŔĄĚÁ^ŰԱ䜕0ą ««oŁÇ¶Đ7‘Šlń$ąšˇqĘ+đĺ‹â›/Î7 +ĄČ3 {Ör*[@0ş 6©đÂç\(Ń:Ó¬-•E·rô•ÂÚÄ5N^w ¶D3…Mö×4Ťm6Lh—ÍvÚ.éTuąWc=Iұ˝ü+ż“Ľ7`! é/s›‰Ýĺé˝óąS ü4Ôł×÷ŕŻdÝ/äţ˛\oă‘o^ Ęn›äŹíú¬ţ­yâŽ[ ççqŁGąčQÄľ2»¬žŢtÁ©3Îh”®Ű>®ěşĐ^zʼnîÎ;ßśGm.ÓZg,·đŤťQĽÍÇ/žĽâĘ3ŹíŚżžíŇóëZż=÷égżzű “<ěăqő×K­}ţ÷®˝ţř—Üűám~“{‚ĹżţíĎŞkźÉFĆó!€ôsˇÔ°B ě ŔĘąHi$Ć©ŠGĚ…pyę[  '·á\„%4˘JÇ: {Ć–müNúVÉ=łŽŹ\‘ö,#ł]VŞšSv"ăR9Ç-^(‡Í‘7Ă@żmĹô<Ń%wřĘţXv±•ł<Í?o`Í|îó‹śLćA#úĐ†Ž´¤+}H;Ú L+©§E ¶“~zÔ5¨ĹFęT›¤k\Ţ414]çĹޙ΂6s¬eMĚB»°®5­Ëlk_šŇvÎ5±wí‹^{Ř–ö˛'ÝlZ+ŮÔöĄq-ć_ŁYṞ̌µ©ýŚokŰŮŰć6´o­Z7ŠÜČX÷ąÍŤé3_;Ý8îöÁĚî]¸;Ţđ.v¶íýěw+yßůQ«oüośß ÷74Ěŕ‚źńŢěŮp˝^î†Ó;á†qÄ%Ž Ź[řŘSž3Ŕ5^ň»¸ÂyČűŰr’ŮäźwĘńŤm©‘Řĺ&ţtgĹu˝qš3ĺ3WąĂÍşsž ×ç./€Ožń¨“Űć%w/q•ľt¦‡Wć˘úŃq~s oś»żĹ:0Č~őh×|ęl·Űß~Ďć–Ýě˝űeŐ>t©·ę{_ű‡ëŻFÓ]yµEwŃÁv®kńôĽĺ?xGľßA7zÎ-źxĽÇ¶Ąnä‰dŮŔ%6ľ”Ż<ă/v(†±źŻ‹ %+o¸űťď}˙zę?YŃ·^µQkéű®cřŠ÷Nď×ůÝŰÚ÷DţéQ_ü0sü5ĎsDŔąUĺ~GŮ(nU9źřšżüónÚ1lěűËľöEÁśy˘€é>­ţ.ůc/{ŰGßÜ·¦! sĚô~~ĆSCtâw~Ňçu¦|R’U`É7€Đ§&~Sjކ fjHR¨xj#á‘R8îgl…‚™gx÷ׂη58čw‚YR”„7Ř€68~ĄDN7ŘX5âd0+X~ć÷PCČa‚Ú×Mq3<Ř„˙ł€,ř‚aŇe%F˘K´‡†i8{k¨OČ…RX€@H†í˘‚b8†L„l؆y¸‡č–BŐ‡„.8‡¤z©¤€xř‚rř{‚¨wů'€\^8E…H>†(‰Š¨…nč…‹¨ 'pţ¸T&R…<7#y”wµ×‡śŘ‰TLJx‡Zw‰«H‰šXc–¨J©ŘjxЍȀV¦G€˝8‹=Ř~Ĺ*Â>€ŻH‹¨Ś®‹G…ĂŘŚ'f‡ÇŘŠĽŚÉŤŐřŚÎřhŚŮHŤ»ŚDč9Dą¨‡Óȇ¸Čf›CĺŘ…Ňe‹ŘřŤďčŽú¸ŤÍŽń(ŹX‰ôčŻ7Ž7—‰ü¸‰ţŹäu€aX‡đHĚxŹ(? ©Š™‘ݨä× ‘9‘î"@`¸Ž¬řŹě(’6zx%Ť9‡c?bĂ‘ÜH‘™’Ú~5“9‘NH=©N i“@‰“)L˙q’/>?™“Ś™C”y“Eމă=K©UVIŠh ”Ks•ŢX“\é“b‰>O’縒ď'>_ –SÉH©’ű+b"…k&1e5yLň7Ö¸p9—tI•XΤęç}ßÇ ž×•¤ĂN~ŤEu’:IŽ0y™‰-Py€féjŁĺ–Ťâr‰’˛h™¨y7'łL9Ď5šma—ąŁ‹kiŽĐ‚:…(" Č›!č›˝ śż‰jÂéQ±y=hI›íŘŹůNą™‚±bĘyĆ9”Yą„ŞY›ËYlÎiZ[9kˇÉ+‰mJyť¦™šć9‰č pÔů”mV…ÔY!N÷t˙ʹ󦎤Ǟř(qŁXŚP`Ĺťő™·–e‰dů™üą, Úź×(V™ś*ˇ„ɶÉp*ŠÔĆ µč höĺ9–…Y !:˘5…ˇ˛ˇ_‘˘‘J¦„ Z•"j FI˘ĺv˘eTbĄé•⩝” ?ťńV>ĂŁ8ra+*ŽţI{mňŁËHŁz”yŁé]: ™­)iźˇĘĄAçM:™Y†HzWłź€¦[X˘±ä<řY¤eA¦Ľ`Ą’p¦{ŁqY٧Ů3sş¦;6Ą†‚LqŞ•bГȑ¦ ivzqú¦í"¨“ó¨•Qz‡Ąyz8–j˘ŤŠ+˙‘jXž‡JJźŁ©2:ŁTú¤xŁ  Ú®ŠŽXzžŞä9[JˇEWŞ~Ę©@«Ŕ§¦P§yâ;¶Şť: J¬:˝zżš ÁÚ=äY™ăć(ąjŁ»Ę&Ěš,Ő­ĘăŁÚž÷2ÖŞ\Ęę¨Ú &Κ Řz§žő­ő©§ĐŘ’óɨ˛z ďŠ Ń­ôĺŁÄj]ř ®AZŻ ©čz›?s}z©¦>ő®äj,ż ±Ň™ôDqw°źŠ°ôk°ŘGŚ©Š˘†ęݤ‰‚Ż«Z±ɢu§®Ëş±i °a  ‹¨§ZTk˛„˛ł˘ćęgńѬ[)ű* ţÄ~•´Č Ż>«˛śQű?ái,!µWKś§ć%‘Ƶďŕµ_ëa[ a¶g‹bkd«¶]۶íŔ¶o{qűNi·w‹·%„—5+פßÔ •¸ 1K¸…k±‹6¸ Pˇ°~ëLJ[]^ ąŇŔ˛‘‹ąš+™ĐN˘đ¸~»h4@ą`ąž»ąŁ;—›ş“‹ »Ş;Ą‹şť«p»Ŕş‰«2´ë˝{ŕ€$ ş@Ľžů·˙§ĽŠËĽ|»Ľ4‹MŃK{kÉ ˝y«˝ŰË˝Ýë˝ß ľá+ľăKľĺkľç‹ľé«ľëËľí{;euler-1.61.0/docs/reference/fft2.gif0000644000175000001440000002544607417015637016017 0ustar ericusersGIF89a\_‘˙˙˙€Ş!ů ,\_˙„Ź©ËíŁś´Ú‹łŢĽű†âH–扦ęʶî ÇňL×öŤçúÎ÷ţ ‡Ä˘ńL*—̦ó ŤJ§ÔŞő* h·Ü®÷ ‹Çä˛ůŚN«×ŕű ŹËšöŕKvP˙§ř0(cŘhđçÁ¸÷hˇÉáH$©™ŁiŔąâi#Yą1:iÚz:QšÁŠ“ K"{XXC#Z…«ęĐë»ŕz1*üÜ⩜w)ĽűÔ|0M]\Mk­ŃŤÂ|ű¬ ˝ĘKÍń­Zž5ˇ~_ľíŽŔO שďA@ÜüCeoÁÁ ť‘‹V/ťAt )¶‚8SA~ţ,&ă81âľ” Ń ‘G&ŠV^9 MÂ*;Úk)sä=ڵ$‚´¨'P 0ćTx,¤ —>;=š(懢R*Zí)V TwB˝ú ě ¦ Íp‘FÁŮjęT¨ł[ó­m;ö-ŤY?mBÚ÷gOťJ˛eëŐmX¸±|ÍŐZ×.”I.Ő řťXd“BnĽ™`Z'+'λ¸lh<ŹWG¶ěçręĚAËľ!Éěç\Ł»ľ˝·CM!ýZ ~m’çĽÚ®ŹwnfmřUş¶m ’Zµ±žíÚ»s˙îÝűđßLJ'>–ůíëÓŁď>>|öóĺŰ'ßľľţűü÷˙űď xľ©•=ÁŃÔJŢ0–ŰqŐ= j×áŐÁ€łŃ–t.čŕnöŇ™Z8S‰š!g®ČÝgÔČşÄV sń$[S-^řa$ľŚ܉břÜŠfŐ``J¦hcEžVaŢ8d•ËčȤz& @ÖČŁ•Îi–Ý‘vçân0žI.ÓĚ8•”8’ą¤/D‡$ťK®Ůĺ˙|©Šsni'•Y ęŁSIĆ5¦“Fúé(p6"§\2ŠhŚzJš's„nęW›#ŠZ¦^h–‘rŞ(m/&ú襚 [ś`š*ŞĄ˙đI뎂~Úd ˛RJٰ…Úh˙¬"{,—ľ*ůꪆć i¬¤)7K°ÔžÚě˛ŐâĘčł'«¬± FYl©ţÄ·S.Ëk·‹f´Űzűíşť@‡şćŠoŞĚΚoˇĚ›ĺÁjÂz%ŞýŞ"ŹĚ,ątĆű.h7¨0X3\°šüRhÉ­úş[›ŔVI»ZÇhfoČ•îů0¶#X»Ď™ŮÇUşLo‹1 2ŃÎŤ\+±˙j™ Ĺ§®|oĆ@'Ě­ÓÝfë°/'q§¨nŞĚÄQ·nŠB/¬«¦çÍsŠ[ —qŐἳĄ ,uŮš¸ĽgÓ0ĐmžÝŮĚ&Ęun 8Ř˝ú]îÔËť,¸MsŰţ“VX\ÜŞDß'Gg5Ý m<ÓĐxŻÍ2Ű‘·ăGćÍťĹŢ[žifŕuj.v\¤?5ű–§§<-‘[|9%®‹ůbçű_çÚÚ6⚎şä“{<|ŰNu|ßL+ŞĽzě™íËgťsHŇOÔűřĎÓ^4öş»V<)Ý?M>?á›ßă÷~:Źľ˛ŤIhßꮦ˝“‰l~‚’ńD@=ĄÄn1ó]ţJwľjÎ,žsN č˝rˇdŕín7˘űőďps“]ńçżĎp„„áú´ÁŻ˝ďw•ÓXSA´±|.ßę¦FÁ‘†úł!yąŽPqŚc˘­T˙? @…”_—Ăľän…Jäß5čD"ÂL†“âç4‡,v(uŕ˘űŘĆ5汋cŚ^KĆţݰS9ś"ó҆ľ9" ©b9˝2şŻŹ^ ¤ĎçG5âŤu;ˇę< ĘeŻżiČĺ;éL{ś¤‡7C6ńŠ„âćîhȶq—ć \÷ÖŻ® ••Üăţş(ĆW¶p–—4â(9@\vr—˘¬â^jxEKžŚ‘łă¤é°©ťcJ–®4fʰůĚ'6„aĚe3§©t> ŕ&5‘ůJp*q“`ä_&ýYĚ<ž“ ¬`+ł©ĚCľ“‡/ôĺžmśTÔ%B_'Ďj§žu4ˇ; I‘Bhýg*™ąĎb:”–ËčIÉ(Q@TĄ¨Hi,1Q•-sŁh4¨&/ęT¦ô¦QÍ)EwúL‹†4Ší”Ą.±şÔ‹ň—éXRKÚPŞvô4Ĺ©FašÖ° ďŁí©MIęQ&Ŭn ŠQĺĘĎł*´źj­¨@[XUź&®[5çWAjP™V¨fôbĂĘWmĆ“®Dµe «Cm*¶§k-*FÝz׫u Î¬kHS›ĎĽ^§™µŞhG©ŮŔ¶ô§rÝkam§UżžVł°}čd+«Z×F˙ÖyÇ čg{[ÝeT¸cUĎt ą˝FŕV¬1őíp‰‹Ř¸6Şą´]­N!kWőIµłs}YwĄŰWĚĆn<׍&hąűPâÖ0ŞZe®x˝Gަ–Ö«éĺékĂËXóŞN\ŢýîaËűÚúÖ+»séf“ áăţ¶¦ęMpM…z`ݧ¸”$ĺ ßܢxÄfŕ}/üŢ g°żîĺ^S\9 çµŔY5g€ókĹCŘÁČŤ.‹ăŰ*ĐĽş16ň€«™Ř;¸ł2…ŚwůşÜŹ–˝Ď˝ĺŁ<ÓuŇÉ‹]roQ,cĂŽ–ľD–ňŹ^˛ýmëMěĺč¶9ĚMłh9bÖÝvµţhvrkáĘf0§yË6Ć,Žă:â©ôÍ NźCmT…Ň~n¨nó°]ٱ¤u&Ť5hç·ÇĂSîeŠÁiZÖů´”$3|/}Óę¶vÓ„Ť0m¬ä P1şfFqă gr &Ń˙…ôzýëáÂz‚äôid‡zÔčQ›ŐĹÖ´±ĹlÝh&ÄĆ6ź mCűňÔűJ5©“­ew÷óŐś>t–9 ď“2šÇÜƶ·Ď}`6˙ąÔźÝ@ąí pYŁvżţžÎŞÓíěI7{ŢŇ&ř|{lm‹[xß!f·xťęń^yŕăöÁÎÖx/ßëy»÷Ľč»ęŘXmk¬«íß|“uĽŰţĆ4gq}^_“üá¦Ŕ°—9hđÂ\Ýʶ¸»‘ýđc_ąáYĆň|Ńm睸çąnx8>rO»ÖBµµÂőËň{;}éĎxŔ§no›o›Ö;ŠzĹŮ«í]w=îOĄňĹőŮň@ÚÂb”úŠ˝ľvE3]ĺ_Źů­ÓkőĆ*äŁ$× Í÷Ćż7ě˝.9¨Ë3źü„s̤7éé{zĐąôĚf=ęMűDżôŁ_}ěYl{Ůë~ôĽo}ďoOÜă‡ö®ľ~ň3{ä_ů× ˘©ÉŁzšń¦&ŠjHš‘Źůľž/Úgţ( ů‚ĺČ—órŁ@ę´çěéĄÄ‰§—ö˘˘ÇšI*‹ę‰¦NYk*¨Âé¦ů|rŚs:’ujdŞW ··Ą~ÖĄş©˙YŞi ˇá驏x˘‡Ę–‰Ş–lʨ’ §:ŁâXŁvzĄű)¦Č—©ĽŮ© ş†eÚ¤š’EŠei…˘j•4šđ٦’9®J™4ZĄ˛:§X*¤ľy«´J¬|J¨™řuľŠ­Łygúˇ­ůśťŠ¬«J—´ Ą*xť“HĄ>dĄŃj­.J­ť¦©˘Ş«ń·¦Ű:˘Ý˘ßÚn¦Úž 'Şĺz”¸Ş‘é ŽëşŚŽĘ˘b(­«j«ôj°)Ú­Ŕú©É ¦‹Ę§?řŻáš­‰:°ŞZ°ÖjW­*ŁÍ*©gC«đ*ž¦±ŔYŻkŹŮÚsúşUýާ]ʱ˝Ç çj¬üŞŁ.ű§ĄJž˙D·˛÷°#ű˛éł×J®lI|6«±›:±Ć9Ś¦×ł,ůłą´~‰ŁÂ‡°©°0ɰ{Ў= ŐÚ˛řzy4ű{«¶W› \©µÎéł} µâ!›a‹ŻÔđʮÜč®Rzłś*ŻH‹¬mkŽöZ«˝şŻVŻ…šµ»··šu!»¨L ¤&[´Żz¶\:­ŚË|+¨¤{ză·¬g®s;ą-ɆZ븡*mš«ĄBűŽ Ę¬¤™˛…ű§K›¸*»¸jµiZşTK»śű«Ęłł žîZ±"ĽĐ®€Ű&‚»°„۰—úş`+ĽlÚ¶–k»ŹË·Ü*ą¨ëH»zě9Şą;˝˙Ş»'űŁ”©˛~{¸Q»¬¬Ű˝â‹­ ·­ű«O;»÷›ş»šĽ<:ľ›żÔK›Öű?×ůwXiŔďH·}ű˝§ë‰ëűżŁËŔU›¬ĺ´ęűÁü«ˇď+˝ś»ëůą÷ –AIÂĚťĘkşĂÇ‘,ąä+Âć±;˝ŇŔ—;a€ZĽ·ë˝<ż-ŚĽéřÂű‹żĚ×ÁŠ ľ|Ŕr«´ŕë¤čŮ·Č«˝ĽĂۡ»öĂĂż1üŔs˝7ËŤôx•W{Ĺ·R¬Á7\ŬÂ_¬ĆZě˛\ŚŔ^ĚÇ›«Fx,Ä3śłÍ‰®,¬®§al|Ŕn¬ÂwĽżMLŔŇZĽĎ{ĽVŚ©M»Ŕ˙~ěĽaLÄ \{ŹüŔ©·SJĚľŚ|·OűĆ4ÉŁ|ÁÉWÉŰŔ‚Ş‚|¸#ĚÉ2‹śb\Ä⡼’üÂIśČ%ĚÄŁěĘ$+ĘGĽ¶Ć'ş‹ ĽŚŞ·‹›ĹÓ¸Ç(ě{AĚľŇÉË |Éě›ĚŚĆ¬|–ŞĘ<˝Ë Ěýk|úÍXĚöÜĂ)ęÉŠŚŔ»üÉ#ʸŰÍíŚČ ;΋\Îűěȸ ÉcX{…¬{ţüżďlĎ‘;Ď`;Ëýě»ĺ ĆCüoÜüĚĹ·|˙L¶-|DiÎí˝éÜĘ‚¸ź Ě!۵S‹ÉóęĂüLŃ KËđűž}Ń„Çă|ĆqZŇ Ô3ýÄ…śÇ˙Ţčť\*»ÜĐźyÉv ÓŰzÇ3ťľP˝Đ˝ŞşúÜĎĘŚĄIťt’ňÓ! Ö[ŤĚB+Żľ ˝Ç̤ëÎLíŇNŃ·\şRŤÍÍkĎWíµć¬Ő(}Č]_ÍĚa­×żűşzÖťľjÍҦöÍ]Ô™ÓĘ,×üŰŃu- X Ľą·Ř=íŞY˝Ň-ÖśşĘe=µľ ŤěĚV«ŘM=˛ĺ»ĹéŮĂË(}ËTmĹś Ë˝×| ~ÝŮ—Ť×ä;ÍşşÎi˝†ö*°™ÍÇAŰÚQ-ÖS]Żž-Ń´-Ŕ¶mąźťł›í۰¬Ô¶Ú1Íؤ}Ý*Ť{k¬ČÂňüŘÝÜŘŚž˛m«˙ҽڿ}ŰBmąZąĎţLÝ íÁ¬ÍŔŕŤÔâMÝłÍÖsÍĎË=ǤĽ{ěŰŐl×µíŰ™ĽÓ±`¦Á˛Ĺ­Ý§˝´ÝMŐßmĂšęŘ-©ÝÖ¬ĚŕÎŐ#'Ůí]âÝÁ¤}ÚM+Éëappd-ĐnÝÝ|ĐE-ÜĹçÜŰť¸ ®Ú&˝âfŤŕ(ŰI ×~ľň]Ý&žh3^㼽מŐp ݡÇËŔ÷ă/ľĹ\Mŕy-Ńň×ĆLÓ˘ËÝ€ŚÓů;Ţmăf.áÂFă>yß˝MČúŤĺŇlÄaúÍ. ä_^Őa>ËŢá'îáS,äKnŐM^Í$ ĺ2nrSÎć7îć9ălîÝ˙xLŘô˝Ä!,ä#NäcžÇe~Ű ®äoß~Úă­č1ľöťßfľÝ”Lâ<^‘;íç^ľÇ`.ŮĂŤŢžŮŐkČs|Ꙟę¸>ćŽ^č#ëŮŤăý×%mě=|ą^é»轎ֿN擝ŕ)žč¨žěČ×ĘîßĚî‘}^ŐU~Č Íîą}ĚçďÂ^í ˝íĽ>Ľó.ëę®ďú®ŕą˝ŇyĘďýîî=ďęŃě=ĽľĹ}ßč=Ż_Ëç ýá:ýŢŮ®ç†ä#ęíHŽčĹěT;čƬŻŞÁMđ_Ľđł>ß;®ć5ËŃq¬ëŃýěmޢ®ć†Ž«Iţě¶ľâ5­Ô ďzŹÝ˙ OĆ~ÉŇţńÔŢç0í2_çđŚń„żöΤM<ń­ ÓĐŚf6v«¶÷h\­Nú0ÔŇ.'ěďÇ9a„jE,4ҧ0” í 7Óş0Ű“ŇEřĂ̱2±§OoÚÔĂ uŠĐ1ÉЙ܎‘iMCIôâŃÁâţüÔÇ(뜲5<óËĐU78fK± Ě K5Ž T;”±Ŕ$[…$Ŕ)bęľ‚}ŮîLŐF4]V¤jiv; 7ŃÔd‹’ÝDY}—?XÇb{µU]őä,Iź˝Ý3- …ÖšXşu`Š”%mw#Žúą‹ZIč›'=uhťěş§4ţ~>"čNóËúäNY¶ŹOETnMX´/¸8Ľâş;Ĺök˛ëxź°ń®4ّǞµÜSA»ËWPĆćó4!†ú®ąób\±Ş«ĆĽőH7ç™$Ďł†ěBË=®7âM?xÚÔéZ}ůÜÎć–fžť]ş·;ăĆug˧ÎáýĆŕŻďóŃ'É?ţčä˙l^ă̵ďň«¤§ŘÚęÁ˛ůrśť{Ţi/üvęŢĘ4Ç+đΓ]@§¸¬˝zo‹ý WąńaŚrű{RN0Ň;6őJ'âĂźIgŔĄ!°©‰Ź‘ć>hą%‚° T*čŰa/Ü^zçAŢL„ôŘ˙Rů€ČBęäđn‚ąQŰ>÷ľÉÄđYóŁa±l8Ŕ‰ś®iÄŘ ˝Xó?00Câŕž@," k¤qḾśÄo&RäU ÇsCÁ!Ďo+Ř"ÍĘÇ&†ďb<źN3ȰáQH THÄ3Á‘!rÔí¬7B$Ö¬ozÄ!µşEłńî#!ĂgD˘ŽDjü#?Éş×Eq‚S\ěxÂűe’o7ę_˝ŘĘB†ň"Ł´šS yÄ&Ň&¦V] ĹVIr‰”ĽĄ m©Bźi’|»´‚áBŻQ”Ĺ$ßľh2ŞđRk\f+!IrLđJt¤ĺ©Č&FJiLˇhţIL`rB?»Ä?‰vf=ętăAá=xΑ™óĽ Ó—Ç\zË:«â¦µ¨ăOyÖO™ćĂ$3?´J|ĄÓ¤ Ő ăÜą‹ůĹ3˘µŁg ŹyOqĹÉž,)(?*·%’ňŠ9!b"ŠPý´…«t¤\ZĘ‹‡®ěŹ•âoiQ‚~,ŁěĺNóÎ`Š“Býˇń¨šĆ„¦t‘ç|bS±ňÔh‚ďtµ¤čH݇I]V+§×äę/{:Ě Šôp -*:•¨Đ´:±wlÝÂKŐvȵž­«Oż†W­ę4Ś­ç&JĽ(Ő hµźrhşĆĄ&B± qkeáúŘ™˘®—b}+MţÉ˝˛†Dę,˙>[P˛.¬…Q¦JŐšX‡ŞyŽ íD#KW›úŐ›µ#'k˙ɧę¬b»ęXKZV#µš‡}aC%2Ů…rm¨w%ű\‹u““µőŁWťA_ě†ôZ˝ęr›ĂRđ{ěC,K‰#óÓĽD`ků;ŐđVÔ—vĄî”°©WúZ7·śÍn~·KŇýRď0ŕ…V»@ŰĚÔN@Zýđ¦Üß:x®uď) «fY¸şśş®†ń{9ýr÷Ăţ* IěŰv2ÄŔ)F±ŠÇâ/-®ŻŐ/c#áű7˝-@¶¬á÷Ö×’ ,•ý RůĂGÍ™Ľ˙`Ű2řĹÔŚ±g|ľ?çĆoαá2lf¤˘j˝#sť[Ű·ÉĂäíK’Ű,ľ7CٵMŁó”KĽ]:ß>űńfůLĹűĐj(űq˘c*căňĐźmăŘśą&p9śéťĄ™›kęţęřĘëă„9­jQóÔ€>ő¤ß7XbÓ:s©6Ů•axbó ÖčŐY©Ź=© Űő“Ž‹–/ěĺ>k»Xm6™‰Jćj×ôE–6«ťŤ ç8N>rXŤ„â]oĄt(Ëň®Fńě­Gyw/ÓĐđ÷^ćď*śŢ)Utđí‡v[ ¸đe¶7LëYŰşĘ>Ͷ˝ę­G÷•Łżöł:Ĺ ějţ—;Ą)÷¤ďžńCv#f-¤cnn›źÚŘ|vsç–Ĺí=ëÖÓ&'ů§5^âîŢÚć†V·ËďŘęE<Úc•µo윏ľ˝ ®ĎAŢeď%_ďp„Ąţő _“ĺŢxłaŢdÇšqÇx8Ż]ôť?±ç[í¶ŮEnsÝää®yťw¬×T‡vâkműÝ'ľYąź;Đ›ÖÖĹŽvIçşë—ů—©ÇŃŔWúń!ŹĽoĽÄűňáüŃĄ}¦Đ‹Öâ{Ĺ6ćŃ}ČËďĽ×śíććwköĎĂýÉ×ýŻ +ğةŻŰ5_ő×{×ę˘7í/ž «ňłě@ý§˙Ś]‰÷ţ¶őŔ÷öŮm[ú-±‰Ę?4îĄ^ßF˙“.ĽŚ‰ŽQDm<ü|ß)÷ x?·źéÎë¶ĘüŕŽň^陦f÷Đń˛ňpŽqŤńbkĺšOĺ°Ź÷Ŕjű~/˙N˙ °Ĺ pÝĆNMdhő,úžĎýbĎľH°ţ<ďţ0Źę¸ âFî±O;pŐjţVMĐÖÔŻ|P°''é ŹçďҬnřB´Îo˝0đű4p˙80űvđáO€~p­aÉĄŻݬ`Źţ”˙2čCÇ´p Ą°ň‚Műâpřžůć ×.Ź « Aâ~O‘-ä‚ =ţpőPčn0îԱ=ç ż‡ĺ€0ůĘúp-LĹoÝĐ0q ?'Đo«űęűÜ0Ă箝еĐéTÄQp]Ž·Đy‘)q=‘ ń˙ ° qpONĹŚ7Q‚˛ŤQűn­1ĂĽPćĆĎô ŠÇoű §PÓPňŔoÓ ń…2ŃÓŹc1{qE»ń ‡±‹1 +±Ł+č2ý2źÍG0…p •q‘ĐńŃőńҲÎ÷~?!#r¸šŃî˛;Ň1QăńwňŇYoľBQą‘ü.’˙=Ň UY±˙ ˛ 1"?°óqľDr UrsŇŹ0&Kq&e˛¦N‘"aŃűÖQ'Ď‘Ą"ŃoĹŃ$©’#7Î!a ·˛§îq)…±)™R÷:RđĆ1Y˛ú˘ĐŮŃ'‘(—R$’ţr‘8Ä2+·ďçĚň e’+Ň˙ ň,óň°Ë1$ ’ó!ó+Ż,,Ź’*S)“) Ó)=o1Ĺń߲Żo_Ń-I“-ŰR1,aĆ/ár˙4Ó*Eó»P(×4Ł25ír$w’ u®5#ó9s8+sÁ.ÓW‘6Ë7ŃŇ3;4‹S±’4mŇ4]ŃŰ*‘,3)˙÷+(˝r.“61ł%›&9:Ź0§«ł7%3ł¬r*ą)[ď;…>ݱ(Ës9s=żm#GŃ+Á“%W“ýâ“:#>·Ó:ŻS> ”2Kł(”“3ł,7s@őł %ôŮó&[ł;ŐË9s*ë·ŇC÷“!ÁBÇ@3´6Gđ67pEMtC}EG4.;o<łđ>ő˛%ąrB±łBýóBĎSFE“BŰÓoôCŹďw4H1’I´y´u ”CtAÉ3bbB„í°IĄ“L»ÔÝŚ44§Ô1wŻ AŇA‹TGm´Kµô_´F•NSÔMŮÓĄ tMĄtLtO]ÓL˙±ô6tóÓ0ë´MEĂBg3FűT##UMńR~D”S«IuNőMC3<Ű“R…ô5ĂCWŐ=“MŃ´TaUµFóU™S5TĹ. đ´q¸ôQłPĹgRőT[U=Ďt=ÓôW]ŞJŁREµXeĐDkTKeóIď´­juXłuWżożÔ±BPgµYˇŐK­Xő ť$%OE±ŐSµIŁ•^˝µ-y5ŽĆ5^‡t_ź]ý˘RËUőY‰”U1őHU5’ŢéR˝4\K_˛\eó\oUYůÔ^Ç´]J‰µEö]šŠX36Ý–Ĺ5SűucÍŐVMv8qô_ö]˙—Őc‘uRťŠYUc`—ŐS«•[ ¶[)U]+Ő_á_UKeót^qg˙ÔaŤÖ<"vhů5ޤÖ\ TeˇudwVk1a3ŕf6^ˇOĺ‡jkqbɶky/VsViÁVh˙MkV^–aťÖkĹó`ť5Yőve·mÁöo)6f—ÄZŐnsTl›–lăvo­VnEµp»h—vS‰vp…V2łVrMuq±rl·¶j#7oÖgŮÖp1÷j{u!·^·–gĺöcoáöqĺk77ywĽřöu9wM•wC·^÷”n“Őx™övv 6s[×Twua·x!6zO—Q—t˙UR·{=÷lĂr+WbW{Ż—h#'{K—bgWxk÷F÷yÝzĄ7xÍ×}é–zń×sÉ—]Ů÷Lqç|ë7€ăww XV-wmY—űöíw‚“×w˝×E‚^Őő—]ůWuç1xqw{¸}“—~7X|Gű„Uf*Öy…w‚9Řh-ŘŐlVqX{o)÷‚%¸}g8v±¶z~MX…ËCÉ(@dw‚Y¸|‡ń` ‹“Š}cuřéx¸Ŕ, Šż€{É„Ťř‰Ťíw‰ű·!ZŠŃ ĹžŘĆX§‹kxa­x‹KŤ¸‚ą7öÄ˙ćxđqËX‹ůŘłXŤ‹řŤ‹✍Íů‘-Yc9wűŘý¸Ť?ů…YŐ‹«qHWxŹIyr‘‘YY’#ů„'ů‘+y“ż·yaŮ‘Źv”ÍŘgX”[Ů„wą‹ •7Đ(I™Há–YLś™™Łš§Yš«™šźŮšł9N›µ™/CC‘gyu™śÉaťi9‡Ť9ť‘ą‡}ůŹ=8–ç’e™“KymYťAöYÂ9‚ą¶śńą­‚Ů“‡9Ź÷ąQ¸Q•ŐŘx‰˘#úží9 …ŮŤż–ž/ ˇCŮ…˙¸˘ÝŤ ]Y˘ š‘‘÷pŰy67úś_9ŤĹĄ)Z˙Yú˘{9˘UşĄOÚˇ ůuú cZ¤;WŠĎÓ¦wž_¦Iú¨o:¨mx˘59—)zyaÚŹCş G:§?şe{:Ąß™Ł“ˇ˝şŞÁúź¦Éy¨ŤZ¦3ú«Őz¬˝zd77«Ťú¬ëY¬=ş®×ř®}Z«©z&暬×z©ŰúŻ[¬ßÚů:ýš°óú§Á±óú±ăZ–›§ÓÚĄ›Z«3۱­š†‰([łۢ7[´Ńzˇó´ŮÚ®+[ŻYłíٰKř± 7µ/»´™ş®g;·»z´źş<’łńÚ¶[´u©GY˛Ű©C¶°o»¨ťş[{¸ëş¶ŹÚ¸{»±ďúş˙É®w[Śą:şa;ĽÇ›®•›±«[ŞÓ;´Ă{»Kú–Ĺű»}›Ľˇzľë{ş×[¬Ń›ľ÷[µˇ»˝Ż˙@őŰľĄ»Ŕ·‰›˘ \–żý»¸9ŰÁ…ĽÜÂ/ĽÁy»´<’'üľ!ś±cŰŔWş8ĂOĹW[ÁíŮÄ5Ľľ=\°Ł»»›;ľ™;ĹoÇĆ1 ĹIÜľwü˝e<Č;\Ł+<ÇŹÉ­ş{\©ŮÁ|ĹaśˇŤ<É«ÜĘ=ű®™Ëť\Çź|ČŻşÄ©üĘÇśĚ_ű¨µÜ´…ĽË×|ÄoÍËÎŹĘĂŹÜnóUß ÷]–śz˝yâ—Y€Y—߀h d·`gű%ŐćE(ˇ?bpĚ1! ďA7ś|!„~‡â‰ľößR°ăý˝XĹ$ôč^‰ÉlxLđxhź‘@B"äDú' H‰Ł‰ĘXĺ“´DŁrâ5§ Ť*ŇLtbz)bMÎăŤfę—Ąđ8&›ý€yśZÖH&ťŢĹIŽšĽéŮfźń­Éh™ZYç’wr™'˘_şi “P]ą §Ťv8é‡~ZšźVi*Ч3ü晄N Á”¬’ş„©ČŠj$Şę馡ľŮ%­hŘꮣvš˘ ˙ ˝jčł ‹± ŘăK>:ć:X˛Î‰í…LV`M¸Ľ\{,´cH;-*â°¬ťÜâđ¬»Ëţ™ćâú2n˝íš{.¦ĄäC-»•ú(Ľ»¶ ŞŔ”şČo©ţ’XnŞÚ<ńľŘ}ëŘM*失NěqČ Ź,rÉ$źĽÇ&{ëĆZĽęÁę(é«Â˘ÂܰčÎÖ-e'YńŔ oyłĐ9“±ó-=?ݤď=(˝…¶řéŃý*Š'ĂʵśóĘKî˘[[]FŇĽl4ĹOc5Řúf]5Ů`ŤÚZ+۵ŁŔą=µŘÎĘ=ěĂC.]›ĚěÎ÷ĐaĂ=6ŕaĐ}ÝqCý3Űţ_;M4°i;ÎäHŢ8Ţ^罳T‡ÎyžWúßA#»öÝŮÚ¬ąě©o±:Ź„_ü: M×|9đ‹/<ůíXäŢÍîčő3ó®Kݲ­ŻňLO¨čzŹîôÍ"L}ÖG€˝ÔÚźżmđÓžiÄáG1~¬Ęăç| żŻŻľâoŹúűVÄď˛ů!(vľC渿˘ŮÎT ôč­úÍL‚ć›]ćÚ‡36Á (_âŇG:vŹoŃë 5(2ŔÜž Ńçľ^°B'D!xşçmÎr!T[ţ,8<φNP!Ʋ>ör{ka WXC".1rßC˘™Č˙˝î®)ŚÓˇ(8)E‘J•]‡Č;öŃ0†_4‚ĺE46Ź€süa¸Čż8¶ oTă?¨Ä,Â0ôăŕظÇ!ôq†lá y(Č-ń„Ld ĂIáÉ‘Wtä¤}ÄÚmŇ’ŠĚä†Ęq°P“Z d++éŁI~÷2$ I-S6 ëbdYŔ¶ ?+ňĺ,ń…L[:—I€\ŔVa­öď—X|%$]ĺ˝&‘™nÔe±Ćx?ýYÓŚMdĺń2¤seël';ßéÎxÂ'î<'·yËk>’ś#tb©ÉM",2”z,¨Ç̶ůS›Ŕ ¨0MČP€ţ.Ó•űLč'™&KoŢѡLČ ÖňωVł˘uE1 şFXrô•¦AęÉ)ňó"'uiJw¸RN´´o8e%IcÉKÔ”§ …iNůłÓUâO¦eŞł†jOeúô¨kI*8 Č‚pQEPýg>©ş«"Ł]V7š®Fô«`EŞF9 TqţÔ~XĹŠZýҶÂK¬*MăKԢܵ‹yŐk2řÚÓĄVźmÄ`‹*QĂö­<káĘJ3„>µUQ5f‘¶*ŮÎ0ĂťEi!A9Ę v’®i-…¸<´†¶+ŁMŢZ?+ŰÄUł»u¬k3úQż’u¶:-oKĆáę˙–µ«UíQj+CÓRRąÔ%.{ K>ŻâµÓd,E»ěž¸§Ęmu­»Wă’÷VęŤnj‡Ů^Ńô·÷„wc‹Ţë¶WŞĺ˝/ýújÖşfÖ·ćÝ®tĹX`áć—Ąűőlpń{Ţ—ŽĽß*}ůËŢCxÁ“Őđzżéa÷vw¦su®I/ěŕţFřżfp1 b˙ŠXÂŢťp…‹âgŇgmńiÄ‹CĽžvĹF5ńbIŢŰÔľD˛ŹWä"—Çc,]sá[‹('wÉӽ싟śU-WČăm°HkŚf$[8ÁŻĺ† fuůĂ’1łßëË—ŔÜm3›\ć8CŮÎţD…-‹}f5ŰxѱвźÁ…ŠTJ•Ę‚ô—u p$ÓÁ”đ€)Ěčf8šÎ ¨e/&-×J›uÎő•/7ŤéN/×ČĽeîs•\č HšŞ$tŹÁěQøΗľó›zddϗͤ®¬°­jv°zŘAq‰Ę6&ĎlĎSŰÜ޶·»’zjwËpŽö6¦ťâ ?;––ÍŞžĘU\—–Ëě.¶ąůŚhzď8ŐEĆň_{›df·Áë6ö˝[kďyçúĐ^žµżť đ5÷ąŮJł÷Żźě|/ü¦ ×8żC­ě›eÔß7ˇŽă„Ź[Ö LsČAÝhyŻüă(ÇwÇĄLćz\±µţ¦µČáArj;[ă÷qĆoŃśśáÇlĎo ˝â;/z‹Ź^nŠźÍ×Uîz»Śđ‰—üÁLsÍO¬ň)Ó<Ń/ż±Ë7+őtÇčg_5ˇţ–ăyᄄ¨e®ö“×ÝčĆ´Š‘nöÂFäN·9śÍdÄ—}đß9ŢąţőO»]Ń1Ź»áŐMwĘgůî3Ľ˝˙vÔ˙Ýóú&űŚ'/úÎ[ľô§7=Ôźžç°źň]ÎúëcżúŮľöÄżýĎů®{¤óžŕˇţ˛…Żtr'ľßążrőoÍúŤGŢ÷Nvľě5~y‹{ÝÓ{†yđwŻőşaŢű•?íwľö¶3^őĂţí'–oňâłźiöżŢű=n{×q¶†v˙péGEwTxű' ý—]S¶€HÖ‡|ŁçÝÇ/h„?č#AsCřc"Č}&čs7w=‚­§ĎP„P„0(?!ř„°7l[č„]¨}˝†V(†ň …IG…Q(‡h…Ƨ…„G†:§‚ÄĆ…8‡Dř‡S »ć ±†„ȇ$h׆€č…§D °Öz3¨‡…¸‡h‡ţ°iÖŔyř{i…č‡Kč†÷a-¦6Šg…š8†1Ď´™Ř#hŠŹ¸‹@ç‰řçz†‹?(‹ÂX†2‹WČyËő÷‹¸$Ö&×ömŐn֍רŤ)AŤ&ŃŤ$Ń„:8Śn8`‡„ řŚzâśX…Ş(„…‡ăH‰¸—„˙v‚é8u[ŹşčŽqŘŹźhhłŘŽôŘOkHlČŽőŽťhűWŚďxŚwčÉH{(€™Ź Ś_ř)†9Ź)ŹIŠÝWŽš×‹PQ‡ąŽY˙(’&I‹%I‡'IŽ}¨†öŽ Ť¬ă‰ůŹ9‰8Ćč˙IyŹxŠ)7ĆÖ“î8“7Y“G)‘J©ŚÍ‰+Ů“OInQů‘8ŮUY•bI”ţČv]‰‘Ku`é’+“Z9‡fÉ h‰”j9U¨¸“)RÉ+’±X‡cF‘V9•zɖ̸Îč“ę(—€©CI“`i6i–ăçpÉ“vĄŹr'Eą•”Y™˘y™X9’tą‰\™­ą‘pů“şó—«Išiš±i[–I›ń×˝éšŃ’¸ ‚şYе™š i”n6–iu»Ů—: śźp”Î9”v9ś‡™™™W~|ٔ߇śa)dÉ€Řy•Ę™–ŁÉ›żÉ‹mů•˘—ˇž˙BiśćI’¨Yš“IžŘ„Źß™s •ăůěgźńź¶ysbÖśĹÉ­© ÷ś)źŞ`yTšž’)č™—čÔ ÚwĺÄ[J„Šű¨~ł9^G'^ ęźŐ’Nn*Š˘T”j,jA° <ꝸ–ö# ˇđˇ6ŁĆ€u>ę—wŁúc ٧% > (üpR.J%DĄ”x¤·Y$K Mş]š¨N3 m¶ĐŁ:çQY•KJiZʧŃr9…P]SÚ…]*}פw*s¦3X¦‚JFhJŽkЍm*}ň2§ëy¨[ ¤č$Ž„š•gĘn|z€~ę-˙!ˇp|J§t¨Ł…zŁfŠ jЧ4)‹©ŠQH úĄf˘Č@Ą±ZŞ,†¤TF GZ¤=ާó8¤á6¤‘jŞĹJ‡ź*¬$Q‘Ł*Şšj¦k*Ś *Ş•Ů«µĺŞĆFĄ©Z«,H«jšĄŘş­ËąQE ¬śZŞsĘŁĐڬÚ¦ĹZ¦Ó:LÉÚËZ­Âzmöj•Ę1űş®Ôú¤–ڮ˓®+š©®ô¬iÔ®‚J¤J  bKĆz§Í±)®…ęö:Ż_l«Nî Żˇš¬+ę±Ë«ĄÉ«çú¬»®Á«K?{«3ËĂz1#‹¨ůš2&9°ů ±—:7i¬.ŰŻ%Á©˙<˛& Ż+ł) ˛řú§ »ŻKŞ>űŻ'‹ŻB{¨Y ­ľ:ĄxzŻFŰĄüzgK®Ë´üÚłŠşŞć ŻS ł)۵h[®ý Ąň:¶#۲ŻP›ĄRKµx‹·¸&«¨"«±Ë:­ÁęµBë˛*;µ%›°i›¸{§‘;¸‡ëłš;±łďJ§l۵pË·«¶rk¸x(¸O˛é:·kşZ »¦{¸+¸[ą¸»ş·KŞ«›±˝;ą®;»°«¸»KŻĂ»·Š»¸8»·ąŰ»Ž+ąE;»Čz»—+»ĂKµ†[¸Î«˝ÄKĽv»»r‹˝++ľ\ű¶ă[¸Ë‹ąÇ‹ľé+şw‹Ľ˙Í µí[Ľű©„›·j ľŘŰ˝‰[˛Đ‹ľLľŮ[ľíË»ň żŔkŔó» ŚĽâ»¸Ěľ’Ëż´kŻ÷[˝5›ż÷ZÁlÁLżĚŔ" Á¬Ŕ'LÂ)Ľ˝¬ÁĚ»ěżU{ÁyöÂëk¶-«˝¬»1ĽÂŢëĂ ÜżďŰĂă{Ľ8ŚŔ0ěľ#¬Â-\ĂŚ+Ä,ĚĂžJĂOěÄJ›ĂU›Ľžë·<ÜĽśąÉë˝AěÄ?LÄű ¸P<ÄôŞ´"|˝Y›Ĺć Ćc̰á†ÁO\…‘űY[\ş'+¶a»˛ęk«¶ĘÄ´kąf;Ŕ7ü¶f\ÄąKąěJÁ–ş;ë´|®Kűżz+ǬzÉ˙tLĂ%jŞż«µOú·çK¶Ţ8ŻܱěJ°~\ÂÄŞŞ{şżëČ̱<›\"1Ëó{Ë\ËŞúČslÉ«· ż˘L® *ę:† ë«¶µev´ŹÚ©˛«ĆZ*ŁŁŚ[?+˛Ŕj`Ö Í:«ż~±ŹŞ·¬Éă¬Í ĽŞe†Ě[u­L+®ńL´ŘzłkËďÎë`Íí0Ë…śÎe‹°‹Ł†ę¦»ś-x÷ ˝ } í©rŕĐщpŤŃ}ŃÝĐ}ŃíM$}Ň!Ťmś-íŇ/m¶M2 »VŠ8Ó0 Óăŕ­Ó< ˇ/4­.kHÔE}‰7ÝK˘š–Ô§VB Ô=˝ÔCÝÔÓK4ŕÔP}ÔPíŠaĐŠYMÓXmÔM]ŐSݦĆÔ:ŤÔ^mŐ^°Ó6đÓr=×Z]×W]-yŤh Ó}í× Ř-ŘMŘ…m؇ŤŘ‰Ý;euler-1.61.0/docs/reference/Makefile0000644000175000001440000002402510331246762016111 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/reference/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs/reference DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(referencedir)" referenceDATA_INSTALL = $(INSTALL_DATA) DATA = $(reference_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = referencedir = $(prefix)/share/doc/euler/reference reference_DATA = \ *.gif\ *.html\ *.css EXTRA_DIST = $(reference_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/reference/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-referenceDATA: $(reference_DATA) @$(NORMAL_INSTALL) test -z "$(referencedir)" || $(mkdir_p) "$(DESTDIR)$(referencedir)" @list='$(reference_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(referenceDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(referencedir)/$$f'"; \ $(referenceDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(referencedir)/$$f"; \ done uninstall-referenceDATA: @$(NORMAL_UNINSTALL) @list='$(reference_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(referencedir)/$$f'"; \ rm -f "$(DESTDIR)$(referencedir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(referencedir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-referenceDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-referenceDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-referenceDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am \ uninstall-referenceDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/docs/doc.html0000644000175000001440000002667507522242775014173 0ustar ericusers Euler - documentation
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Documentation

The user interface

EULER uses two windows : a text window and a graphics window.

The text window contains the menu and is designed for user input and output of EULER. It is a scrollable window. You can use the scrollbar to scroll through available text or the page up and down keys. All user input is preceded by a prompt (>). Furthermore, there are output and comments (preceded by %). The size of the window is saved at exit so that the window will have the same size the next time you run EULER. (see below for preferences)

The graphics window is used, whenever EULER draws output. Unless the graphics screen has been cleared, EULER will redraw the screen automatically. The size of the graphics window is saved at exit so that you will get the same size the next time you run EULER (see below for preferences).

You can switch between both screens with the tabulator key while editing input.

Using Notebooks (.en files)

The interface works as a terminal, allowing command editing, and then interpret the commands by an return key stroke. The cursor is shifted to the next command line. The line, on which the cursor is, is the active command line : this is the line that is interpreted by Euler when the return key is stroken. This version of EULER uses notebooks. i.e., old commands can be edited and changed, than interpreted again. Comments may be added to commands to explain them. This is a smooth and flexible interface.

Note : The most important fact about notebooks is that EULER still uses the sequence of commands as they are executed. So if you change the value of a variable and go to previous command, the changed value is used. You may also change a previous command and execute it again. Its output is then replaced with the new output and EULER proceeds to the next command.

Furthermore, the list of command inputs, outputs and comments can be saved as notebook files (they are saved as text files) so that they can be given to other people or can be kept as documented computations. These files can be loaded with the Open menu command or, just by dragging the file from an XDND protocol compatible file manager (Rox, Nautilus). For now, I have a problem with Konqueror (??) - to be fixed. The directory where the notebook file is located is the working directory. Euler module file in the same directory can be loaded with the load command

Notebook files are different from Euler module files (*.e files), which are collections of functions programmed euler language , and which may be loaded with the load command.

You may not only change previous commands, but also delete them or insert new commands. Use the edit menu to do this and to learn about the keyboard shortcuts.

The line editor

Text can be entered after the prompt (>) using the keyboard. If a letter is wrong, it can be canceled with the backspace key or the delete key. The cursor left and right keys position the cursor back and forth in the line. The line editor is always in insert mode, so any character is inserted at the cursor position. The home key positions the cursor to the beginning of the line, and the end key to the end of the line. Escape clears all input. Shift cursor left or right position the cursor one word to the right or left. You can also select with the mouse, copy, cut and paste text through the X clipboard. Finally, the input is entered by pressing return. Then EULER will start to interpret the command. The cursor can be at any position of the input line, when Return is pressed.

Euler records the previous executed commands in an history. Previous input can be recalled in the current line with shift cursor-up and shift cursor-down.

Pressing the insert key extends incomplete commands. Pressing this key again gives another extension, if there is one. The search goes through the command history, the implemented functions, the user defined functions and the built-in commands in that order.

There are some other special keys. The tabulator key switches to the graphics screen and from there any key switches back. The escape key stops any running EULER program and some internal functions, like the 3-dimensional plots, the linear equation solver and the polynomial root finder.

Cursor-up and cursor-down position the input line to the next or previous input. If you execute this line, its output will be replaced by the new output. Page-up and page-down go several pages back or forth, but do not change the cursor position. If you want to set the cursor to a command, you can click at the correct position with your mouse.

You may add comments to a command. This comment will be printed before the command. Each line of the comment will start with %.

EULER input can spread over several lines by the use of "..". The two dots are allowed at any place, where a space is acceptable. E.g.

>3+ .. some comment
>4
	7
>3+4
	7

Comments can follow the ".." and are skipped.

Editing user defined functions

when the function keyword is encountered at the beginning of a line, the editor is sent in a user defined editor mode which allows function body editing.

>function f(x)
$  return x^2-1;
$endfunction
>

By the way, the notebook interface uses the escape key to end a function definition, which is entered directly into the line editor. I.e., it will clear the input line and print $endfunction. Pressing return will end the function definition.

For more information about the euler functions, read the euler reference.

Menus

Most menu items are self explaining. However, here is a short description of the less obvious things.

The File menu contains commands to load and save notebooks, and to create new notebooks. This should not be mixed up with the loading of EULER files (*.e), which contain commands to be executed, whereas notebooks contain complete sessions with output and comments. More over, this command lets you save the graphics to Postscript. the size of the postscript picture depends on the graphics window size (just try and see).

As mentioned, each notebook command may have a comment, which you can edit with the Edit menu command. It will appear in green. Paragraphs are marked by empty lines. You may cut and paste in this window with the usual commands (Ctrl-X, Ctrl-V, Ctrl-C). All outputs can be deleted. Finally, you may insert or delete the current command (including comments and output) or insert a new command here.

The Misc menu gives access to the preference dialog and to the Demo sub menu. This submenu allows you to load quickly the demo notebook files provided with euler. The program scans the default install directory (INSTALL_DIR/share/euler/progs/) and watch for notebook files. So, if you copy a notebook in this directory, it will appear in the demo menu the next time euler is run.

The Help menu lets you view the documentation. There is also the traditionnal about box.

The preference dialog

The Option menu lets you set the preferences up. By default, the preferences will be saved at EULER exit so these settings will affect the next session of EULER as well.

You can set the stack size and the size of the internal graphics storage here. Changes will be effective at the next start of EULER.

On the next page, you can choose the number of lines per screen for the graphics font. The higher this number, the smaller the font.

Next, you can adjust the 16 colours of EULER. These colours are used for the text editor, the plot command, the 3D plots etc. E.g., color(n) will set the colour for the next plot. Other commands are wirecolor, fillcolor. You may want to put these commands into euler.cfg, which is loaded at program start. Note that the density plots and shaded 3D plots use a different colour scheme, which is only affected by the color nb 1.

Finally, You can set a flag to let Euler save preferences at exit (the default). You may choose another browser than the one suggested (netscape by default). And You can also reset the preferences to the default values.

The resource and config files

Euler uses a resource file and a config file. Both are saved in the .euler/ directory in the user's home.

You don't have to worry about these files since they are created by euler itself if they don't exist.

The preferences are saved in the resource file named eulerrc. You may change the values with the preference dialog or by editing the file with any text editor.

The config file euler.cfg contains euler commands to be executed at start up, like defining default path for euler files, loading default packages ...

The first time you run euler, a default config file is created, but you may edit it to meet your needs. Any valid euler command will be executed.

euler-1.61.0/docs/news.html0000644000175000001440000001417407522242727014366 0ustar ericusers Euler - news
About Euler...
News
Screenshots
Documentation
Reference
Examples
Download
Message board
Links
Contact
 

Latest news

August 3rd 2002

Euler 1.60.6 is out !

Many enhancements for this release : end line DOS characters are now handled properly so that notebooks and euler files can now be loaded directly when they come from a Windows platform. A bug fix in the postscript code, and in the modulo function (many thanks to Boris).

Graphical interface : the wheel mouse can now be used to scroll the text window content. Notebooks can be loaded with a simple drag and drop from gtk/gnome file managers (ROX and Nautilus). it should run ok for any xdnd protocol compatible file manager, but I have a problem with Konqueror for the moment (sorry). A popup menu has been added.

Better event management, so that animations are now usable (though not using a threaded scheme yet).

logspace, xlogplot, ylogplot, xylogplot, xlogmark, ylogmark, xylogmark enhanced and included in util.e (no more in a separate package) so that log scale plots are available by default.

The Euler web site is available in German (many thanks to Thomas Meyer for translating my pages) and in French.

I think this release can be considered as the new stable Gtk+ Euler version.

Download : Euler is now available as a source archive and a RPM binary package (for Linux x86).

Download ... Download ... Télécharger ...


May 17 2002

Euler 1.60.5 is out !

bugfix in my portable scandir function (oops), bugfixes in line and lineinput euler functions, bugfix in the project function. stack size defaults have been increased, but it still work with less memory.

An antialiasing function has been added to enable or disable the use of antialiasing in density plots.

A figure function has been added to let the user quicly draw multiple subplots on the the graphical window (See the figure.en demo).

The animate and rotate functions have been implemented as in the Windows version, though Gtk euler doesn't handle animation with the same commands (see the demo file and >help beginpages). This release still has a problem with catching events when the calculation is running. I hope this will be fixed in the next release with the use of threads.

Download now ...


April 13 2002

Euler 1.60.4 is out !

bugfixes in searchfile functions, a portable scandir function (I hope it will run now on Solaris), a "delete outputs" menu item.

Download now ...


February 8 2002

Euler 1.60 is out !

it comes with some bug fixes, selections (cut, copy, paste to the X clipboard), a new demo menu, and better 3d graphics.

Download now ...


January 2nd 2002

a message board for euler

A message board is now available for general or development Euler discussion.


September 23 2001

New Euler 1.59.1 version

Euler can now be installed in usual directory (/usr ou /usr/local). The resource and config files are stored in the .euler directory in each user's home, enabling each one to configure euler the way he wants.

The html documentation can now be reached from euler. A browser option has been added to the preference dialog to let the user choose its favorite web browser.

Bug fixes in the postscript output (I think it's better) and animation engine (delay can now be less than 1 s).

See the download page to get the source.


September 9 2001

Euler 1.59 is out !

Full featured user interface via the GTK+ toolkit. See the download page to get the source.

euler-1.61.0/docs/Makefile0000644000175000001440000003607410331246762014162 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # docs/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = .. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = docs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(docsdir)" docsDATA_INSTALL = $(INSTALL_DATA) DATA = $(docs_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = SUBDIRS = french german images reference docsdir = $(prefix)/share/doc/euler docs_DATA = \ *.html\ *.css EXTRA_DIST = $(docs_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-docsDATA: $(docs_DATA) @$(NORMAL_INSTALL) test -z "$(docsdir)" || $(mkdir_p) "$(DESTDIR)$(docsdir)" @list='$(docs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(docsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docsdir)/$$f'"; \ $(docsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docsdir)/$$f"; \ done uninstall-docsDATA: @$(NORMAL_UNINSTALL) @list='$(docs_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(docsdir)/$$f'"; \ rm -f "$(DESTDIR)$(docsdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docsdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-docsDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-docsDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-docsDATA install-exec install-exec-am \ install-info install-info-am install-man install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-docsDATA \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/Makefile.am0000644000175000001440000000107010263643111013603 0ustar ericusers## Process this file with automake to produce Makefile.in ## Created by Anjuta - will be overwritten ## If you don't want it to overwrite it, ## Please disable it in the Anjuta project configuration SUBDIRS = src docs progs eulerdocdir = ${prefix}/share/doc/euler eulerdoc_DATA = \ README\ COPYING\ AUTHORS\ ChangeLog\ INSTALL\ NEWS\ TODO EXTRA_DIST = $(eulerdoc_DATA) # Copy all the spec files. Of cource, only one is actually used. dist-hook: for specfile in *.spec; do \ if test -f $$specfile; then \ cp -p $$specfile $(distdir); \ fi \ done euler-1.61.0/euler.spec0000644000175000001440000000160210263424204013540 0ustar ericusers %define ver 1.61.0 %define rel 1 %define prefix /usr Summary: A program for doing mathematics Name: euler Version: %ver Release: %rel Copyright: GPL Group: Applications/Science Source: http://prdownloads.sourceforge.net/euler/euler-%{ver}.tar.gz Packager: Eric Boucharé %description Euler is a program for quickly and interactively computing with real and complex numbers and matrices, or with intervals. It can draw your functions in two and three dimensions. %build make %install make install %clean make uninstall %files %{prefix}/bin/euler %{prefix}/share/euler/help.txt %dir %{prefix}/share/euler/progs/* %dir %{prefix}/share/doc/euler/* %dir %{prefix}/share/doc/euler/images/* %dir %{prefix}/share/doc/euler/french/* %dir %{prefix}/share/doc/euler/german/* %dir %{prefix}/share/doc/euler/german/images/* %dir %{prefix}/share/doc/euler/reference/* euler-1.61.0/progs/0000755000175000001440000000000010331246762012712 5ustar ericuserseuler-1.61.0/progs/x.e0000644000175000001440000000433207417015640013331 0ustar ericuserscomment Exact solver endcomment .. ### Exact arithmetic ### function xlgs (A,b,n=20) ## Compute the solution of Ax=b. ## n is the number of residual iterations. ## The iteration stops, when there is no more change in x. ## You can specify an epsilon eps with eps=... as last parameter. {LU,rows,c,d}=lu(A); LU=LU[rows]; if (isvar("eps")); localepsilon(eps); endif; v=lusolve(LU,b[rows]); loop 1 to n; r=residuum(A,v,b); vn=v-lusolve(LU,r[rows]); if vn~=v; break; endif; v=vn; end; return vn; endfunction function xinv (A,n=20) ## Cumpute the invers of A using residual iteration. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); return xlgs(A,id(cols(A)),eps=eps); else (isvar("eps")); return xlgs(A,id(cols(A))); endif endfunction function xlusolve (A,b,n=20) ## Compute the solution of Ax=b for LU-matrices A. ## E.g., A may be a lower triangle matrix. ## n is the number of residual iterations. ## The iteration stops, when there is no more change in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; v=lusolve(A,b); loop 1 to n; r=residuum(A,v,b); vn=v-lusolve(A,r); if vn~=v; break; endif; v=vn; end; return vn; endfunction function xpolyval (p,t,n=20) ## Evaluate the polynomial at values t using exact residual ## operations. The iteration stops, when there is no more ## change in the value. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; s=t; si=size(t); A=id(cols(p)); b=flipx(p)'; loop 1 to prod(si); A=setdiag(A,-1,-t{#}); v=lusolve(A,b); loop 1 to n; r=residuum(A,v,b); vn=v-lusolve(A,r); if vn~=v; break; endif; v=vn; end; s{#}=v[cols(p)]; end; return s; endfunction function xeigenvalue (a,l,x=0) ## xeigenvalue(A,l) returns an improved the eigenvalue of A. ## l must be closed to a simple eigenvalue. ## Returns the eigenvalue and the eigenvector. l1=l; if x==0; x=kernel(a-l1*id(cols(a))); endif; if x==0; error("Eigenvalue generation failed!"); endif; x=x[:,1]; repeat; x=(a-l1*id(cols(a)))\x; x=x/sqrt(x'.x); l2=residuum(x',residuum(a,x,0),0); if l1~=l2; return {l2,x}; endif; l1=l2; end; endfunction euler-1.61.0/progs/interest.e0000644000175000001440000000440707417015640014722 0ustar ericuserscomment Computes interest rates (no guarantee!). rate(x); computes the interest rate for x[0],...,x[m], the sum of which must be positive, x[i] is at time i=0..m. rate2(x,n); does the same, but x[i] is at time n[i]. investment(start,rate,final,n,i0,i1); computes the interest rate of an investment start at 0 with paybacks rate from time i0 to time n-i1, and a final investment at n. This may be used for loans or savings. endcomment function rate (x) ## Compute the interest rate in % for a vector events at times ## 0,1,...,n. Negative numbers mean payments, positive mean income. ## E.g.: rate([-100,5,5,5,5,5,5,5,105]) will be 5%. if sum(x)<0; error("Rendite negativ?"); endif; q=polydif(x); c=1; repeat cnew=c-polyval(x,c)/polyval(q,c); if c~=cnew; break; endif; c=cnew; end; return (1/cnew-1)*100; endfunction function rate2 (x,n) ## Same as rate but at times n1,n2,... (can be fractional) if sum(x)<0; error("Rendite negativ?"); endif; k2=x*n; n2=n-1; k2=k2[2:length(x)]; n2=n2[2:length(x)]; c=1; repeat cnew=c-sum(x*c^n)/sum(k2*c^n2); if c~=cnew; break; endif; c=cnew; end; return (1/cnew-1)*100; endfunction function rateformula (f,k0,r,k1,n,i0,i1) return k0*f^n+r*f^i1*(f^(n-i0-i1+1)-1)/(f-1)+k1 endfunction function investment (start,instalment,final,n,i0=1,i1=1) ## Computes the interest rate of a loan and other investments. ## Note that payments are negative! ## start: start investment at period 0 ## instalment: from start of periods i0 to n-i1 ## final: that is the final dept after n periods ## The result is the interest rate in %. ## Example for a loan: investment(1000,-100,-900,10,1,0) ## (first payment after 1 period, last after n periods) ## Example for a savings account: investment(0,-100,1200,10,0,1) ## (first payment immediately, last aftern n-1 periods) si=size(start,instalment,final,n,i0,i1); f=zeros(si); loop 1 to prod(si); f{#}=bisect("rateformula",1.0000001,2,start{#},instalment{#}, .. final{#},n{#},i0{#},i1{#}); end; return (f-1)*100; endfunction function finaldebt (loan,periods,rate,payment,start=1) ## Compute the final dept of a loan after periods of payments. f=1+rate/100; return loan*f^periods-payment*(f^(periods-start+1)-1)/(f-1); endfunction euler-1.61.0/progs/steffens.e0000644000175000001440000000222507417015640014676 0ustar ericuserscomment Steffenson iteration endcomment function steffenson (ggg,x0) ## Does n steps of the Steffenson operator, starting from x. ## Additional parameters are passed to ggg. ## The loop is continued to convergence. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x=x0; repeat if isfunction(ggg); a=ggg(x,args(4)); b=ggg(a,args(4)); else a=expreval(ggg,x); b=expreval(ggg,a); endif; c=b-2*a+x; if c~=0; return x; endif; xn=(x*b-a*a)/c; if xn~=x; return xn; endif; x=xn; end endfunction function nsteffenson (ggg,x0,n) ## Does n steps of the Steffenson operator, starting from x0. ## Additional parameters are passed to ggg. Returns the ## vector of iterated values. ## ggg may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; y=zeros(n,cols(x0)); x=x0; loop 1 to n; if isfunction(ggg); a=ggg(x,args(4)); b=ggg(a,args(4)); else a=expreval(ggg,x); b=expreval(ggg,a); endif; c=b-2*a+x; if c~=0; i=#; return y[1:i-1]; endif; x=(x*b-a*a)/c; y[#]=x; end return y; endfunction euler-1.61.0/progs/cg.e0000644000175000001440000000215407417015640013453 0ustar ericuserscomment The CG method endcomment function cg (A,b,x0=0,f=4) ## Solves the linear system Ab=x, iterating with starting point x0. ## If x0 is missing the algorithm starts with 0. ## A must be positive definite. n=length(A); if argn==2; x=zeros(size(b)); else; x=x0; endif; h=b-A.x; r=h; alt=1e300; count=0; repeat fehler=sqrt(r'.r); if fehler~=0; return x; endif; if count>f*n; if fehler>alt; return x; endif; endif; count=count+1; alt=fehler; a=(r'.r)/(h'.A.h); x=x+a*h; rn=r-a*A.h; h=rn+(rn'.rn)/(r'.r)*h; r=rn; end; endfunction function cgn (A,b,x0=0) ## Solves the linear system Ab=x, iterating with starting point x0. ## If x0 is missing the algorithm starts with 0. ## It iterates only dim(A) times. n=length(A); if argn==2; x=zeros(size(b)); else; x=x0; endif; p=b-A.x; r=p; loop 1 to n; fehler=r'.r; if fehler~=0; return {x,#}; endif; a=(r'.r)/(p'.A.p); x=x+a*p; rn=r-a*A.p; p=rn+(rn'.rn)/(r'.r)*p; r=rn; end; return {x,n}; endfunction function cginv(A) B=A; n=cols(A); Id=id(n); null=zeros(n,1); loop 1 to n; B[:,#]=cg(A,Id[:,#],null); end; return B; endfunction euler-1.61.0/progs/user/0000755000175000001440000000000010331246762013670 5ustar ericuserseuler-1.61.0/progs/user/saite.en0000644000175000001440000000174007417015640015323 0ustar ericusers% % J.Breitlow (jbh.bln@foni.net) 11/2000 Demonstration of string sound with EULER% Version 0.9 % % The file shows what influence different starting conditions have % on the sound of a string. % % Load the functions for wav file generation and playing. >load "sound.e" % loading some useful funtions... >load "user\saite.e" % set startind condition f(x)=... with boundary conditions f(0)=f(2*pi)=0 >function f(x) $t=2.0*pi/3.0; $return saite(x,t) $endfunction % Now let's have a look at our function >fplot("f",0,2*pi);xlabel("x");ylabel("y"); shg; % We calculate the fourier coefficients of the starting conditions. >n=1:20; fn=an(n) % To compare them they are put into a graph %xmark(n,abs(fn));xlabel("order");ylabel("intensity"); shg; >plotbar(n,0,0.5,abs(fn));shg; % How does the Fourier-Approximation fit the function? >calcfuncts(fn); shg; % A sound file can be created by overlaying all functions >makesound(fn,4,"saite.wav"); % Let's listen zo the result: >playwave("saite.wav"); > euler-1.61.0/progs/user/fftuser.en0000644000175000001440000000450007417015640015671 0ustar ericusers>ftzufo=3; >stuetzpkte=72; > >function fract(x) $return 1+x-round(x+0.5,0) $endfunction > >function inint(t) $useglobal $return round(fract(t)*stuetzpkte,0)/stuetzpkte $endfunction > >function sinint(t) $useglobal $return sin((inint(t))*2*pi) $endfunction > >t=[0:1727]/864;f=sinint(t);xplot(t,f); >c=fft(f); p=20*log(abs(c)/864); >xplot((0:863)/2,p(1:864));xgrid([1,72]); > >stuetzpkte=72;ftzufs=3;ftres=256; > >function inint(t) $useglobal $return mod(round(t/(ftzufs*ftres),0),stuetzpkte)/stuetzpkte $endfunction > >function sinint(t) $useglobal $return sin((inint(t))*2*pi) $endfunction > >t=[0:432]/2*ftres;f=sinint(t);xplot(t*20e-3/(ftres*stuetzpkte*ftzufs),f); > >t=[0:110592];f=sinint(t);xplot(t,f); >c=fft(f); p=20*log(abs(c)/55296); >xplot((0:4095)/144,p(2:4097));ygrid(-0.01); euler-1.61.0/progs/user/bad.e0000644000175000001440000002101707417015640014565 0ustar ericusers.. This program starts automatically. cls; "" " BirthAndDeath" "" comment This program simulates any birth and death process with birthrate, deathrate and population on start time as parameters. Written by bjoern boening & helge nordmann - 1996.06.05 endcomment wait(15); cls; function okok(delay=90) "" " >> Please press [Enter]" return wait(delay); endfunction function rnd ## generate a random number u=random(1,1); ## be sure 'u' is in ]0,1[ if (u==0 || u==1); u=rnd(); endif; return u; endfunction function deltatime(bi) ## the time changing algorithm u=rnd(); z=-log(1-u)/bi; return z; endfunction function deltapop(lambda, mue) ## the population growing / shrinking algorithm s=-1; u=rnd(); pPlus=lambda / (lambda + mue); if (u500 ); step= (og -ug) / 500; endif; ## no higher precision needed x=ug:step:og; hold off; setplot( ug, og, 0, 1); p=normaldis((x-xmm)/xss); color(2); xplot(x, p); ctext("population", [500, 950]); vctext("p r o b a b i l i t y", [20, 500]); title("probability of 'less than or equal' population"); wait(360); return 0; endfunction function simulation(lambdatext, muetext, ti, xi, i) ## the simulation algorithm ## calculate the new birth- and death rate lambda=interpret(lambdatext); mue=interpret(muetext); ## legal values ? if (xi<0); lambda=0; endif; ## xi=0 may be allowed in some simulations if (xi<=0); mue=0; endif; ## all dead bi= lambda + mue; if (bi<=0); return { 1. * ti, xi}; endif; ## no more changes in population ## calculate the new time and population and put it out ti=ti+deltatime(bi); xi=xi+deltapop(lambda, mue); return {ti, xi}; endfunction function simustat(nrloop, nrstep, t, x) ## calculate the mean value for every simulation and all simulation ## steps ## declare & initialize the help variables ssx=0; ssxq=0; ## declare & initialize the vectors st=zeros(1, nrstep); sx=zeros(1, nrstep); sxq=zeros(1, nrstep); sxx=zeros(1, nrstep); ## setting the helpvariables for i=1 to nrstep; for nr=1 to nrloop; st{i}=st{i}+t[nr, i]; sx{i}=sx{i}+x[nr, i]; sxq{i}=sxq{i}+x[nr, i] * x[nr, i]; ssx=ssx+x[nr, i]; ssxq=ssxq+x[nr, i]*x[nr, i]; end; sxx{i}=sxq{i} - sx{i} * sx{i} / nrloop; end; ssxx=ssxq - ssx *ssx / (nrstep * nrloop); ## now create 3 functions giving the range of all the processes tm=st / nrloop; xm=sx / nrloop; xs=sqrt( sxx / nrloop); ## print on screen the results of the statistics if (nrloop>1); graphst(tm, xm, xs), endif; ## calculate the mean value and the standard distribution for all simulations ## and all the steps xmm=ssx / (nrstep * nrloop); xss=sqrt( ssxx / (nrstep * nrloop) ); ## the distribution is discrete, in case of small population we use the ## binomial distrib. p0=1 - xss / xmm; n=xmm * xmm / (xmm -xss); n=round(n, 0); ## 'n' must be an integer ## binomial distrib. is allowed if (n<=60); ug=xmm -1.5 * xss; og=xmm +1.5 * xss; if (ug<=0); ug=0; endif; ug=round(ug, 0); og=round(og, 0); rlength= og -ug; p=zeros(1, rlength+1); for i=0 to rlength+1; r=ug + i; p{i}=binomidistr(p0, n, r); end; ## calling the graphic function to show the binomial distr. r=ug:og; bindistrgraph(r, p); ## alternatively on larger population we use the normal distribution (built in) else; ## calling the graphic function to show the distribution normdistrgraph(xmm, xss); endif; ## telling the user the mean val. & stand. distr. "" "Over a time " tm[1, nrstep] "the population is" xmm "with a standard deviation" xss "" okok(); return 0; endfunction function continue ## give the user a chance to do the simulation as many times as needed repeat; cls; "" "Do You want to do another simulation ?" "" "Yes: Y or No: N" "" again=lineinput("Y / N "); if ( ( again=="Y" ) || ( again=="y" ) ); mainBaD(); else; break; endif; end; return 0; endfunction function mainBaD ## main program - BaD: BirthAndDeath ## nrstep: steps to calculate for one simulation (precision of screen window) nrstep=500; ## get the parameters from user nrloop=numberof(); lambdatext=birthequation(); muetext=deathequation(); x0=startvalue(); ## declare the matrices t=zeros(nrloop,nrstep); x=zeros(nrloop,nrstep); ## informing the user about the process "" "now calculating ..." ## simulate it nrloop times for nr=1 to nrloop; ti=0; xi=x0; ## one simulation for i=1 to nrstep; {ti, xi}=simulation(lambdatext, muetext, ti, xi, i); t[nr, i]=ti; x[nr, i]=xi; end; end; ## print on screen the results of the simulation shrinkwindow(); graph(t, x, nrloop); ## doing some statistics "" "doing some statistics ..." ## calling the statistics function simustat(nrloop, nrstep, t, x); return 0; endfunction comment Used variables: i index, step number of simulation x0 begin process state 'population' xi actual process state 'population' ti actual time (start time is 0) lambda birth rate at any time mue death rate at any time lambdatext string holding an equation to calculate lambda muetext string holding an equation to calculate mue and some other variables in local processes endcomment okok(); cls; comment The algorithm: With birth rate 'lambda', death rate 'mue' and a random number 'u' u in the open interval ]0,1[ we generate a (positive) 'deltatime' deltatime = - log ( 1 - u ) / ( lambda + mue ) , after this time a change in population 'deltapop' will be made with a probability 'pIndex' of deltapop=+1 : pPlus = lambda / ( lambda + mue ) deltapop=-1 : pMinus = mue / ( lambda + mue ) . Then we repeat ... (500 times) endcomment okok(); mainBaD(); continue(); euler-1.61.0/progs/user/siggen.e0000644000175000001440000000137007417015640015313 0ustar ericuserscomment Funktionsname siggen1 Generiern eines Sinussignals mit fester Anzahl der Punkte pro Periode amplitude - Amplitude des Signals phase - Phasenverschiebung freq - Schwingungen innerhalb ppunkte samples - Anzahl der Punkte des Endsignals Wenn freq=1, dann gibt samples die Stuetzstellenzahl pro Schwingung an faktor - Multiplikator der Samples/Perioden fuer komfortable handhabung bei freq=1 inpi - Pi, mit dem die Funktion rechnen soll => z.B. pi() endcomment function siggen1 (amplitude=1,phase=0,freq=1,samples=100,faktor=1,inpi=3.14) samples=samples*faktor; freq=freq*faktor; lambda=2*inpi*freq/samples; n=[0:(samples-1)]; y=amplitude*sin(lambda*n+phase*2*inpi/360); xplot(n,y); return y; endfunction euler-1.61.0/progs/user/ctrldemo.en0000644000175000001440000000534207417015640016031 0ustar ericusers% Now loading library >load "user\control.e" % Draw the tribute of (s+2) >pbode([2,1],1); % And inv(s+2) >pbode(1,[5,1]); % if we want to draw W(s)=(s+2)/(s+5) we simply must add % the two tribute >pbode([2,1],[5,1]); % Into a term of the type (s+a) we can find the break % point: % % a(s/a+1) 1/a is called break point >pbode([1,1],1]; % in (s+1) break point is 1, we can see that a decade before % and after bode's diagrams of the magnitude is linear. % On a log-log paper of course. >pbode([1,1],1,expi=-4,expf=4); % In the diagrams we can look this better. For the phase % diagram we can to notice that a decade before phase % = 0 and after=90 >n=polycons([1,1]); >pbode(n,1,expi=-4,expf=4); % This is basically the method for plot asintotic Bode's % diagrams. We simply add the slope of the single tribute % for the magnitude and the tribute to the phase of each % terms. >n2=polymult(n,polycons([1000,1000,1000,1000])); >pbode(n2,1,expi=-3,expf=6); % There are 4 different tribute: % % (s+a) we have alredy noticed it % % (s-a) is like s+a in magnitude but not in phase >pbode([-1,1],1); >pbode([1,1],1); % and they reciprocal >pbode(1,[1,1]); >pbode(1,[-1,1]); % Now we can to examine the root's place. From a given % W(s)=N(s)/D(s) we can exctract the poly: % % P(s,k)=N(s)+kD(s) % % And when the k change its value the roots change places. % The root's place is the plot of the roots. % % For EXIT click out of the graph. If you click ON the % graph you can get information about the value of k that % permits the configuration. >place(polycons([1,2,8]),polycons([6,3,7])); % % % Some examples from: Esercizi di controlli automatici, % ed sidera. % % % % III.4 >pbode(1,polycons([0,-2,-4]),-1,2); >place(1,polycons([0,-2,-4])); % % % III.5 >pbode([-0.5, 1],polycons([0,-1,-5])); >place([-0.5, 1],polycons([0,-1,-5])); % % % III.7 >pbode([2,1],polycons([-1,1,pbode([2,1],polycons([-1,1,1])); >place([2,1],polycons([-1,1,pbode([2,1],polycons([-1,1,1])); % % % III.8 >pbode([1, 0, 1],polycons([2,-2,4]),pt=300); .. 300 campioni!— >place([1, 0, 1],polycons([2,-2,4])); % % % III.9 >pbode([1,0,1],polycons([0,-2,-4]),pt=600); .. 600 campioni! >place([1,0,1],polycons([0,-2,-4])); % % % III.10 >pbode([-2,1],polymult([2,1],[1,0,1])); >place([-2,1],polymult([2,1],[1,0,1])); % % % III.11 >pbode(1,polycons([0,2,2])); >place(1,polycons([0,2,2])); % % % III.12 >pbode(1,polymult([1,0,1],[2,1])); >place(1,polymult([1,0,1],[2,1])); % % % III.13 >pbode([-1,1],polymult(polycons(0),[1,0,1])); >place([-1,1],polymult(polycons(0),[1,0,1])); % % % III.14 >pbode([1,1],polymult([2,1],[5,4,1])); >place([1,1],polymult([2,1],[5,4,1])); % % % III.15 >pbode(polymult([3,1],[2,2,1]),polycons([0,1,-2,-4])); >place(polymult([3,1],[2,2,1]),polycons([0,1,-2,-4])); % euler-1.61.0/progs/user/saite.e0000644000175000001440000000150207417015640015141 0ustar ericusers function saite0 (x,t) c=0; a=2*pi; if x>0 && x t; c= (a-x)/(a-t); endif; return c; endfunction function saite(x,t) return map("saite0",x;t); endfunction; function afunct (x,n) return sin(n*x/2.0)*f(x); endfunction; function an1(n) return simpson("afunct",0,2*pi;n)/pi; endfunction; function an(n) return map("an1",n); endfunction; function makesound(an,tg,name) n=length(an); t=0:1/22050:tg; om=2*pi*220; w=0*t; for i=1 to n; w=w+an[i]*sin(i*om*t); end; savewave(name,w); return 0; endfunction; function calcfuncts(fn) n=length(fn); x=(0:5e-3:2*pi); f=ones(n+1,length(x)); f[1;]=fn[1]*sin(1*x/2.0); for i=2 to n f[i;]=f[i-1;]+fn[i]*sin(i*x/2); end; f[n+1;]=f(x); plot(x,f);shg; return 0; endfunction;euler-1.61.0/progs/user/scope.e0000644000175000001440000001002107417015640015141 0ustar ericusersfunction findYvrange(Vmin,Vmax) .. volt range cv=[20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001]; .. find the right range cvi=1; for i=1 to length(cv)-1 if (4*cv[i+1] < Vmax) || (-4*cv[i+1] > Vmin); cvi=i; break; endif; end; return cv[cvi]; endfunction function findXvrange(Vmin,Vmax) .. volt range cv=[20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001]; .. find the right range cvi=1; for i=1 to length(cv)-1 if (5*cv[i+1] < Vmax) || (-5*cv[i+1] > Vmin); cvi=i; break; endif; end; return cv[cvi]; endfunction function findtrange(Tmax) .. time range ct=[0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001,0.0005,0.0002,0.0001,0.00005,0.00002,0.00001,0.000005,0.000002,0.000001,0.0000005]; .. find the right range cti=1; for i=1 to length(ct)-1 if (10*ct[i+1]+epsilon < Tmax); cti=i; break; endif; end; return ct[cti]; endfunction function drawgrid(dt,dv) ho=holding(1); lw=linewidth(1); c=color(1); .. draw vertical lines ls=linestyle("."); for i=1 to 9 if i != 5 plot([i*dt,i*dt],[-4*dv,4*dv]); endif; end; linestyle(ls); plot([5*dt,5*dt],[-4*dv,4*dv]); for j=1 to 49 plot([j/5*dt,j/5*dt],[-0.1*dv,0.1*dv]); end; .. draw horizontal lines ls=linestyle("."); for i=-3 to 3 if i != 0; plot([0,10*dt],[i*dv,i*dv]); endif; end; linestyle(ls); plot([0,10*dt],[0,0]); for j=-19 to 19 plot([4.9*dt,5.1*dt],[j/5*dv,j/5*dv]); end; color(c); linewidth(lw); holding(ho); return 0; endfunction; function drawXYgrid(dv1,dv2) ho=holding(1); lw=linewidth(1); c=color(1); .. draw vertical lines ls=linestyle("."); for i=-4 to 4 if i != 0 plot([i*dv1,i*dv1],[-4*dv2,4*dv2]); endif; end; linestyle(ls); plot([0,0],[-4*dv2,4*dv2]); for j=-24 to 24 plot([j/5*dv1,j/5*dv1],[-0.1*dv2,0.1*dv2]); end; .. draw horizontal lines ls=linestyle("."); for i=-3 to 3 if i != 0; plot([-5*dv1,5*dv1],[i*dv2,i*dv2]); endif; end; linestyle(ls); plot([-5*dv1,5*dv1],[0,0]); for j=-19 to 19 plot([-0.1*dv1,0.1*dv1],[j/5*dv2,j/5*dv2]); end; color(c); linewidth(lw); holding(ho); return 0; endfunction; function scope (x=0,y1=0,y2=0) ## o scope(x,y1,), scope(x,,y2) and scope(x,y1,y2) shows a scope grid and ## the curves y1(x) or y2(x) or both. ## o scope(,y1,y2) shows the curve y2(y1) in XY mode. ## o scope() shows only the grid. if argn()==0; p=plot(); else if (argn()==1); error("not enough parameters (2 at least)"); else if (argn()==2) || ((argn()==3) && (y1==0)); .. normal mode ; one curve if !holding();clg; frame();endif; dt=findtrange(max(x)); if (y2==0); dv1=findYvrange(min(y1),max(y1)); else dv1=findYvrange(min(y2),max(y2)); endif; p=[0,10*dt,-4*dv1,4*dv1];setplot(p); drawgrid(dt,dv1); .. display ranges tp=toscreen([7.5*dt,3.8*dv1]); text("time : "|printf("%g s/div",dt),tp); tp[2]=tp[2]+textheight(); if (y2==0); text("CH1 : "|printf("%g V/div",dv1),tp); ho=holding(1); plot(x,y1); holding(ho); else text("CH2 : "|printf("%g V/div",dv1),tp); ho=holding(1); plot(x,y2); holding(ho); endif; else if (argn()==3) && (x==0); .. XY mode if !holding();clg; frame();endif; dv1=findXvrange(min(y1),max(y1)); dv2=findYvrange(min(y2),max(y2)); p=[-5*dv1,5*dv1,-4*dv2,4*dv2];setplot(p); drawXYgrid(dv1,dv2); .. display ranges tp=toscreen([2.5*dv1,3.8*dv2]); text("CH1 (X) : "|printf("%g V/div",dv1),tp); tp[2]=tp[2]+textheight(); text("CH2 (Y) : "|printf("%g V/div",dv2),tp); ho=holding(1); plot(y1,y2); holding(ho); else .. normal display ; two curves if !holding();clg; frame();endif; dt=findtrange(max(x)); dv1=findYvrange(min(y1),max(y1)); dv2=findYvrange(min(y2),max(y2)); p=[0,10*dt,-4*dv1,4*dv1];setplot(p); drawgrid(dt,dv1); .. display ranges tp=toscreen([7.5*dt,3.8*dv1]); text("time : "|printf("%g s/div",dt),tp); tp[2]=tp[2]+textheight(); text("CH1 : "|printf("%g V/div",dv1),tp); tp[2]=tp[2]+textheight(); text("CH2 : "|printf("%g V/div",dv2),tp); ho=holding(1); plot(x,y1); plot(x,dv1/dv2*y2); holding(ho); endif; endif; endif; endif; return p; endfunction euler-1.61.0/progs/user/smith.e0000644000175000001440000000360607417015640015167 0ustar ericusersfunction smith(r = [0, 0.2, 0.5, 1, 2, 5], x = [0.2, 0.5, 1, 2, 5]) ## SMITH Draws a Smith chart and sets hold to on so that you can plot the ## reflection coefficient on top of it. ## This is a quick little hack that draws a simple Smith chart, a diagram ## that is very frequently used in high frequency engineering. It maps ## the normalized impedance z to the reflection coefficient gamma: ## gamma = (z-1)/(z+1) with z = r+i*x . ## You can customize the function by specifying the r and x parameters ## 3-13-95 Frank Wiedmann for the matlab verion wiedmann@com.enst.fr ## 8-31-99 Eric Boucharé for the update to euler Eric.Bouchare@wanadoo.fr _setplot([-1,1,-1,1]); hold on; h = textheight(); w = textwidth(); tr = 2*pi*(0:.01:1); plot([-1,1],[0,0]); .. r = [0 .2 .5 1 2 5]; .. specify the r=const lines you want to draw for i=1 to length(r); rr = 1/(r{i}+1); cr = 1-rr; plot(cr+rr*cos(tr),rr*sin(tr)); p = toscreen([cr-rr,0]); if r{i}==0; rtext(printf("%g",r{i}),[p{1}-(w/2),p{2}-(h/3)]); else rtext(printf("%g",r{i}),[p{1}-(w/2),p{2}]); endif; end; .. x = [.2 .5 1 2 5]; .. specify the x=const lines you want to draw for i=1 to length(x); rx = 1/x{i}; cx = rx; tx = 2*atan(x{i})*(0:.01:1); plot(1-rx*sin(tx),cx-rx*cos(tx)); u = 1-rx*sin(2*atan(x{i})); v = cx-rx*cos(2*atan(x{i})); p=toscreen([u,v]); if u<0; rtext(printf("%g",x{i}),[p{1}-(w/2),p{2}-(h/3+h*v)]); elseif u>0 text(printf("%g",x{i}),[p{1}+(w/2),p{2}-(h/3+h*v)]); else ctext(printf("%g",x{i}),[p{1},p{2}-(h+h/3)]); endif; plot(1-rx*sin(tx),-cx+rx*cos(tx)); u = 1-rx*sin(2*atan(x{i})); v = -cx+rx*cos(2*atan(x{i})); p=toscreen([u,v]); if u<0; rtext(printf("%g",x{i}),[p{1}-(w/2),p{2}]); elseif u>0 text(printf("%g",x{i}),[p{1}+(w/2),p{2}]); else ctext(printf("%g",x{i}),[p{1},p{2}+(h/3)]); endif; end; hold off; return 0; endfunction euler-1.61.0/progs/user/scope.en0000644000175000001440000000160607417015640015330 0ustar ericusersThis is EULER, Version 1.42. Type help(Return) for help. Enter command: (8388608 Bytes free.) Utilities framed views Exact solver Remez algorithm Steffenson iteration Gauss integration Histogram plots Interval Solvers Broyden algorithm Minimization Nicer 3D plots Single Value Decomposition Tools >T=10e-3;f=1/T;t=0:T/50:T; >v1=3.5*sin(2*pi*f*t);v2=1.2*sin(2*pi*f*t-pi/3); >reset;clg;load scope;fullwindow(); >lw=linewidth(2);c=color(10);scope(t,v1,v2);color(c);linewidth(lw); >help scope function scope (x=...,y1=...,y2=...) ## Default for x : 0 ## Default for y1 : 0 ## Default for y2 : 0 ## o scope(x,y1,), scope(x,,y2) and scope(x,y1,y2) shows a scope grid and ## the curves y1(x) or y2(x) or both. ## o scope(,y1,y2) shows the curve y2(y1) in XY mode. ## o scope() shows only the grid. >scope() 0 0.01 -4 4 > euler-1.61.0/progs/user/control.e0000644000175000001440000002415707417015640015527 0ustar ericusers.. ========================================================================== .. Library for Theory systems and Automatic controls .. Version 0.999 BETA .. By Palma Alessio 1996. .. This software is FREEWARE, copy and spread it but not modify NOTHING ..=========================================================================== j=sqrt(complex(-1)); .. Before all we must define the pure imaginary "-< CONTROL V0.999>- for Dr. Grothmann's EULER." "Made by P.Alessio, University of L'Aquila (26 oct 1996)" "------------------------------------------------" "Bugs report and new idea:" " Palma Alessio" " Via Musone 29" " 65129 Pescara" " Italy" "j pure complex number definited" "Wait the loading please.." function fbode(n,d,w) ## Compute the value of a give function at the given w (omega) ## ## result = W(S) | ## | s=j*W ## ## n=num. d=den., w=puls. global j; return (polyval(n , j*w) / polyval( d, j*w)); endfunction; function xgridlog(inizio,fine,base=10,rn=1,d=1) ## Draw a Bode's Paper. there are not help! This because I'll have in ## project its full rewrite. nd=abs(fine-inizio); x=[ ]; for k = 0 to nd - 1; x = x | logbase(1:base,base) + k; end coords=setplot(); coords{1}=0; coords{2}=nd; setplot( coords ); xgrid(x,ticks=0); dots=window(); h = textheight(); w = textwidth(); ordinate = abs(dots[4] - dots[2]) - h; nvalori = floor(ordinate / (d*h)); intervallo = abs(coords[4]-coords[3]); passo = intervallo / nvalori; passod = ordinate / nvalori; hl=holding(1); st=linestyle("."); colore=color(3); for k=0 to nvalori; row=dots[2] + (passod * k); va=coords[4] - passo * k; rtext(printf("%g",round(va,rn)),[ dots[1]-(w/2), row]); plot( [0 , nd] , [va,va] ); end; passox=floor( abs( dots[1] - dots[3] ) / nd); for k=0 to nd; ctext( printf("%g",(inizio+k)), [ dots[1] + (k*passox) , dots[4] ]); end; holding(hl); linestyle(st); color(colore); return 0; endfunction; function arg2(x) ## return the fase but arg(-1)=-180 and NOT 180 ## x = complex number if abs(x) > 0; pha=arg(x); if (im(x) ~= 0) && (sign(re(x)) ==-1) ; pha=-pi; endif; else; pha=0; endif; return pha; endfunction; function phase(n,d,w) ## computer Phase for Bode diagrams ## ## phase vector = Phase(n,d,[start..end]); ## ## n=num. ## d=den. ## w=range where compute phase p=0; z=0; pha=[ ]; .. if den is a poly then solve its roots. if length(d)>1; p=polysolve(d); else; pha=arg2(d); endif; .. if num ... roots if length(n)>1; z=polysolve(n); else; pha=arg2(n); endif; .. check for s=0 poles ni=0; for k=1 to length(d)-1; if abs(p[k]) ~=0; ni=ni+1; endif; end; if ( length(d)==(ni+1) ); .. if there are only poles gain=fbode(n, 1,0); else; gain=fbode( n, polycons(p[ni+1:length(p)]) ,0 ); endif; .. adding all contrib. for k=1 to length(n)-1; if (re( z[k] ) > 0) && (im(z[k])~=0); ad=-pi; else ad=0; endif; pha=pha+arg2( fbode( polycons( z[k] ) , 1 ,w) )+ad; end; .. for .. for k=1 to length(d)-1; if ( re(p[k])>0) && ( im(p[k]) ~=0); ad=pi; else ad=0; endif; pha=pha+arg2( fbode( 1 , polycons( p[k] ) , w) )+ad; end; return pha+arg2(gain); endfunction; function pbode(n,d,expi=-2,expf=2,pt=100,base=10,width=1,what=1) ## draw the bode's diagrams of a given W(s) ## ## Example: ## {Magnitude,Phase}=Pbode(n,d,int(logbase(10,10)),int(logbase(1892,10))...); ## ## draw the digrams from 10 and 1000 ## n=num ## d=den ## wi=omega start at wi = base^expi, expi MUST BE INTEGER! ## wf=omega end at wf = base^expf, expf must be integer! ## pt=samples ## base = 10 ## what = 1 magnitude and phase both on the same graphic. ## 2 fase only ## 3 magnitude only ## 0 BEFORE Phase and then Magnitude one for time. ## width wwv=base^linspace(expi,expf,pt); t=1:length(wwv); setplot(); .. autoscaling on ma=20*logbase(abs(fbode(n,d,wwv)),base); pha=phase(n,d,wwv); oldwindow=window(); .. save graphic windows status .. * Magnitude of function transfer in decibels if what == 1; window(96,10+textheight(),1000,500); t1="Magnitude (dB), Phase (Deg)"; t2=""; else t1="Magnitude (dB)"; t2="Phase (Deg)"; endif; if (( what==0) || ( what == 3)) || (what == 1 ); old=linewidth(width); plot(t,ma); linewidth(old); title(t1); hold on; xgridlog(expi,expf,base); .. Bode paper, of course... hold off; endif; if what == 1; hold on; else if what == 3; wait(); endif; endif; .. * and Phase of it if what == 1; window(96,502+textheight(),1000,1024-textheight()); endif; if ( ( what==0) || (what==2) ) || (what == 1); old=linewidth(width); plot(t,pha*180/pi); linewidth(old); title(t2); hold on; xgridlog(expi,expf); .. Bode paper, of course... hold off; wait(); endif; hold off; window(oldwindow); return 0; endfunction; function place(n,d,zita=0,alfa=0,pstep=.1,kp=40,mstep=.1,km=40) ## Draw the root's place of a given W(s) transfer function ## ## mark the root of p(s,k) = Nw(s)+k Dw(s) ## ## when k go from -ABS(km) to 0 Negative place ## and k go from 0 to ABS(kp) Positive place ## ## zita and alfa are use for show forbitten zone of complex plain ## n=num. d=den. ## kp = ABSolute ending value of the k-parameter for the positive place ## km = ABSolute ending value of the k-parameter for the negative place ## mstep = Negative increasing step ## pstep = Positive Inc. step. kplus=0:pstep:kp; .. Where solve p(s,k) for pos. place kmin=0:mstep:km; .. and neg. place. Lplus=[]; .. roots list for k+ Lmin=[]; .. and k- zeri=[ ]; .. zeros of Nw(s) poli=[ ]; .. zeros of Dw(s) (poles) .. If there are zeros compute they if length(n)>1; zeri=polysolve(n); endif; .. and, if there are, poles if length(d)>1; poli=polysolve(d); endif; ..------------------------------------------ .. All points of the place pos. and neg. ..------------------------------------------ .. k+ dots for i=1 to length(kplus); Lplus=Lplus | polysolve(polyadd(d,kplus[i]*n)); end; .. k- dots for i=1 to length(kmin); Lmin= Lmin | polysolve(polyadd(d,-kmin[i]*n)); end; ..------------------------------------------ .. Plot Negative place ..------------------------------------------ plotplace("m.","Negative place",zeri,poli,Lmin); ..-------------------------------------------------------- .. Positive place, and hi-fi copy of the neg. procedure ..-------------------------------------------------------- plotplace("m.","positive place",zeri,poli,Lplus); return 0; endfunction; function plotplace(marchio,titolo,zeri,poli,lzeri) ## this function is called from place. ## internal function, NO Help sorry. correzione=[]; disegnaZeri = 0; .. if 1 then there are zeros to plot disegnaPoli = 0; .. the same but for the poles markerstyle(marchio); .. scaling setup if length(zeri)>0; correzione=correzione | zeri; disegnaZeri=1; endif; if length(poli) > 0; disegnaPoli=1; correzione=correzione | poli; endif; ..if correzione is empty we must change the way if length(correzione) > 0; c=xmark(lzeri|correzione); else c=xmark(lzeri); endif; hold on; ..can we draw the zeros? if disegnaZeri; markerstyle("mo"); xmark(zeri); endif; .. poles ? if disegnaPoli; markerstyle("m*"); xmark(poli); endif; title(titolo); .. ---------------------- .. mark place .. ---------------------- markerstyle("m+"); repeat x=mouse(); x if (x[1]>c[2]); break; endif; if (x[1]c[4]); break; endif; if (x[2] 0; pha=arg(x); if (im(x) ~= 0) && (sign(re(x)) ==-1) ; pha=-pi; endif; else; pha=0; endif; return pha; endfunction; function phase(n,d,w) ## computer Phase for Bode diagrams ## ## phase vector = Phase(n,d,[start..end]); ## ## n=num. ## d=den. ## w=range where compute phase p=0; z=0; pha=[ ]; .. if den is a poly then solve its roots. if length(d)>1; p=polysolve(d); else; pha=arg2(d); endif; .. if num ... roots if length(n)>1; z=polysolve(n); else; pha=arg2(n); endif; .. check for s=0 poles ni=0; for k=1 to length(d)-1; if abs(p[k]) ~=0; ni=ni+1; endif; end; if ( length(d)==(ni+1) ); .. if there are only poles gain=fbode(n, 1,0); else; gain=fbode( n, polycons(p[ni+1:length(p)]) ,0 ); endif; .. adding all contrib. for k=1 to length(n)-1; if (re( z[k] ) > 0) && (im(z[k])~=0); ad=-pi; else ad=0; endif; pha=pha+arg2( fbode( polycons( z[k] ) , 1 ,w) )+ad; end; .. for .. for k=1 to length(d)-1; if (re(p[k])>0) && (im(p[k]) ~=0); ad=pi; else ad=0; endif; pha=pha+arg2(fbode(1,polycons(p[k]),w))+ad; end; return pha+arg2(gain); endfunction; function bode(n,d,expi=-2,expf=2,pt=100,width=1,what=0) ## draw the bode's diagrams of a given G(s)=n(s)/d(s) ## ## Example: ## bode(n,d,floor(logbase(10,10)),ceil(logbase(1892,10))); ## ## draw the diagrams from 10 and 1000 ## n=num ## d=den ## wi=omega start at wi = base^expi, expi MUST BE INTEGER! ## wf=omega end at wf = base^expf, expf must be integer! ## pt=samples ## what = 0 magnitude and phase both on the same graphic. ## 1 magnitude only ## 2 phase only ## width w = (10)^linspace(expi,expf,pt); gdb = 20*logbase(abs(fbode(n,d,w)),10); ph = phase(n,d,w); h=textheight();b=textwidth(); if what==0; dh=floor((1023-7.5*h)/2); window([8*b,1.5*h,1023-2*b,1.5*h+dh]); xlogplot(w,gdb,10); hd=holding(1); window([8*b,4.5*h+dh,1023-2*b,1023-3*h]); xlogplot(w,ph/pi*180,10); holding(hd); elseif what==1; shrinkwindow(); xlogplot(w,gdb,10); else shrinkwindow(); xlogplot(w,ph/pi*180,10); endif; return 0; endfunction; euler-1.61.0/progs/user/cooling.e0000644000175000001440000001035107417015640015470 0ustar ericusers.. ********************************************************************** .. Application: Newton's Law of Cooling .. ********************************************************************** .. From the book: M.L. Abell, J.P. Braselton, "Mathematica By Example", .. Revised Edition, Academic Press, Boston, 1994. .. Euler implementation by Robert Jurjevic (C) M&R. .. Newton's Law of Cooling states that the rate at which the temperature .. T(t) changes in a cooling body is proportional to the difference between .. the temperature of the body and the constant temperature Ts of the .. surrounding medium. This situation is represented as the first-order .. initial value problem .. dT/dt = -k*(T-Ts) (1) .. subject to T(0)=T0, where T0 is the initial temperature of the body and .. k is the constant of proportionality. .. Example: A pie is removed from a 350 degrees Centigrade oven. In 15 .. minutes, the pie has a temperature of 150 degrees Centigrade. Determine .. the time required to cool the pie to a temperature of 80 degrees .. Centigrade so that it may be eaten. The temperature of surrounding .. air is 75 degrees Centigrade. .. Solution: function rk4 (ffunction,t,y0) ## y=rk4("f",t,y0,...) solves the differential equation y'=f(t,y). ## f(t,y,...) must be a function. ## y0 is the starting value. n=cols(t); y=dup(y0,n); loop 1 to n-1; h=t[#+1]-t[#]; yh=y[#]; xh=t[#]; k1=ffunction(xh,yh,args(4)); k2=ffunction(xh+h/2,yh+h/2*k1,args(4)); k3=ffunction(xh+h/2,yh+h/2*k2,args(4)); k4=ffunction(xh+h,yh+h*k3,args(4)); y[#+1]=yh+h/6*(k1+2*k2+2*k3+k4); end; return y'; endfunction function rhs(t, T, k, Ts) ## calculates right hand side of equation dT/dt = -k*(T-Ts) return -k*(T-Ts) endfunction function fun1(k, Ts, T0, t0, t1, h) ## calculates and plots solution of equation dT/dt =- k*(T-Ts) t = t0:h:t1; T = rk4("rhs", t, T0, k, Ts); shrinkwindow(); setplot(0, 50, 50, 350); plot(t, T); xgrid(0:10:50,1); ygrid(50:50:350,1); title("Pie Temperature"); return T; endfunction function fun2(k, Ts, T0, T1, t0, t1, n) ## calculates T(t1)-T1 h = (t1-t0)/n; t = t0:h:t1; T = rk4("rhs", t, T0, k, Ts); return T[length(t)]-T1; endfunction function fun3(t2, k, Ts, T0, T2, t0, n) ## calculates T(t2)-T2 h = (t2-t0)/n; t = t0:h:t2; T = rk4("rhs", t, T0, k, Ts); return T[length(t)]-T2; endfunction function fun4(k, Ts, T0, t0, t1, n) ## calculates T(t1) h = (t1-t0)/n; t = t0:h:t1; T = rk4("rhs", t, T0, k, Ts); return T[length(t)]; endfunction "Application: Newton's Law of Cooling" .. The parameters are: Ts = 75; .. temperature of surrounding air T0 = 350; .. initial pie temperature t1 = 15; .. elapsed cooling time when pie temperature becomes T1 T1 = 150; .. known pie temperature after t1 minutes of cooling T2 = 80; .. eating pie temperature .. Constant k can be calculated as a root of function T(t1;k)-T1, where .. T(t;k) is a solution of initial value problem dT/dt = -k*(T-Ts) subject .. to T(0)=T0. Note that T is function of t, i.e. T=T(t). T(t;k) means that .. function T contains constant k. In fact in equation T(t1;k)-T1 = 0 .. function T is considered as function of k, i.e. T=T(k), because t=t1 is .. known constant. "calculating k (solution from book is: k=0.0866189)" k = secant("fun2", 0, 0.1, Ts, T0, T1, 0, t1, 15); printf("k = %10.7f", k) .. Elapsed cooling time t2, when pie temperature becomes T2, can be .. calculated as a root of function T(t2)-T2 = 0, where T(t) is a solution .. of initial value problem dT/dt = -k*(T-Ts) subject to T(0)=T0. "calculating t2 (solution from book is: t2=46.264)" T3 = fun4(k, Ts, T0, 0, 40, 25); ... T3 is used to speed up calculation t2 = secant("fun3", 45, 50, k, Ts, T3, T2, 40, 25); printf("t2= %10.3f", t2) "calculating and plotting the graph" hold off fun1(k, Ts, T0, 0, 50, 0.5); .. pie temperature versus time graph hold on; markerstyle("m<>"); mark(t1, T1); .. mark (t1,T1) known point markerstyle("m*"); mark(t2, T2); .. mark (t2,T2) calculated point "done" .. ********************************************************************** .. ********************************************************************** euler-1.61.0/progs/user/logplot.e0000644000175000001440000001003507417015640015515 0ustar ericuserscomment xlogplot, xylogplot defined endcomment function xticks (aa=0,bb=0) if argn==2; a=aa; b=bb; elseif argn==1; a=min(aa); b=max(aa); else error("Wrong arguments for ticks"); endif; if (b>1e30); b=1e30; endif; if (a<-1e30); a=-1e30; endif; if (a>=b); b=a+1; endif; tick=10^floor(log(b-a)/log(10)-0.4); if b-a>10*tick; tick1=tick*2; else; tick1=tick; endif; if (tick>0.001) && (tick<1000); tick=1; endif; return (floor(a/tick1))*tick1:tick1:(ceil(b/tick1))*tick1; endfunction; function xlogticks(expi,expf,base) x=[ ]; for k = floor(expi) to floor(expf); x = x | logbase(1:base,base) + k; end; return x; endfunction; function xlogplot(x=1,y=0,xbase=10) ## xlogplot draws y(x) in a semilog paper with base xbase if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); expi=floor(logbase(min(xe),xbase)); expf=ceil(logbase(max(xe),xbase)); xt=xlogticks(expi,expf,xbase); yt=xticks(min(ye),max(ye)); p=setplot([expi,expf,min(yt),max(yt)]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt); plot([expi,expf],[yt[i],yt[i]]); d=toscreen([expi,yt[i]]); rtext(printf("%g",yt[i]),[d[1]-w,d[2]-h/2]); end; for i=1 to length(xt)-10; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expi to expf; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; color(c); linewidth(lw); linestyle(ls); plot(xl,ye); holding(hd); endif; return p; endfunction; function ylogplot(x=0,y=1,ybase=10) ## xlogplot draws y(x) in a semilog paper with base ybase if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; yl=logbase(ye,ybase); expi=floor(logbase(min(ye),ybase)); expf=ceil(logbase(max(ye),ybase)); xt=xticks(min(xe),max(xe)); yt=xlogticks(expi,expf,ybase); p=setplot([min(xt),max(xt),expi,expf]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt)-10; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expi to expf; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; for i=1 to length(xt); plot([xt[i],xt[i]],[p[3],p[4]]); d=toscreen([xt[i],p[3]]); ctext(printf("%g",xt[i]),[d[1],d[2]+h/2]); end; color(c); linewidth(lw); linestyle(ls); plot(xe,yl); holding(hd); endif; return p; endfunction; function xylogplot(x=1,y=1,xbase=10,ybase=10) ## xylogplot draws y(x) in a loglog paper with base xbase and ybase if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); yl=logbase(ye,ybase); expix=floor(logbase(min(xe),xbase)); expfx=ceil(logbase(max(xe),xbase)); expiy=floor(logbase(min(ye),ybase)); expfy=ceil(logbase(max(ye),ybase)); xt=xlogticks(expix,expfx,xbase); yt=xlogticks(expiy,expfy,ybase); p=setplot([expix,expfx,expiy,expfy]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(xt)-10; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expix to expfx; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; for i=1 to length(yt)-10; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expiy to expfy; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; color(c); linewidth(lw); linestyle(ls); plot(xl,yl); holding(hd); endif; return p; endfunction; euler-1.61.0/progs/user/Makefile.am0000644000175000001440000000015110263636230015716 0ustar ericusersuserdir = $(prefix)/share/euler/progs/user user_DATA = \ *.e\ *.en\ *.txt EXTRA_DIST = $(user_DATA) euler-1.61.0/progs/user/Makefile.in0000644000175000001440000002276010331246752015743 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = progs/user DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(userdir)" userDATA_INSTALL = $(INSTALL_DATA) DATA = $(user_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ userdir = $(prefix)/share/euler/progs/user user_DATA = \ *.e\ *.en\ *.txt EXTRA_DIST = $(user_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu progs/user/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu progs/user/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-userDATA: $(user_DATA) @$(NORMAL_INSTALL) test -z "$(userdir)" || $(mkdir_p) "$(DESTDIR)$(userdir)" @list='$(user_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(userDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(userdir)/$$f'"; \ $(userDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(userdir)/$$f"; \ done uninstall-userDATA: @$(NORMAL_UNINSTALL) @list='$(user_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(userdir)/$$f'"; \ rm -f "$(DESTDIR)$(userdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(userdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-userDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-userDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-strip \ install-userDATA installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am uninstall-userDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/progs/user/control.txt0000644000175000001440000000272607417015640016120 0ustar ericusersSZDDđ'3AĽ đő=úý  * ó ŕýěńUse ˙a fixed ˙font, pleaseřýx đ8đóA ăú+--+˛ áü|ňŐ ĺ ő 'Gěń-+Ď>âű\ěń/bqµ} ¨đó-=Óăó*ü©© C O ßN T R( L ÷. E\r Euler-ZT-_'° ľęóTHIS ‡ A˙ BETA REźLEASEq-çöV˙ersion 0ď.999o-Thi˙s softwa÷re Ó FREE˙WARE. Cożpy and›+S˙pread it˙ but DON˙'T MODIFďY NO… NG!ü® čőAuthor˙'s mail ˙address:ö':AlO0io P˙alma, Un˙iv. Degl˙i studi ˙L'Aquilaü)=«'ia Musone 2Ŕ ’=ěń˙65129 Pe˙scara (PóE)Ż=äůItaly.ÍMM'M $đóß(!) F: usßing tŇ*yoOu neZ=".$ř="Ţ!¤0atLab˙ like pr?ogram.îóď3ţC0archiviźe namÝ"="4?12.zipđ!S@˙e os/2 vص$×3Ó inÇBHowbbeÔ iteř2ÜďđFEinsô0l űmy‰@brary~ď@mply p 0Ţ 0intoTdiźrectoPÄAl˝o3withÇBc×ommÄA":Q" ĂofjDđóŃ"U(Vz»#)}Crevi·"xZPČA0viouŕ@®ô0ianĐE,ň0 has yetŐ ľ±@bugs!Đ eŮyAP Pbe„PmoyvZâDnext„Pd. IfaBŰ!ŁPţžUI suggeăstaB‘ZŃD. B/asicPyÇA÷Q®Ü notE0j: c÷han ` frońmÇBž\pA Wh5a ccŁPdoAUkWŢR2* Pl>`Bo»deC0dia’As~đń 1) OnQҲPe e«`2ŻdMa×gni|0eďđ 3‘)™`DPˇe ą ČAs~°Awindow«`q4Üm©19!timhÜ‘fÄAinv `igwateSlacĘ@żf root¨fNíe4pivřQd pŃođ@Xq=s(ZPcoĎurseÖ0ĹaCh÷eckÇBk-vaólutHRnfig[urVponđńBŔPäR0í4sSŕĚSâ%ĂBćTŘRDec·emb{@96íVwan¸ST@Q@âBÓ ÷ te Qe: sůeĹ@±@a letˇt{@o` PK4.Rpw? featuN0S@‚o`IJ1áE‚ŽcH@uţ Psupport˛8"aÎP `anő0s|Ó ŽQransf{@ĐäuR8®`=0ou`lcŰul5rip,a pŕĎ0\€ŁłPR0 aúŻ`mTp tau,ńP·bÄAÎgmarg˙in,B3 ecc.ôCëňĆ`Ć‚-wŠT bÎ|BRmšPhäů3sZoQ`â@& o 0tË„×;bdd/ŇSx_pa0ĂBzeroęfŮfPrriadÇjusĹ×5Ű`..ÂĂBwneU$2Ă€Sygsteé`Pul~’ČË„R2­aTp+Psc re6ps7Ł©bĆ`X˘šptinŹpf©­'©euler-1.61.0/progs/user/fresnel.en0000644000175000001440000000054107417015640015652 0ustar ericusersThis is EULER, Version 1.42. Type help(Return) for help. Enter command: (8388608 Bytes free.) Utilities framed views Exact solver Remez algorithm Steffenson iteration Gauss integration Histogram plots Interval Solvers Broyden algorithm Minimization Nicer 3D plots Single Value Decomposition Tools >load fresnel;clg; >animatefresnel; >drawfresnel; > > euler-1.61.0/progs/user/fresnel.e0000644000175000001440000000676107417015640015506 0ustar ericusersfunction vector(x,y) st=linestyle("->"); plot([0,x],[0,y]); linestyle(st); return 0; endfunction function fresnel(t=0,VM=10,T=20e-3,theta=0) ## draws a sinusoďde and the corresponding fresnel vector at time t ## ## t : the current time (s) ## VM : peak voltage (V) ## T : period (s) ## theta : origin phase (rad) ## .. draw an expanded trigonometric circle .. wd=window([20,40,320,340]); .. if square window wd=window([20,40,320,470]); .. if maximized window _setplot([-VM,VM,-VM,VM]); hold on; lw=linewidth(1); a = 2*pi*(0:0.01:1); plot(VM*cos(a),VM*sin(a)); plot([0,0],[-VM,VM]); plot([-VM,VM],[0,0]); wt = 2*pi*t/T; ph = wt+theta; x = VM*cos(ph); y = VM*sin(ph); st = linestyle("."); plot([0,x],[y,y]); plot([x,x],[0,y]); linestyle(st); c=color(10); vector(x,y); color(c); .. draw a cartesian sinus .. wd=window([340,40,1004,340]); .. if square window window([340,40,1004,470]); .. if maximized window _setplot([0,2*pi,-VM,VM]); st=linestyle("."); plot([0,wt],[y,y]); plot([wt,wt],[0,y]); linestyle(st); plot([0,2*pi],[0,0]); c=color(10); plot(a,VM*sin(a+theta)); color(c); text("0",toscreen([0,0])); rtext("T/2",toscreen([pi,0])); rtext("T",toscreen([2*pi,0])); p=toscreen([wt,0]); if y<0; p{2}=p{2}-textheight(); endif; ctext("t",p); text(printf("t = %g s",t),[340,470]); text(printf("VM = %g V",VM),[340,470+textheight()]); text(printf("T = %g s",T),[340,470+2*textheight()]); text(printf("f = 1/T = %g Hz",1/T),[340,470+3*textheight()]); text(printf("theta = %g rad",theta),[340,470+4*textheight()]); text(printf("v(t) = %g",VM)|printf(" sin(2*pi*%g",1/T)|printf("*t + %g)",theta),[340,470+6*textheight()]); linewidth(lw); hold off; return 0; endfunction function animatefresnel(VM=10,T=20e-3,theta=0,p=20,d=0.2) ## draws the fresnel vector moving as the time goes on ## ## VM : peak voltage (V) ## T : period (s) ## theta : origin phase (rad) ## ## p : number of frames used for the animation ## d : frame display rate (s) ## .. create animation reset; deletepages(); clg; title("Préparation de l'animation, un peu de patience..."); addpage(); showpage(1); for i=1 to p clg; title("le vecteur de fresnel tourne ŕ la pulsation w=2*pi*f rad/s"); fresnel(T*(i-1)/p,VM,T,theta); addpage(); end; clg; .. display animation repeat loop 2 to p+1 showpage(#);wait(d); if testkey; showpage(0); return pages(); endif; end; end; showpage(0); return pages(); endfunction; function drawfresnel() clg; T = 20e-3; VM = 10; theta = 0; fresnel(0,VM,T,theta); repeat title("le vecteur de fresnel"); .. wd=window([20,40,320,340]); .. if square window wd=window([20,40,320,470]); .. if maximized window _setplot([-VM,VM,-VM,VM]); p=mouse(); if p{1}<-VM || p{1}>VM || p{2}<-VM || p{2}>VM; return 0; endif; clg; if p{1}>=0 && p{2}>=0; theta=atan(p{2}/p{1}); elseif p{1}>=0 && p{2}<0; theta=2*pi+atan(p{2}/p{1}); else theta=pi+atan(p{2}/p{1}); endif; fresnel(0,VM,20e-3,theta); .. wd=window([20,40,320,340]); .. if square window wd=window([20,40,320,470]); .. if maximized window _setplot([-VM,VM,-VM,VM]); hold on; a = 2*pi*(0:0.01:1); ph = theta; x = VM/sqrt(2)*cos(ph); y = VM/sqrt(2)*sin(ph); c = color(11); st = linestyle("."); plot(VM/sqrt(2)*cos(a),VM/sqrt(2)*sin(a)); plot([0,x],[y,y]); plot([x,x],[0,y]); linestyle(st); lw=linewidth(2); vector(x,y); linewidth(lw); color(c); hold off; end; return 0; endfunction; euler-1.61.0/progs/user/logplot.en0000644000175000001440000000107307417015640015675 0ustar ericusersThis is EULER, Version 1.42. Type help(Return) for help. Enter command: (8388608 Bytes free.) Utilities framed views Exact solver Remez algorithm Steffenson iteration Gauss integration Histogram plots Interval Solvers Broyden algorithm Minimization Nicer 3D plots Single Value Decomposition Tools >clg;load bode >bode(1,[1,0.6,1],what=2); >bode(1,[1,1]); > >load logplot >n=1;d=[1,0.6,1];w=10^linspace(-2,4,100);gdb=20*logbase(abs(fbode(n,d,w)),10); >shrinkwindow();ylogplot(gdb,w); > >load logplot >v=10^linspace(-2,1,100);r=0.5*v^2; >shrinkwindow();xylogplot(v,r); > euler-1.61.0/progs/user/Makefile0000644000175000001440000002360310331246762015334 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # progs/user/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = ../.. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = progs/user DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(userdir)" userDATA_INSTALL = $(INSTALL_DATA) DATA = $(user_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = userdir = $(prefix)/share/euler/progs/user user_DATA = \ *.e\ *.en\ *.txt EXTRA_DIST = $(user_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu progs/user/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu progs/user/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-userDATA: $(user_DATA) @$(NORMAL_INSTALL) test -z "$(userdir)" || $(mkdir_p) "$(DESTDIR)$(userdir)" @list='$(user_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(userDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(userdir)/$$f'"; \ $(userDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(userdir)/$$f"; \ done uninstall-userDATA: @$(NORMAL_UNINSTALL) @list='$(user_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(userdir)/$$f'"; \ rm -f "$(DESTDIR)$(userdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(userdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-userDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-userDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-strip \ install-userDATA installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am uninstall-userDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/progs/interval.e0000644000175000001440000000723410330763037014710 0ustar ericuserscomment Interval Solvers endcomment .. *** Interval EULER polygon method *** function idgl (fff,x,y0) ## Compute the solution of y'=fff(t,y0;...) at points t with ## y(t[1])=y0. ## The result is an interval vector of values. ## Additional arguments are passed to fff. ## fff may be an expression in x and y. n=length(x); y=~zeros(1,n)~; y[1]=y0; loop 1 to n-1; if isfunction(fff); m=fff(x[#],y[#],args()); else m=expreval(fff,x[#],y=y[#]); endif; i=~x[#],x[#+1]~; d=diameter(i); repeat J=y[#]+m*~0,d~; if isfunction(fff) m=expand(fff(i,J,args()),6/5); else m=expand(expreval(fff,i,y=J),6/5); endif; y2=y[#]+m*d; if (y2 <<= J); break; endif; end; y[#+1]=y2; end; return y; endfunction .. *** Interval LGS solver *** function ilgs (A,b) ## Solve A.x=b for x. ## Computes an interval inclusion of the solution. ## If the inclusion fails, you have to stop execution with the ESCAPE key. ## A and b may be of interval type. ## You may supply a pseudo inverse to A as an additional argument. n=cols(A); count=1; if argn()==2; A1=middle(A); R=inv(A1'); repeat; M=residuum(A1',R,id(n)); rho=max(sum(abs(M))'); if rho<1; break; endif; R=R-A1'\M; count=count+1; if (count>10); error("Could not find a pseudo invers."); endif; end; R=R'; else; R=arg3; endif; M=~-residuum(R,A,id(n))~; rho=right(max(sum(abs(M))')); if (rho>=1); error("Pseudo inverse not good enough."); endif; f=~-residuum(R,b,0)~; if argn()==2; x=middle(A)\middle(b); else; x=residuum(R,b,0); endif; xn=residuum(M,~x,x~,f); x=expand(x,max((right(max(abs(xn-x)'))/(1-rho))')); repeat; xn=residuum(M,x,f)&&x; if !(xn<reset; xi=exp(1i*2*Pi/8); z=xi^(0:7); xmark(re(z),im(z)); wait(20); % Now we generate a complex polynomial of degree 7. We % take a random polynomial. >p=random(1,8)+1i*random(1,8); % We evaluate this polynomial at all points of z. Note % that a polynomial is represented in EULER in a vector % starting with the lowest coefficient. >polyval(p,z) % This is exactly the same as FFT of p. >fft(p) % The inverse oparation interpolates values with a polynomial % in the roots of unity. We can go back and forth. >fft(ifft(fft(p))) % The inverse FFT is almost the same as the original FFT. >8*conj(ifft(conj(p))) % The FFt can be used to evaluate a trigonometric series % at equidistant points. Let us take a cos series and evaluate % it directly. >t=0:Pi/128:2*Pi-Pi/128; s=1+2*cos(t)+cos(2*t); xplot(t,s); wait(20); % Then we evaluate it with FFT. This is very much faster. >a=[1,2,1]|zeros(1,253); xplot(t,re(fft(a))); wait(20); % IFFT (and FFT) can thus be used to determine frequencies % in a signal. The following signal consists of frequencies % 20 and 55. >t=0:Pi/128:2*Pi-Pi/128; s=2*cos(20*t)+cos(55*t); xplot(t,s); wait(20); % We can see the frequencies with IFFT. >f=abs(ifft(s)); xplot(0:127,f[1:128]); wait(20); % Adding randomly distributed noise does still show the % frequencies. >s=s+normal(size(s)); f=abs(ifft(s)); xplot(0:127,f[1:128]); wait(20); % The file SOUND.E contains some functions to load and % save WAV files. Other functions in this file analyze % sound. >load "sound" % At first we create 2 seconds of sound parameters. >t=soundsec(1); % Then we generate the sound. >s=sin(440*t)+sin(220*t)/2+sin(880*t)/2; % We can easily make a Fourier analysis of it. >analyze(s); wait(20); % Save the file in WAV format. >savewave("test.wav",s); % If your version supports playwav (Windows 95) and you have a % soundcard and speakers installed, you may play the sound file. % Else you will get an error in the following command. >playwave("test.wav"); % Now we add a lot of noise and listen to it. >s=s+normal(size(s)); savewave("test.wav",s); playwave("test.wav"); % Load it back. >sa=loadwave("test.wav"); % Now we can make a complete picture of the sound. >mapsound(sa); wait(20); % Finally we demonstrate Gibb's effect a bit. Summing up sin(nt)/n % for odd n appraoches the rectangle wave but with an error at % 0 and pi. >t=linspace(0,pi,100)'; >n=1:2:41; >S=cumsum(sin(t*n)/n); % We plot the cumulative sum with growing n. >twosides(0); view(3,2,1,0.5); framedsolid(n/10,t,S*2,1); > > euler-1.61.0/progs/demo.en0000644000175000001440000000015507430446115014163 0ustar ericusers% A more complete demo, demonstrating euler calculus, programming % and graphical capabilities. >load demo > euler-1.61.0/progs/3d.en0000644000175000001440000000744307430511267013555 0ustar ericusers% This notebook demonstrates 3D graphics. % % The simplest form is the use of f3dplot with an expression % or with a function f(x,y). >reset; f3dplot("x^2+y^3"); wait(20); % To plot 3D graphics, we need a matrix of x and y values % for points in a rectangular grid. We can simply use a % column vector for x and a row vector for y. >x=-1:0.05:1; y=x'; % The simplest form of plot is a mesh grid. The function % graph is viewed from a point (-r,r,z), where r is infinity, % since mesh uses a very simple projection. The plot scales % to the window automatically. % % Note that x^2+y^3 evaluates into a matrix. >mesh(x^2+y^3); wait(20); % The same function can be view with a better projection % from any viewpoint using the function solid. It needs % three paramters, each a matrix of values, for the % x-, y- and z-coordinates of the surface. >reset; solid(x,y,x^2+y^3); wait(20); % You can change the viewpoint. We go a little closer % and a little lower with the eye. The view command % needs a distance, a zoom factor, the horizontal angle % and the vertical angle. Default is view(5,1.5,0.5,0.5). >view(3,1.5,0.8,0); solid(x,y,x^2+y^3); wait(20); % Going back a little, we can also draw a frame around % the plot. >view(5,2,0.8,0.5); framedsolid(x,y,x^2+y^3,0,0,0); wait(20); % You can also let the system draw grids and ticks >framedsolid(x,y,x^2+y^3);wait(20); % We could also change the coordinates. >framedsolid(x,x^2+y^3,y); wait(20); % Therefore, we can also plot surfaces. Let us draw a ball. >X=cos(pi*x)*cos(pi*y/2); Y=sin(pi*x)*cos(pi*y/2); Z=sin(pi*y/2); >solid(X,Y,Z); wait(20); % The function "solidhue" takes the shading as an additional % argument. >solidhue(X,Y,Z,X+Z,1); wait(20); % The function "huecolor" sets the basic color for shading. The special % value 0 set shading to rainbow colors. >huecolor(0);solidhue(X,Y,Z,X+Z,1);huecolor(1);wait(20); % Distort it a little bit. >solid(cos(pi*x)^3*cos(pi*y/2),sin(pi*x)*cos(pi*y/2),sin(pi*y/2)); wait(20); % Let us go closer. >view(3,2,0.8,0.5); % And view a wire frame model. >wire(cos(pi*x)^3*cos(pi*y/2),sin(pi*x)*cos(pi*y/2),sin(pi*y/2)); wait(20); % There is a utility file, which contains some nice % things in this area. >load "3dplot.e"; Nicer 3D plots % We first provide our well known function. >function f(x,y) $return x^2+y^3 $endfunction % f3d makes a normal plot with axis. The parameter range % is -1 <= x,y <=1. >f3d("f"); wait(20); % We can do the same using an expression in x and y. >f3d("x^2+y^3"); wait(20); % A contour plot of the same data. >fcontour("f"); wait(20); >fcontour("x^2+y^3"); wait(20); % If you want certain contour lines to be thicker, this % is also possible. We use the normal contour function % with a larger line width. The last plot did not show % the contour line of level 0. >linewidth(3); hold on; contour(f(x,y),0); hold off; linewidth(1); wait(20); % We could also add a grid. >setplot(-1,1,-1,1); xplot(); wait(20); % And a title. >title("x^2+y^3"); wait(20); % Here is a density plot of the same functions. It is darker, % where the function values are lower. >density(x^2+y^3,1); wait(20); % We can overlay it with the contour lines. >hold on; contour(x^2+y^3,-10:0.1:10); hold off; wait(20); % Even with grid lines. >setplot(-1,1,-1,1); xplot(); wait(20); % The same in color >huecolor(0);density(x^2+y^3,1);hold on;contour(x^2+y^3,-10:0.1:10);hold off;huecolor(1);setplot(-1,1,-1,1);xplot();wait(20); % This is another use of shading. We can see the function % values more clearly. >reset; framedsolidhue(x,y,(x^2+y^3),x^2+y^3,2,1); wait(20); % The same in color ... >huecolor(0); framedsolidhue(x,y,(x^2+y^3),x^2+y^3,2,1); huecolor(1); wait(20); % The function "huegrid" enables or disables the surface mapping with % a grid. >view(5,1.5,0.8,0.5);huecolor(0);huegrid(1); framedsolidhue(x,y,(x^2+y^3),x^2+y^3,2,1); huegrid(0);huecolor(1); wait(20); > euler-1.61.0/progs/remez.e0000644000175000001440000000443510330764075014211 0ustar ericuserscomment Remez algorithm endcomment .. ### Remez algorithm ### function remezhelp (x,y,n) ## {t,d,h}=remezhelp(x,y,deg) is the case, where x are exactly deg+2 ## points. d1=interp(x,y); d2=interp(x,mod(1:n+2,2)*2-1); h=d1[n+2]/d2[n+2]; d=d1-d2*h; return {x[1:n+1],d[1:n+1],h}; endfunction remezeps=0.00001; function remez(x,y,deg,tracing=0) ## {t,d,h,r}=remez(x,y,deg) computes the divided difference form ## of the polynomial best approximation to y at x of degree deg. ## remez(x,y,deg,1) does the same thing with tracing. ## h is the discrete error (with sign), and r the rightmost ## alternation point, which is missing in t. To evaluate the ## polynomial in v use interpval(t,d,v). global remezeps; n=cols(x); ind=round(linspace(1,n,deg+1),0); h=0; repeat {t,d,hnew}=remezhelp(x[ind],y[ind],deg); r=y-interpval(t,d,x); hh=hnew; if tracing; plot(x,r); xgrid(x[ind],ticks=0,color=9); ygrid([-hnew,0,hnew],ticks=0); color(1); title("Weiter mit Taste"); wait(180); endif; indnew=ind; e=extrema(r[1:ind[2]]); if (hh<0); indnew[1]=e[2]; else indnew[1]=e[4]; endif; hh1=hh; loop 2 to deg+1; e=extrema(r[ind[#-1]:ind[#+1]]); if (hh>0); indnew[#]=e[2]+ind[#-1]-1; else indnew[#]=e[4]+ind[#-1]-1; endif; hh=-hh; end; e=extrema(r[ind[deg+1]:cols(r)]); if (hh>0); indnew[deg+2]=e[2]+ind[deg+1]-1; else indnew[deg+2]=e[4]+ind[deg+1]-1; endif; hh=-hh; mm=max(abs(r[indnew])); if (indnew[deg+2]0) if (abs(r[e[1]])>mm); indnew=indnew[2:deg+2]|(e[2]+ind[deg+2]-1); endif; else if (abs(r[e[3]])>mm); indnew=indnew[2:deg+2]|(e[4]+ind[deg+2]-1); endif; endif; endif; mm=max(abs(r[indnew])); if (indnew[1]>1); e=extrema(r[1:ind[1]]); if (hh1>0) if (abs(r[e[1]])>mm); indnew=e[2]|indnew[1:deg+1]; endif; else if (abs(r[e[3]])>mm); indnew=e[4]|indnew[1:deg+1]; endif; endif; endif; ind=indnew; if (abs(hnew)<(1+remezeps)*abs(h)) break; endif; h=hnew; end; {t,d,h}=remezhelp(x[ind],y[ind],deg); if tracing; xplot(x,y-interpval(t,d,x)); color(15); xgrid(x[ind],ticks=0,color=9); ygrid([-hnew,0,hnew],ticks=0); color(1); title("Weiter mit Taste"); wait(180); endif; return {t,d,h,x[ind[deg+2]]}; endfunction euler-1.61.0/progs/fminmax.e0000644000175000001440000000667607417015640014536 0ustar ericuserscomment Minimization endcomment function fmin (fff,a,b) ## Compute the Minimum of the convex function fff in [a,b], ## using the golden cut method. ## Additional parameters are passed to fff. ## fff may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x0=a; x3=b; if isfunction(fff) y0=fff(x0,args()); y3=fff(x3,args()); else y0=expreval(fff,x0); y3=expreval(fff,x3); endif l=(3-sqrt(5))/2; x1=x0+l*(x3-x0); x2=x3-l*(x3-x0); if isfunction(fff) y1=fff(x1,args()); y2=fff(x2,args()); else y1=expreval(fff,x1); y2=expreval(fff,x2); endif repeat if y1>y2; x0=x1; x1=x2; x2=x3-l*(x3-x0); y0=y1; y1=y2; if isfunction(fff); y2=fff(x2,args()); else y2=expreval(fff,x2); endif; else x3=x2; x2=x1; x1=x0+l*(x3-x0); y3=y2; y2=y1; if isfunction(fff); y1=fff(x1,args()); else y1=expreval(fff,x1); endif; endif; if x0~=x3; return x0; endif; end; endfunction function fmax (fff,a,b) ## Compute the Maximum of the concave function fff in [a,b], ## using the golden cut method. ## Additional parameters are passed to fff. ## fff may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x0=a; x3=b; if isfunction(fff) y0=fff(x0,args()); y3=fff(x3,args()); else y0=expreval(fff,x0); y3=expreval(fff,x3); endif l=(3-sqrt(5))/2; x1=x0+l*(x3-x0); x2=x3-l*(x3-x0); if isfunction(fff) y1=fff(x1,args()); y2=fff(x2,args()); else y1=expreval(fff,x1); y2=expreval(fff,x2); endif repeat if y1=y[#-1] && y[#]>y[#+1]; ma=ma|fmax(fff,x[#-1],x[#+1];args()); elseif y[#]<=y[#-1] && y[#]2). ## Return the point of minimum (1xn vector). if isfunction(fff); return nelder(fff,v,d,eps,args()); else; return nelder("fffexprv",v,d,eps,fff); endif; endfunction euler-1.61.0/progs/dea.e0000644000175000001440000000441407462557411013623 0ustar ericuserscomment Data Envelopment Approach solveDEA Computes the efficiency for one site. solveAllDEA Computes all efficiencies. showDEAOutput, showDEAInput, graphDEA for two inputs and outputs showDEA print DEA results. endcomment function solveDEA (Output,Input,i,scale=0) ## Output, Input have a row for each site. ## i is the site number to compute. ## Returns the efficiency and the complete weights {e,x}. n=rows(Output); no=cols(Output); ni=cols(Input); A=-Output'|zeros(no,1); A=A_(Input'|-Input[i]'); b=(-Output[i]')_zeros(ni,1); if scale; A=A_(ones(1,n)|0); A=A_(-ones(1,n)|0); b=b_1_(-1); endif; {x,r}=simplex(A,b,zeros(1,n)|1); if r==0; return {x[n+1],x[1:n]}; endif; error "Simplex failed!"; endfunction function solveAllDEA (Output,Input,scale=0) ## Output, Input have a row for each site. ## Returns the efficiencies for each site. n=rows(Output); x=zeros(1,n); loop 1 to n; x[#]=solveDEA(Output,Input,#,scale); end; return x; endfunction function showDEAOutput (Output,Eff) ## Graphically prints both Outputs with attached efficiencies. max=totalmax(Output)*1.2; o=Output'; setplot(0,max,0,max); mark(o[1],o[2]); loop 1 to rows(Output); label(printf("%g",#)| .. printf(",%g",Eff[#]),Output[#,1],Output[#,2],20); end return "" endfunction function showDEAInput (Output) max=totalmax(Output)*1.2; o=Output'; setplot(0,max,0,max); mark(o[1],o[2]); loop 1 to rows(Output); label(printf("%g",#),Output[#,1],Output[#,2],-30); end return "" endfunction function graphDEA (Output,Input,scale=0) ## Solve and show both inputs and outputs and the efficencies. {eff,w}=solveAllDEA(Output,Input,scale); style ("m[]"); showDEAOutput(Output,eff); hold on; style ("mx"); showDEAInput(Input); hold off; wait(180); return "Done"; endfunction function showDEA (Output,Input,scale=0) ## Show both outputs and inputs, and the necessary replacements. n=rows(Output); loop 1 to n showDEAone(Output,Input,#,scale); end; return "done" endfunction function showDEAone (Output,Input,n,scale=0) {e,w}=solveDEA(Output,Input,n,scale); if e~=1; return e; endif; "Site: "|printf("%g",n), "Efficiency: "|printf("%g",e), index=nonzeros(w); "Replace with:" loop 1 to length(index) printf("%g%",w[index[#]]*100)|" of "|printf("%g",index[#]) end "", return e endfunction euler-1.61.0/progs/randtest.e0000644000175000001440000000271307417015640014707 0ustar ericusers.. Test the random number creator function randomtest (n=5000) ## perform various test on the random number creator t=random(2,n)*0.999999999; color(1); ## distribution test c=count(t[1]*100,100); histogram(t[1]*100,100); title("distribution of random numbers"); wait(); histogram(c,integer=1); title("distribution of distribution"); wait(); chi2=sum((c-n/100)^2/(n/100)); printf("chi^2 for distribution of numbers = %0.5f",chi2), printf("Probability for this: %0.2f%%",(1-chidis(chi2,99))*100), ## gap test f=nonzeros(t[1]<0.1); m=length(f); gaps=f[2:m]-f[1:m-1]; histogram(gaps,integer=1); title("distribution of gaps"); wait(); color(2); x=1:max(gaps); hold on; plot(x,0.9^(x-1)*0.1*m); hold off; color(1); wait(); c=count(gaps-1,20); p=0.9^(0:19)*0.1*m; chi2=sum((c-p)^2/p); printf("chi^2 for the gaps = %0.5f",chi2), printf("Probability for this: %0.2f%%",(1-chidis(chi2,20))*100), ## distribution of pairs test markerstyle("m."); xmark(t[1],t[2],grid=0); title("pairs of random numbers"); wait(); l=floor(t[1]*10)*10+floor(t[2]*10); histogram(l,integer=1); title("distribution of pairs"); wait(); c=count(l,100); histogram(c,integer=1); title("distribution of distribution of pairs"); wait(); chi2=sum((c-n/100)^2/(n/100)); printf("chi^2 for distribution of pairs = %0.5f",chi2), printf("Probability for this: %0.2f%%",(1-chidis(chi2,99))*100), return "" endfunction "randomtest", "test of the builtin random number generator." randomtest; euler-1.61.0/progs/iterate.en0000644000175000001440000000210707417015640014673 0ustar ericusers% This notebook demonstrates fixpoint iteration. >function f(x) $return (x+2/x)/2 $endfunction >longformat; % The iteration x(n+1)=f(x(n)) converges quickly to % sqrt(2). >iterate("f",2) % It might be easier to use an expression in x instead % of a function. >iterate("(x+2/x)/2",2) % niterate returns the history of 5 iterations. >niterate("f",2,5) % Starting with an interval does not work. >niterate("f",~1,2~,5) % We must use the interval Newton operator. >function f1(x) $m=middle(x); $return m-(m^2-2)/(2*x) $endfunction % This converges quickly to an inclusion iof the zero. >iterate("f1",~1,2~) % iterate works in several dimensions. >function g(x) $return [(x[1]+x[2])/2,sqrt(x[1]*x[2])] $endfunction % The iterations converge to the arithmetic geometric % mean of the start values. >iterate("g",[1,2]) % The convergence is rather quick. >niterate("g",[1,2],4) % We can use an Interval iteration. This shows us that % the iteration is stable. The n-th iterate is within % the given bounds. It does not prove, that the limit % is in these bounds, however. >y=niterate("g",[~1~,~2~],4) > euler-1.61.0/progs/trigfit.e0000644000175000001440000000204007417015640014524 0ustar ericusers.. These functions handle triginometric interpolation and best fit. function trigeval (a,x) ## Evaluates the trigonometric polynomial at x. ## a are the cos and then the sin coefficients. m=(cols(a)-1)/2; n=cols(a); A=dup(0:m,cols(x)); B=dup(x,m+1)'; F1=cos(A*B); A=dup(1:m,cols(x)); B=dup(x,m)'; F2=sin(A*B); return ((F1|F2).a')'; endfunction function triginterpol (x,y) ## Interpolates a trigonometric polynomial to x and y. ## Returns the coefficients. First the cos and then the sin ## coeffients. Returns a row vector. m=(cols(x)-1)/2; n=cols(x); A=dup(0:m,n); B=dup(x,m+1)'; F1=cos(A*B); A=dup(1:m,n); B=dup(x,m)'; F2=sin(A*B); return ((F1|F2)\y')'; endfunction function trigfit (x,y,deg) ## Fits a triginometric polynomial of degree deg to (x,y). ## x must be ordered! T=x/sqrt(sum(x^2)); loop 1 to deg; t=cos(#*x); t=t-(T.t')'.T; t=t/sqrt(sum(t^2)); T=T_t; t=sin(#*x); t=t-t.T'.T; t=t/sqrt(sum(t^2)); T=T_t; end d=y.T'.T; i=1:cols(x); j=i[linspace(1,cols(x),2*deg)]; return triginterpol(x[j],d[j]); endfunction euler-1.61.0/progs/svd.e0000644000175000001440000000356610330764462013667 0ustar ericuserscomment Single Value Decomposition Tools endcomment function svdkernel (A) ## kernel(a) computes the kernel of the quadratic matrix a. ## This is using the singular value decomposition and works ## for real matrices only. ## The vectors spanning the kernel are orthonormal. {B,w,V}=svd(A); i=nonzeros(w~=0); if cols(i)==0; return zeros(cols(V),1); else return V[:,i]; endif; endfunction function svdimage (A) ## image(a) computes the image of the quadratic matrix a. ## This is using the singular value decomposition and works ## for real matrices only. ## The vectors spanning the image are orthonormal. {B,w,V}=svd(A); i=nonzeros(!(w~=0)); if cols(i)==0; return zeros(1,cols(A)); else return B[:,i]; endif; endfunction function svdcondition (A) ## condition(A) returns the condition number based on ## a singular value decompostion of A. ## 0 means singularity. ## A must be real. {B,w,V}=svd(A); if any(w~=0); return 0; endif; return max(abs(w))/min(abs(w)); endfunction function svddet (A) ## det(A) returns the determinant based on a ## singular value decomposition of A. ## A must be real. {B,w,V}=svd(A); return prod(w); endfunction function svdeigenvalues (A) ## For a symmetrical A, this returns the eigenvalues of A. ## For a non-symmetrical A, the singular values. ## A must be real. {B,w,V}=svd(A); return w; endfunction function svdeigenspace (a,l) ## svdeigenspace(A,l) returns the eigenspace of A to the eigenvaue l. k=svdkernel(a-l*id(cols(a))); if k==0; error("No eigenvalue found!"); endif; si=size(k); loop 1 to si[2]; x=k[:,index()]; k[:,index()]=x/sqrt(x'.x); end; return k; endfunction function svdsolve (A,b) ## Solve A.x=b with smallest norm for x. ## A must be real. ## This function can be used instead of the fit function. {B,w,V}=svd(A); i=nonzeros(!(w~=0)); if (cols(i)>0); w[i]=1/w[i]; endif; return V.diag(size(V),0,w).(B'.b); endfunction euler-1.61.0/progs/kettenlinie.en0000644000175000001440000000450407417015640015554 0ustar ericusers% Wir wollen die Kettenlinie bestimmen, und zwar durch eine Messung % und durch die Lösung einer Differentialgleichung. Außerdem soll % die Messung mit dem theoretisch erwarteten Ergebnis verglichen % werden. % % Zuerst lesen wir die Daten einer gemessene Kette ein. Die Kette % wurde vor den Bildschirm geklebt und mit der Funktion mouse() % wurden die Bildpunkte abgenommen. >P=getmatrix(24,2,"kette.dat")'; % Wir geben die Messpunkte und die verbundene Kurve aus. >xplot(P[1],P[2]); >style("m[]"); hold on; mark(P[1],P[2]); hold off; wait(); % Versuchen wir zunächst, eine Parabel mit diesen Punkten in Übereinstimmung % zu bringen. >p=polyfit(P[1],P[2],2); >y=polyval(p,P[1]); >hold on; color(3); plot(P[1],y); color(1); hold off; wait(); % Die Zeichnung zeigt, daß die Übereinstimmung nicht groß ist. % % Versuchen wir es mit einer physikalischen Überlegung und einer % aus kleinen Teilen zusammengesetzten Kette. Dazu dient die Überlegung, % daß die y-Kompente der Zugkraft in der Kette im gleichen Verhältnis % mit der Kettenlänge zunimmt. >ky=-1:0.01:1; kx=ones(size(ky)); % Die Kette geht in Richtung der Kraft und setzt sich aus lauter % kleinen gleich langen Teilstücken zusammen. Sie hat die Gesamtlänge % 1. >ds=sqrt(kx*kx+ky*ky)*100; >X=0|cumsum(kx/ds); Y=0|cumsum(ky/ds); % Wir normieren noch so, daß die Kette im Ursprung am tiefsten % hängt. >X=X-(X[1]+X[cols(X)])/2; Y=Y-min(Y); >xplot(X,Y); wait(); % Nun bestimmen wir eine cosh-Kurve, die die obige Kurve interpoliert, % und zeichnen den Fehler. >a=bisect("x*cosh(X[1]/x)-x-Y[1]",1,1000) >y1=a*cosh(X/a)-a; >max(abs(Y-y1)) % Wie man sieht, ist der Fehler verschwindend gering. % % Versuchen wir nun, eine Funktion vom Typ a*cosh((x-b)/c)-d an % die gemessene Funktion anzupassen. Der Faktor a/c ist der Verzerrungsfaktor % des Bildschirms bei der Messung. % % Zunächst wird die Funktion jedoch neu gezeichnet. >xplot(P[1],P[2]); >style("m[]"); hold on; mark(P[1],P[2]); hold off; wait(); % Anschließend programmiert man die zu minimierende Funktion. >function f(x) $global P; $y=x[1]*cosh((P[1]-x[2])/x[3])-x[4]; $return sum((y-P[2])^2); $endfunction % Das Minimum wird mit der Methode von Nelder berechnet. >x=neldermin("f",[1,0,1,1],eps=0.0001); % Dies ergibt eine zufriedenstellende Übereinstimmung. >hold on; color(3); plot(P[1],x[1]*cosh((P[1]-x[2])/x[3])-x[4]); color(1); hold off; wait(); > euler-1.61.0/progs/child-and-toy.en0000644000175000001440000000337607417015640015703 0ustar ericusers>load "child" Two problems: - Child and toy problem. - Man and dog problem. Load the child notebook for a demonstration. % This notebook demonstrates solutions to the child and toy % problem. A child is walking in the plane with a toy at the % other end of a long stick. The problem is to determine the % path of the toy. % % In the first example the child walks once around the unit % circle and the stick is one unit long. >child("childcircle",[2,0],2*pi); wait(20); % If the child continues to walk around the circle the toy % will spiral to 0. >child("childcircle",[2,0],10*pi); wait(20); % However, if the stick is a little longer than the radius % of the circle, the child will eventually push the toy forward. % This results in a nice picture. >child("childcircle",[2.1,0],12*pi); wait(20); % If the stick is twice as long as the radius, we get a rosette. >child("childcircle",[3,0],16*pi); wait(20); % You could easily imply your own path for the child by changing % the function, which is passed to the child function. >type childcircle function childcircle (t) return {[cos(t),sin(t)],[-sin(t),cos(t)]} endfunction % Here the child walks along a sin curve. >type childsin function childsin (t) return {[t,sin(t)],[ 1,cos(t)]} endfunction % Now the child pushes the stick a short distance and then % the stick stays behind it. >child("childsin",[2,2],4*pi); wait(20); % There is a similar problem, which is related to a dog which % runs towards a man, following a path. The dog has constant % speed. Assume, the man runs once around the circle. What % is the path of the dog? % % The speed of the man equals the speed of the dog. >dog("dogcircle",[2,2],2*pi); wait(20); % In the next example the man runs straight along the x-axis. >dog("dogline",[0,2],5); wait(20); > > euler-1.61.0/progs/root.en0000644000175000001440000000233207417015640014221 0ustar ericusers% Demonstrate the function root. % % We first take a simple example. >longformat; a=2; x=1; root("x^2-a",x) % The solution for x is assigned to the global variable % x. >x >sqrt(2) % We could also solve for a starting with a different a. >a=3; root("x^2-a",a) % A bit more complex is the computation of interest rates % for a loan (or a savings account). Assume you get K (K>0) % at time 0 and pay P (P<0) at each period, starting from % period 1 to period n-1. You then have a final depth F % (F<0). What is the interest rate? >ex="K*f^n+(f^(n-i0+1)-1)/(f-1)*f^i1*P+F"; % After we set up the expression, we initialize the variables % with values. We take an approximation for f (8 %). This % time we have to pay 1000 each month. We are done (F=0) % after 120 month. >K=100000; n=120; f=1.08^(1/12); P=-1000; i0=1; i1=0; F=0; >root(ex,f) % To compute the effective interest rate per year, we must % take f^12 and compute the interest rate in %. >(f^12-1)*100 % Assume we stop paying after 119 month and the interest % rate is 8%. How much would be left after 120 month? >f=1.08^(1/12); i1=1; printf("Dept left: %0.2f",-root(ex,F)) % How long would it take to pay the loan at 8%? >F=0; i1=0; printf("Payed after %0.1f years",root(ex,n)/12) > euler-1.61.0/progs/interval.en0000644000175000001440000000776707417015640015103 0ustar ericusers% This notebook introduces you into interval arithmetic. % % An interval [2,3] is entered with the following notation. >~2,3~ % Operators between intervals yield an interval result. The % interval contains all possible results, when the operator % is applied to arguments inside the intervals. >~2,3~*~4,7~ % Note that the following are different. The first one % contains all squares of elements in [-1,1], the second % contains all s*t, where -1 <= s,t <=1. >~-1,1~^2, ~-1,1~*~-1,1~, % One may use the one point interval [s,s], but ~s~ is % different from it. The latter is an interval around s. >~2,2~, ~2~, % Let us make an example. The 10-th partial sum of the % Taylor series of exp is the following polynomial. >p=1/fak(0:10) % Let us evaluate this polynomial in -2. >longformat; polyval(p,-2) % The following is the correct result for the infinite series. >exp(-2) % We can get an inclusion with the remainder term in % interval notation. Note that we have to use ~p~ % because p is not exactly represented in the computer. % But we can use the one point interval [-2,-2]. >polyval(~p~,~-2,-2~)+~-1,1~*2^11/fak(11) % Some more terms. Note that fak(21) is exactly representable % in the computer. >n=20; polyval(~1/fak(0:n)~,~-2,-2~)+~-1,1~*2^(n+1)/fak(n+1) % You can see that interval arithmetic is a means of seeing % how good a result really is. % % Another example is the interval newton method. It is contained % in the INTERVAL.E file. We need to load this file. >load "interval" % Furthermore, we need a function f and its derivative % f1.c >function f(x) $return cos(x)-x $endfunction >function f1(x) $return -sin(x)-1 $endfunction % Then we can start the interval Newton method and % get an inclusion of the result. >inewton("f","f1",~0,1~) % The usual Newton method delivers the same result. >newton("f","f1",1) % The Newton method accepts expressions in x for the % function or for its derivative. >newton("cos(x)-x","-sin(x)-1",1) >inewton("cos(x)-x","-sin(x)-1",1) % Let us try a multidimensional example. >function f(x) $return [x[1]^2+x[2]^2-1,x[1]^2/2+2*x[2]^2-1] $endfunction % To see how this function looks like, let us plot % the contour lines of 0 of its components. % % First we set up an array of x,y-values. >x=-2:0.05:2; y=x'; % Then we plot the contour lines. >contour(x^2+y^2-1,0); hold on; contour(x^2/2+2*y^2-1,0); hold off; % Finally, we add a grid. >setplot(-2,2,-2,2); xplot(); setplot(); % We need a derivative matrix. >function df(x) $return [2*x[1],2*x[2];x[1],4*x[2]] $endfunction % Now we are ready to get an inclusion of the % intersection points (The zeros of f). >inewton2("f","df",[~0.5,1~,~0.5,1~]) >newton2("f","df",[1,1]) >load "broyden" % The Broyden method from UTIL.E does the same, % but does not deliver a guaranteed inclusion. % However, it does not need the derivative. >broyden("f",[1,1]) % Let us make another example. % % We search the interest rate of 26 payments. >p=-1050|dup(100,12)'|dup(120,24)'|1000; % We can plot the values with xmark. >style("m*"); xmark(1:38,p); % To solve the equation p(x), we define the function and % the derivative. >function g(x,p) $return polyval(p,x); $endfunction % We pass p as a parameter to g and g1. >function g1(x,p) $return polyval(polydif(p),x); $endfunction % The polynomial p has a zero close to 0.9, as % you can see. >fplot("g",0,1;p); % The Newton method yields a result, but we do % not know how accurate it is. >(1/newton("g","g1",1,p)-1)*100 % An interval method shows that the result is very accurate. >(1/(inewton("g","g1",1,p))-1)*100 % We now solve a differential equation. The method % is very elementary, but we get an inclusion of the % solution. % % The equation is y'=y/x^2. We enter it as a function. >function D(x,y) $return y/x^2 $endfunction % We can now start the solver and get a very rough % inclusion, the step size is 0.1. >x=1:0.1:5; y=idgl("D",x,1); xplot(x,left(y)_right(y)); % With a step size of 0.01, the inclusion is better. For % a change, we ener the equation as an expression. >x=1:0.01:5; y=idgl("y/x^2",x,1); xplot(x,left(y)_right(y)); > > euler-1.61.0/progs/eigen.e0000644000175000001440000000327507417015640014156 0ustar ericuserscomment A try to improve the Eigenvalues with Newton iteration endcomment function eigenspace1 ## eigenspace1(A,l) returns the eigenspace of A to the eigenvalue l. ## returns {x,l1}, where l1 should be an improvement over l, and ## x contains the eigenvectors as columns. eps=epsilon(); repeat; k=kernel(arg1-arg2*id(cols(arg1))); if k==0; else; break; endif; if epsilon()>1 break; endif; setepsilon(100*epsilon()); end; if k==0; error("No eigenvalue found!"); endif; setepsilon(eps); {dummy,l}=eigennewton(arg1,k[:,1],arg2); eps=epsilon(); repeat; k=kernel(arg1-l*id(cols(arg1))); if k==0; else; break; endif; if epsilon()>1 break; endif; setepsilon(100*epsilon()); end; if k==0; error("No eigenvalue found!"); endif; setepsilon(eps); si=size(k); loop 1 to si[2]; x=k[:,index()]; k[:,index()]=x/sqrt(x'.x); end; return {k,l}; endfunction function eigen1 (A) ## eigen1(A) returns the eigenvectors and a basis of eigenvectors of ## A. {l,x,ll}=eigen(A), where l is a vector of eigenvalues, ## x is a basis of eigenvectors, ## and ll is a vector of distinct eigenvalues. ## Improved version of eigen. l=eigenvalues(A); {s,li}=eigenspace1(A,l[1]); si=size(s); v=dup(li,si[2])'; vv=li; l=eigenremove(l,si[2]); repeat; if min(size(l))==0; break; endif; {sp,li}=eigenspace1(A,l[1]); si=size(sp); l=eigenremove(l,si[2]); s=s|sp; v=v|dup(li,si[2])'; vv=vv|li; end; return {v,s,vv} endfunction function eigennewton ## eigennewton(a,x,l) does a newton step to improve the eigenvalue l ## of a and the eigenvector x. ## returns {x1,l1}. a=arg1; x=arg2; x=x/sqrt(x'.x); n=cols(a); d=((a-arg3*id(n))|-x)_(2*x'|0); b=d\((a.x-arg3*x)_0); return {x-b[1:n],arg3-b[n+1]}; endfunction euler-1.61.0/progs/welcome.en0000644000175000001440000001013107417015640014665 0ustar ericusers% Welcome! % % This notebook introduces you to the basic facts about % EULER. You can execute the commands in this notebook % one by one. Just press the Enter key, each time the cursor % is on a command. The command will execute, you can see % the output and the cursor advances to the next command. % % You can page up with the scrollbar or with the page up key, % if you want to revisit old output. % % EULER works like a calculator. You can enter a formula % and it will be evaluated. >(1+1/1000)^1000 % EULER knows of many mathematical functions. Look into % the on-line help or the documentation. % % You may assign values to variables and use them later. >a=1.1; a^3+a/(a-1) % If a command is followed by a semicolon (;), EULER % does not print its output. You can enter more than one % command in a line. There are in fact two basic commands: % assignments and expressions. There is a third type: % Built-in commands. We will meet this type later. % % You can enter a vector into EULER. >v=[1;2;3] % Or a matrix. >M=[1,2,3;4,5,6;7,8,9] % You may then multiply the matrix and the vector. % EULER used the dot for the matrix product. >M.v % EULER can handle vectors very well. There are lots of % commands, which generate a vector. One of them is % the : command. >1:10 % We can use it to generate a table of x values. % This time, we surpress the output of the 201 % entries of the vector x. >x=-1:0.01:1; % One principle of EULER is that all functions are % applied to every element of a vector. >sqrt(1:10) % So we can easily generate a table of y values. >y=x^3-x; % This makes it possible to plot the values of the function x^3-x. >xplot(x,y); % The plot disappears as soon as EULER has to print % text to the text window. So press the TAB key to % see the plot. % % You could set the plot window, or give the plot a % title. >setplot(-2,2,-2,2); xplot(x,y); title("First plot"); wait(20) % You can also use the fplot routine, which takes a function % name or an expression in the variable x as first argument. >fplot("x^3-x",-1,1); % Many other function support this style. fmax finds the % point, where the maximum of a convex function in a given % interval is obtained. >fmax("x^3-x",-1,0) % Another examples is the Romberg method, which computes % the integral of a function. >romberg("x^3-x",0,1) % You can also easily program new functions in EULER. % Please, enter the following lines one by one. >function f(x) $return 1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6; $endfunction % We can then plot the function using fplot. >fplot("f",0,2); wait(20); % It may be easier to use an expression in x. We could % assign it to a variable first. >expr="1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6"; % The we use this expression string with fplot. >fplot(expr,0,2); wait(20); % Or we could integrate the function over [0,2] using % Romberg's method. We increase the accuracy for this. >longformat; romberg("f",0,2) % Let us compare the result with another method. We use % Gauss quadrature with 10 subintervals and 20 knots in % each subinterval. >gauss("f",0,2,20) % The simpson method if far less efficient. >simpson("f",0,2,200) % Note that f has a zero close to 1.2. We find this % zero with the secant method. >secant("f",1,2) % Let us use the bisection method and compare the result. >bisect("f",1,2) % EULER can do a lot of linear algebra. First let us define % a matrix with random entries, equally distributed in % [0,1]. >A=random(5,5) % We can compute the inverse. >inv(A) % Let us check it. >totalmax(A.inv(A)-id(5)) % Or the eigenvalues. >eigenvalues(A) % How about the condition number? >max(abs(eigenvalues(A)))/min(abs(eigenvalues(A))) % Let us put it into a function. >function condition (A) $e=abs(eigenvalues(A)); $return max(e)/min(e); $endfunction % Test it. >condition(A) % The condition number of the 5x5 Hilbert matrix. >condition(hilb(5)) % Compute the Eigenvalues and the Eigenvectors. >{l,H}=eigen(A); % Check if A.h=l*h for each column of H and corresponding % l. >totalmax(abs(A.H-dup(l,5)*H)) % Three-dimensional plots can be easily created with f3dplot. % Let us call reset, so that the default view is applied. >reset; f3dplot("x*y"); wait(20); > euler-1.61.0/progs/spline.e0000644000175000001440000000316707417015640014361 0ustar ericusers.. Test the spline function. function test ## Demonstrates the spline functions in RMAT. "Click any number of points (x,y) with different x" "The program will compute the interpolating spline" "and the interpolating polynomial." "Press any key, please!" wait(180); "" setplot(-1.1,1.1,-1.1,1.1); plot(-1.1,-1.1); xgrid(-1:0.5:1); ygrid(-1:0.5:1); hold on; title("Click with the mouse. Finish -> here <-"); t=zeros(1,0); s=t; n=0; repeat; m=mouse(); if abs(m(1))>1.1 || abs(m(2))>1.1; break; endif; t=t|m(1); s=s|m(2); n=n+1; mark([m(1),m(1)],[m(2),m(2)]); end; {t,i}=sort(t); s=s(i); sp=spline(t,s); x=linspace(min(t),max(t),n*10); plot(x,splineval(t,s,sp,x)); color(2); plot(x,interpval(t,interp(t,s),x)); color(1); wait(180); hold off; return 0; endfunction function test2 ## Demonstrates the spline functions in RMAT. "Click any number of points (x,y)" "The program will compute the interpolating spline" "and the interpolating polynomial in each variable." "Press any key, please!" wait(180); "" setplot(-1.1,1.1,-1.1,1.1); plot(-1.1,-1.1); xgrid(-1:0.5:1); ygrid(-1:0.5:1); hold on; title("Click with the mouse. Finish -> here <-"); t=zeros(1,0); s=t; n=0; repeat; m=mouse(); if abs(m(1))>1.1 || abs(m(2))>1.1; break; endif; t=t|m(1); s=s|m(2); n=n+1; mark([m(1),m(1)],[m(2),m(2)]); end; spt=spline(1:n,t); sps=spline(1:n,s); x=linspace(1,n,600); plot(splineval(1:n,t,spt,x),splineval(1:n,s,sps,x)); color(2); plot(interpval(1:n,interp(1:n,t),x),interpval(1:n,interp(1:n,s),x)); color(1); wait(180); hold off; return 0; endfunction test(); test2(); euler-1.61.0/progs/electricity.e0000644000175000001440000002725007521220640015400 0ustar ericusers"an electricity package" "sinwave : generate a sinus signal" "sqrwave : generate a square signal" "triwave : generate a triangle signal" "pd2mwave: generate a pd2 bridge signal (2 diodes and 2 rectifiers)" "pd2fwave: generate a pd2 bridge signal (4 rectifiers)" "scope : plot an oscilloscope grid" "plotZ : plot of complex impedance (module and arg)" "plotFFT : plot the Fourier Transform of a signal" "bode : plot the bode diagram" j=1i; function findYvrange(Vmin,Vmax) .. volt range cv=[100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001]; .. find the right range cvi=1; for i=1 to length(cv)-1 if (4*cv[i+1] < Vmax) || (-4*cv[i+1] > Vmin); cvi=i; break; endif; end; return cv[cvi]; endfunction function findXvrange(Vmin,Vmax) .. volt range cv=[100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001]; .. find the right range cvi=1; for i=1 to length(cv)-1 if (5*cv[i+1] < Vmax) || (-5*cv[i+1] > Vmin); cvi=i; break; endif; end; return cv[cvi]; endfunction function findtrange(Tmax) .. time range ct=[10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002,0.001,0.0005,0.0002,0.0001,0.00005,0.00002,0.00001,0.000005,0.000002,0.000001,0.0000005]; .. find the right range cti=1; for i=1 to length(ct)-1 if (10*ct[i+1]+epsilon < Tmax); cti=i; break; endif; end; return ct[cti]; endfunction function drawgrid(dt,dv) ho=holding(1); lw=linewidth(1); c=color(1); .. draw vertical lines ls=linestyle("."); for i=1 to 9 if i != 5 plot([i*dt,i*dt],[-4*dv,4*dv]); endif; end; linestyle(ls); plot([5*dt,5*dt],[-4*dv,4*dv]); for j=1 to 49 plot([j/5*dt,j/5*dt],[-0.1*dv,0.1*dv]); end; .. draw horizontal lines ls=linestyle("."); for i=-3 to 3 if i != 0; plot([0,10*dt],[i*dv,i*dv]); endif; end; linestyle(ls); plot([0,10*dt],[0,0]); for j=-19 to 19 plot([4.9*dt,5.1*dt],[j/5*dv,j/5*dv]); end; color(c); linewidth(lw); holding(ho); return 0; endfunction; function drawXYgrid(dv1,dv2) ho=holding(1); lw=linewidth(1); c=color(1); .. draw vertical lines ls=linestyle("."); for i=-4 to 4 if i != 0 plot([i*dv1,i*dv1],[-4*dv2,4*dv2]); endif; end; linestyle(ls); plot([0,0],[-4*dv2,4*dv2]); for j=-24 to 24 plot([j/5*dv1,j/5*dv1],[-0.1*dv2,0.1*dv2]); end; .. draw horizontal lines ls=linestyle("."); for i=-3 to 3 if i != 0; plot([-5*dv1,5*dv1],[i*dv2,i*dv2]); endif; end; linestyle(ls); plot([-5*dv1,5*dv1],[0,0]); for j=-19 to 19 plot([-0.1*dv1,0.1*dv1],[j/5*dv2,j/5*dv2]); end; color(c); linewidth(lw); holding(ho); return 0; endfunction; function scope (x=0,y1=0,y2=0) ## o scope(x,y1,), scope(x,,y2) and scope(x,y1,y2) shows a scope grid and ## the curves y1(x) or y2(x) or both. ## o scope(,y1,y2) shows the curve y2(y1) in XY mode. ## o scope() shows only the grid. if argn()==0; if !holding();clg; frame();endif; p=plot(); dt=p[2]/10; dv1=p[4]/4; drawgrid(dt,dv1); elseif (argn()==1); error("not enough parameters (2 at least)"); elseif (argn()==2) || ((argn()==3) && (y1==0)); .. normal mode ; one curve if !holding();clg; frame();endif; dt=findtrange(max(x)); if (y2==0); dv1=findYvrange(min(y1),max(y1)); else dv1=findYvrange(min(y2),max(y2)); endif; p=[0,10*dt,-4*dv1,4*dv1];setplot(p); drawgrid(dt,dv1); .. display ranges tp=toscreen([7.5*dt,3.8*dv1]); text("time : "|printf("%g s/div",dt),tp); tp[2]=tp[2]+textheight(); if (y2==0); text("CH1 : "|printf("%g V/div",dv1),tp); ho=holding(1); plot(x,y1); holding(ho); else text("CH2 : "|printf("%g V/div",dv1),tp); ho=holding(1); plot(x,y2); holding(ho); endif; elseif (argn()==3) && (x==0); .. XY mode if !holding();clg; frame();endif; dv1=findXvrange(min(y1),max(y1)); dv2=findYvrange(min(y2),max(y2)); p=[-5*dv1,5*dv1,-4*dv2,4*dv2];setplot(p); drawXYgrid(dv1,dv2); .. display ranges tp=toscreen([2.5*dv1,3.8*dv2]); text("CH1 (X) : "|printf("%g V/div",dv1),tp); tp[2]=tp[2]+textheight(); text("CH2 (Y) : "|printf("%g V/div",dv2),tp); ho=holding(1); plot(y1,y2); holding(ho); else .. normal display ; two curves if !holding();clg; frame();endif; dt=findtrange(max(x)); dv1=findYvrange(min(y1),max(y1)); dv2=findYvrange(min(y2),max(y2)); p=[0,10*dt,-4*dv1,4*dv1];setplot(p); drawgrid(dt,dv1); .. display ranges tp=toscreen([7.5*dt,3.8*dv1]); text("time : "|printf("%g s/div",dt),tp); tp[2]=tp[2]+textheight(); text("CH1 : "|printf("%g V/div",dv1),tp); tp[2]=tp[2]+textheight(); text("CH2 : "|printf("%g V/div",dv2),tp); .. display a CH1 / CH2 mark tp0=toscreen([x[1],y1[1]]); tp0[1]=tp0[1]-5;tp0[2]=tp0[2]-textheight()/2; tp1=toscreen([x[1],dv1/dv2*y2[1]]); tp1[1]=tp1[1]-5;tp1[2]=tp1[2]-textheight()/2; for i=1 to 10; if abs(tp1[2]-tp0[2])>textheight(); break; endif; tp2=toscreen([x[i*dt/x[2]+1],y1[i*dt/x[2]+1]]); tp2[1]=tp2[1]-5; if tp2[2]",tp0); rtext("CH2>",tp1); ho=holding(1); plot(x,y1); plot(x,dv1/dv2*y2); holding(ho); endif; return p; endfunction function sinwave(t,f,E=1,phi=0) ## returns a vector containing the square signal ## ## t : time ## f : frequency ## E : RMS value ## phi : origin phase (rad) ## useglobal; return E*sqrt(2)*sin(2*pi*f*t+phi); endfunction; function sqrwave(t,f,E,alpha=0.5) ## returns a vector containing the square signal ## ## t : time ## f : frequency ## E : amplitude (from 0 to max) ## alpha : period ratio ## m=t; T=1/f; i=1;k=0; repeat; if t[i]-k*T=alpha*T) && (t[i]-k*Tlength(t); break; endif; end; return m; endfunction; function triwave(t,f,E,alpha=0.5) ## returns a vector containing the triangle signal ## ## t : time ## f : frequency ## E : amplitude (from 0 to max) ## alpha : period ratio ## m=t; T=1/f; i=1;k=0; a=2*E/(alpha*T); b=-2*E/((1-alpha)*T); b0=E*(1+alpha)/(1-alpha); repeat; if t[i]-k*T=alpha*T) && (t[i]-k*Tlength(t); break; endif; end; return m; endfunction; function pd2mwave(t,f,V,alpha=0) ## returns a vector containing the values of the voltage across an RL rectifier bridge load. ## t : time array ## f : frequency ## V : RMS value of the sine wave ## alpha : angle (°) m = t; T=1/f; i=1;k=0; repeat; if (t[i]-k*T=T/2) && (t[i]-k*T=alpha/360*T) && (t[i]-k*T=T/2+alpha/360*T) && (t[i]-k*Tlength(t);break;endif; end; return m; endfunction function pd2fwave(t,f,V,alpha=0) ## returns a vector the values of the voltage across an RL rectifier bridge load. ## t : time array ## f : frequency ## V : RMS value of the sine wave ## alpha : angle (°) m = t; T=1/f; i=1;k=0; repeat; if (t[i]-k*T>=alpha/360*T) && (t[i]-k*T=T/2+alpha/360*T) && (t[i]-k*Tlength(t);break;endif; end; return m; endfunction function plotZ(func,fmin,fmax,nb=200,fmes=-1,Zmes=-1,phmes=0) ## plots the amplitude and phase of a complex impedance ## from fmin Hz to fmax Hz ## ## func : a function describing the impedance ## fmin, fmax : frequency range ## nb : number of points ## fmes, Zmes, phmes : experimental data ## h=textheight();b=textwidth();dh=floor((1024-7.5*h)/2); f=fmin:(fmax-fmin)/(nb-1):fmax; if isfunction(func); z=func(f,args()); else z=expreval(func,f); endif; m=abs(z); ph=180/pi*arg(z); .. affichage de la courbe en fonction du temps window([8*b,1.5*h,1024-2*b,1.5*h+dh]); {t,form}=ticks(0,max(m)); if max(m)>t[length(t)]; ymax=2*t[length(t)]-t[length(t)-1]; else ymax=t[length(t)]; endif setplot([fmin,fmax,0,ymax]); xplot(f,m); rtext("f (Hz)",[1024-2*b,2.5*h+dh]); vcutext("Z (ohm)",[5,1.5*h+.5*dh]); hd=holding(1); if length(fmes)>0 && fmes!=-1; c=color(10); m=markerstyle("+"); mark(fmes,Zmes); color(c); endif; window([8*b,4.5*h+dh,1024-2*b,1024-3*h]); xplot(f,ph); rtext("f (Hz)",[1024-2*b,1024-2*h]); vcutext("phase (°)",[5,4.5*h+1.5*dh]); if length(fmes)>0 && fmes!=-1; c=color(10); mark(fmes,phmes); markerstyle(m); color(c); endif; holding(hd); return z; endfunction; function plotFFT(func,T,nbe=256) ## plots the spectra of a signal defined by the function parameter ## over T seconds. ## ## func : the signal (function) ## T : time ## nbe : sample number (power of 2) ## h=textheight();b=textwidth();dh=floor((1024-7.5*h)/2); t=0:T/(nbe-1):T; if isfunction(func); y=func(t,args()); else y=expreval(func,t); endif; .. affichage de la courbe en fonction du temps window([8*b,1.5*h,1024-2*b,1.5*h+dh]);xplot(t,y); rtext("t (s)",[1024-2*b,2.5*h+dh]); vcutext("signal",[5,1.5*h+.5*dh]); .. période et fréquence d'échantillonnage Te=T/(nbe-1);Fe=1/Te; .. calcul de la fft c=fft(y); f=0:Fe/(nbe-1):Fe/2; cn=matrix([1,nbe/2],0); cn[1]=abs(c[1])/nbe; for i=2 to nbe/2; cn[i]=(abs(c[i])+abs(c[nbe+2-i]))/nbe; end; hd=holding(1); window([8*b,4.5*h+dh,1024-2*b,1024-3*h]);xplot(f,cn); rtext("f (Hz)",[1024-2*b,1024-2*h]); vcutext("spectre",[5,4.5*h+1.5*dh]); holding(hd); return Fe; endfunction; ..load logplot; function bode(tf,fmin=0.01,fmax=100,pt=100,what=0,fmes=-1,Gmes=0,phmes=0) ## draws the bode's diagram of the transfert function tf(x) ## ## Example: ## ## bode("1/(1+j*2*pi*x/1000)",10,10e3); ## ## draws the diagram from 10 and 1000 Hz for the specified ## transfert function. ## ## tf = transfert function (variable -> x) ## fmin = start frequency ## fmax = end frequency ## pt = samples ## what = 0 magnitude and phase both on the same graphic. ## 1 magnitude only ## 2 phase only expi = floor(log10(fmin)); expf = ceil(log10(fmax)); f = (10)^linspace(expi,expf,pt); if isfunction(tf); T=tf(f,args()); else T=expreval(tf,f); endif; gdb = 20*log10(abs(T)); ph=arg(T); h=textheight();b=textwidth(); if what==0; dh=floor((1023-7.5*h)/2); window([8*b,1.5*h,1023-2*b,1.5*h+dh]); xlogplot(f,gdb,10); hd=holding(1); if length(fmes)>0 && fmes!=-1; c=color(10); m=markerstyle("+"); mark(log10(fmes),Gmes); color(c); endif; ctext("f (Hz)",[8*b+(1023-10*b)/2,3*h+dh]); vcutext("Gain (dB)",[5,1.5*h+dh/2]); window([8*b,4.5*h+dh,1023-2*b,1023-3*h]); xlogplot(f,ph/pi*180,10); if length(fmes)>0 && fmes!=-1; c=color(10); mark(log10(fmes),phmes); markerstyle(m); color(c); endif; ctext("f (Hz)",[8*b+(1023-10*b)/2,1023-1.5*h]); vcutext("Phase (°)",[5,4.5*h+1.5*dh]); holding(hd); elseif what==1; shrinkwindow(); xlogplot(f,gdb,10); if length(fmes)>0 && fmes!=-1; hd=holding(1); c=color(10); m=markerstyle("+"); mark(log10(fmes),Gmes); markerstyle(m); color(c); holding(hd); endif; ctext("f (Hz)",[8*b+(1023-10*b)/2,1023-h]); vcutext("Gain (dB)",[5,512]); else shrinkwindow(); xlogplot(f,ph/pi*180,10); if length(fmes)>0 && fmes!=-1; hd=holding(1); c=color(10); m=markerstyle("+"); mark(log10(fmes),phmes); markerstyle(m); color(c); holding(hd); endif; ctext("f (Hz)",[8*b+(1023-10*b)/2,1023-h]); vcutext("Phase (°)",[5,512]); endif; return 0; endfunction; euler-1.61.0/progs/complex.en0000644000175000001440000000512410330772261014704 0ustar ericusers% Let us show some complex mappings. The main tool is "cplot". % First we define a complex grid around the unit circle. >r=exp(linspace(0.000001,1,20)); phi=linspace(0.0000001,2*pi,120)'; >z=r*exp(phi*I); % The we plot it, and add a x-y-ticks. >setplot(-4,4,-4,4); cplot(z); xplot(); wait(20); % Press the TAB key to see the graphics, if the text window % hides it. % % If the plot does not look circular, you should resize % the graphics window. % % The following is the Joukowski mapping, which maps the % outside of the unit circle onto the outside of the unit % interval [-1,1] one-to-one. >function J(z) $return (z+1/z)/2 $endfunction % We map the grid and plot the result. >setplot(-1.7,1.7,-1.7,1.7); cplot(J(z)); xplot(); wait(20); % This is the inverse of the Joukowski mapping. We have % to define cases here. >function invJ(z) $w=sqrt(z^2-1); $return z+(re(z)>0)*w-(re(z)<=0)*w; $endfunction % Using these functions, we can map the outside of the % unit circle to the outside of a cross. >setplot(-2,2,-2,2); cplot(J(I*invJ(J(z)*sqrt(2)))); xplot(); wait(20); % The following maps the inside of the unit circle to itself, % taking 0 to a. >function K(z,a) $return (z+a)/(1+conj(a)*z) $endfunction % Let us view the image of our grid, when the outside of % the circle is mapped to the inside and then 0 to 0.5. >setplot(-1,1,-1,1); cplot(K(1/z,0.5)); xplot(); wait(20); % The following function maps the outside of the unit circle % to the upper half plane. >function H(z) $return (1i*z+1)/(1i+z) $endfunction % We can view the image of our grid. Note that infinity % is mapped to i. >setplot(-3,3,0,6); cplot(H(z)); xplot(); wait(20); % This is the inverse function, mapping the upper half % plane to the outside of the unit circle. >function invH(z) $return (1i*z-1)/(1i-z) $endfunction % This function maps the outside of the unit circle onto % itself, and takes a to infinity. >function L(z,a) $return (a/conj(a))*(conj(a)*z-1)/(a-z) $endfunction % In the following picture, 5 goes to infinity. >setplot(-6,6,-6,6); cplot(L(z,5)); xplot(); wait(20); % Now we map the outside of the unit circle to the outside % of the arc with angle Pi. >setplot(-2,2,-1.5,2.5); cplot(invH(J(L(z,-invJ(1i))))); xplot(); wait(20); >w=invH(J(L(z,-invJ(1i)))); >zoom(4); viewheight(35°); viewangle(40°); solid(re(w)-0.7,im(w),abs(z)-3); >setplot(-2,2,-2,2); % The following picture shows the level lines of the Green's % function for two intervals and its harmonic conjugate. >w=sqrt(J(-z)-J(-exp(1))); cplot(w); hold on; wait(20); >w1=sqrt(J(-exp(1)*z)-J(-exp(1))); cplot(w1); cplot(-w); cplot(-w1); hold off; wait(20); >xplot(); wait(20); > > euler-1.61.0/progs/testsuit.e0000644000175000001440000000437710330771565014762 0ustar ericusersform=shortformat(); "Test suite for EULER implementations." "" function isone (x) if !(any(x)!=1); "passed", else "*************** failed ****************", endif; return "" endfunction "--- Linear Sytems" a=random(5,5); isone(a\sum(a)~=1); isone(ones(5,1) <<= ilgs(~a~,~sum(a)~)); a=a+random(5,5)*1i; isone(a\sum(a)~=1); "--- Intervals", x=dup([~-2,-1~,~-2,3~,~1,2~],3); y=x'; z=x*y; h1=left(x)*left(y); h2=right(x)*right(y); h3=left(x)*right(y); h4=right(x)*left(y); isone(left(z)<>min(min(min(h1,h2),h3),h4)); isone(right(z)<>max(max(max(h1,h2),h3),h4)); "--- Accumulator" x=exp(random(1,100)*30); x=x|(-x)|1; isone(accuload(x)); accuload(x,x); isone(accuadd(x,-x)==0); x=exp(random(1,10)*60); x=x|(-x)|1; isone(accuload(x)); isone(middle(accuload(~x~))==1); x=exp(random(1,10)*60)+1i*exp(random(1,10)*60); isone(abs(accuload(x|-x|1))==1); isone(abs(accuload(x|x,-x|x))==0); "--- Residuum" {i,j}=field(1:8,1:8); h=fak(15)/(i+j-1); b=sum(h); x=h\b; x=x-h\residuum(h,x,b); x=x-h\residuum(h,x,b); isone(x~=ones(8,1)); "--- Functions" function test i=0; loop -10 to 11; i=i+#; end; return i; endfunction isone(test()==11); function test i=0; for j=-10 to 11 step 1; i=i+j; end; return i; endfunction isone(test()==11); function test i=0; j=-10; repeat; i=i+j; if j>=11; return i; endif; j=j+1; end; endfunction isone(test()==11); function test (k=3) l=6; if (k==3); return 1; endif; if (k<2); return 2; else if (k>4); if k>5; return 3; endif; else l=5; endif; endif return l; endfunction isone([test()==1,test(3)==1,test(1)==2, .. test(3.5)==5,test(6)==3,test(4.5)==6]); "--- Strings" isone(''Affe''<"Berta"); isone("Affen">"Affe"); isone("test"==''test''); function test return ''3+4*''=="3+4*" endfunction isone(test()); "--- Operators" p=1:5; isone(p[1]==p[1]); isone(p[1]p[2]); isone(!(~1,2~<~1,3~)); isone(~2,3~>~0,1~); isone(1+0i==1); isone((pi()<4)&&(pi>3)); "--- FFT and Complex Polynomials" z=exp(2*Pi*(0:15)/16); isone(polyval(1:16,z)~=fft(1:16)); p=random(1,256)+1i*random(1,256); isone(p~=ifft(fft(p))); isone(p~=fft(ifft(p))); "--- Statistics" n=10000; h=normal(1,n); isone(abs(sum(h)/n)<=0.1); isone(abs(sum(h*h)/n-1)<=0.1); t=-2:0.1:2; isone(abs(invnormaldis(normaldis(t))-t)<0.001); format(form); .. EOF euler-1.61.0/progs/modulo.e0000644000175000001440000000545410330770433014363 0ustar ericuserscomment gcd(a,b) returns the greatest common divisor of a and b lcm(a,b) returns least common multiple of a and b ggt(x,y) returns {g,a,b} such that ax+by=g. invmod(x,m) returns y such that x*y is 1 modulo m. primes(n) returns all primes up to n using the Sieve of Erastothenes. isprime(n) returns true if n is a prime number, false otherwise. factor(n) returns prime factorization of n. If n==1, returns 1. endcomment function gcd1(a,b) ## gcd(a,b) returns the greatest common divisor of a and b ## See also: primes, isprime, factor, lcm, mod, invmod, ggt. if a>b; u=a;v=b; else u=b;v=a; endif; repeat; if v==0; break; endif; r=mod(u,v); u=v; v=r; end; return u; endfunction function gcd(a,b) return map("gcd1",a,b) endfunction function lcm(a,b) ## lcm(a,b) returns least common multiple of a and b ## See also: primes, isprime, factor, gcd, mod, invmod, ggt. return a*b/gcd(a,b); endfunction; function ggt (x,y) ## return {g,a,b} such that ax+by=g. ## See also: primes, isprime, factor, gcd, lcm, mod, invmod. if x=3 len = floor((n-1)/2); .. length of the sieve sieve = ones ([1,len]); .. assume every odd number is prime for i=1 to (sqrt(n)-1)/2 .. check up to sqrt(n) if (sieve[i]) .. if i is prime, eliminate multiples of i sieve[3*i+1:2*i+1:len] = 0; .. do it endif end return [2, 1+2*nonzeros(sieve)]; # primes remaining after sieve elseif n>=2 return 2; else return []; endif endfunction function _isprime(n) if (n != ceil(n) || n < 2) return 0; elseif n < 4 return 1; else q = n/[2:sqrt(n)]; return !any(q == ceil(q)); endif endfunction function isprime(n) ## isprime(n) returns true if n is a prime number, false otherwise. ## See also: primes, factor, gcd, lcm, mod, invmod, ggt. return map("_isprime",n); endfunction function factor(n) ## factor(n) returns prime factorization of n. If n==1, returns 1. ## See also: primes, isprime, gcd, lcm, mod, invmod, ggt. if n < 4 return n; else p = primes(sqrt(n)); q = n/p; idx = nonzeros (q == ceil(q)); if cols(idx)==0 return n; else r = p(idx); q = factor(n/prod(p(idx))); if q != 1 return sort([r, q]); endif endif endif endfunction euler-1.61.0/progs/smith.e0000644000175000001440000000360607417015640014211 0ustar ericusersfunction smith(r = [0, 0.2, 0.5, 1, 2, 5], x = [0.2, 0.5, 1, 2, 5]) ## SMITH Draws a Smith chart and sets hold to on so that you can plot the ## reflection coefficient on top of it. ## This is a quick little hack that draws a simple Smith chart, a diagram ## that is very frequently used in high frequency engineering. It maps ## the normalized impedance z to the reflection coefficient gamma: ## gamma = (z-1)/(z+1) with z = r+i*x . ## You can customize the function by specifying the r and x parameters ## 3-13-95 Frank Wiedmann for the matlab verion wiedmann@com.enst.fr ## 8-31-99 Eric Boucharé for the update to euler Eric.Bouchare@wanadoo.fr _setplot([-1,1,-1,1]); hold on; h = textheight(); w = textwidth(); tr = 2*pi*(0:.01:1); plot([-1,1],[0,0]); .. r = [0 .2 .5 1 2 5]; .. specify the r=const lines you want to draw for i=1 to length(r); rr = 1/(r{i}+1); cr = 1-rr; plot(cr+rr*cos(tr),rr*sin(tr)); p = toscreen([cr-rr,0]); if r{i}==0; rtext(printf("%g",r{i}),[p{1}-(w/2),p{2}-(h/3)]); else rtext(printf("%g",r{i}),[p{1}-(w/2),p{2}]); endif; end; .. x = [.2 .5 1 2 5]; .. specify the x=const lines you want to draw for i=1 to length(x); rx = 1/x{i}; cx = rx; tx = 2*atan(x{i})*(0:.01:1); plot(1-rx*sin(tx),cx-rx*cos(tx)); u = 1-rx*sin(2*atan(x{i})); v = cx-rx*cos(2*atan(x{i})); p=toscreen([u,v]); if u<0; rtext(printf("%g",x{i}),[p{1}-(w/2),p{2}-(h/3+h*v)]); elseif u>0 text(printf("%g",x{i}),[p{1}+(w/2),p{2}-(h/3+h*v)]); else ctext(printf("%g",x{i}),[p{1},p{2}-(h+h/3)]); endif; plot(1-rx*sin(tx),-cx+rx*cos(tx)); u = 1-rx*sin(2*atan(x{i})); v = -cx+rx*cos(2*atan(x{i})); p=toscreen([u,v]); if u<0; rtext(printf("%g",x{i}),[p{1}-(w/2),p{2}]); elseif u>0 text(printf("%g",x{i}),[p{1}+(w/2),p{2}]); else ctext(printf("%g",x{i}),[p{1},p{2}+(h/3)]); endif; end; hold off; return 0; endfunction euler-1.61.0/progs/test.dat0000644000175000001440000000211507430525741014365 0ustar ericusers0.276173; 0.648033; 0.942247; 0.10745; 0.257098; 0.167369; 0.180429; 0.4583; 0.522517; 0.977747; 0.641789; 0.684732; 0.787259; 0.558223; 0.223559; 0.539955; 0.17438; 0.395061; 0.449417; 0.98436; 0.840541; 0.511823; 0.630664; 0.23547; 0.754754; 0.0652573; 0.0650142; 0.227544; 0.20685; 0.526506; 0.102769; 0.875836; 0.873778; 0.644278; 0.763807; 0.844389; 0.602834; 0.196964; 0.207531; 0.707865; 0.747061; 0.632893; 0.315976; 0.17242; 0.15833; 0.454332; 0.00376572; 0.468449; 0.595682; 0.722167; 0.637681; 0.698366; 0.633133; 0.0727542; 0.649142; 0.312928; 0.163818; 0.356618; 0.00447185; 0.803659; 0.493169; 0.221682; 0.325087; 0.406566; 0.719597; 0.559369; 0.281646; 0.657815; 0.510672; 0.766361; 0.56789; 0.0914893; 0.920668; 0.00118233; 0.793999; 0.820835; 0.629699; 0.169053; 0.938703; 0.470651; 0.430518; 0.499837; 0.903713; 0.98387; 0.840944; 0.328593; 0.660048; 0.0644105; 0.769492; 0.505717; 0.0995562; 0.476064; 0.0805089; 0.696364; 0.575751; 0.735628; 0.32858; 0.301584; 0.338939; 0.778794; euler-1.61.0/progs/autodemo.e0000644000175000001440000004335207417015640014704 0ustar ericusers.. The Demo. Starts automatically. comment Demo loading. endcomment demodelay=180; reset(); function delay global demodelay; return demodelay endfunction function warten wait(delay()); return 0; endfunction function weiter "" "<< Press return to continue >>" warten(); return 120; endfunction function taste "" "<< Please press return to see graphics >>", return warten(); endfunction function fisch ## plots a fish global Pi; t=0:3; ph=interp(t,[0.05,0.3,0.2,1.2]); pb=interp(t,[0.05,0.5,0.2,0.2]); phi=Pi-linspace(0,2*Pi,20); l=linspace(0,3,40); psin=dup(sin(phi),length(l)); pcos=dup(cos(phi),length(l)); lh=dup(interpval(t,ph,l),length(phi))'; lb=dup(interpval(t,pb,l),length(phi))'; x=pcos*lb; z=psin*lh; y=dup(l-1.5,length(phi))'; view(2.5,1.5,0.3,0.1); solid(x,y,z); title("A solid fish"); warten(); huecolor(1); solidhue(x,y,z,-y,1); title("A shaded fish"); warten(); return 0; endfunction function mindemo () fcd("sin(x)*x+cos(y)*y",50,0,10,0,10); xplot(); warten(); mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,5]); color(10); hold on; mark(mi[1],mi[2]); hold off; color(1); title("Local Minima"); warten(); mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,8]); color(10); hold on; mark(mi[1],mi[2]); hold off; color(1); warten(); return ""; endfunction function grafikdemo ## grafikdemo shows the grafik capabilities of EULER fullwindow(); hold off; global Pi; ## Abbildungen von R nach R t=-Pi:Pi/20:Pi; shrinkwindow(); setplot(-Pi,Pi,-2,2); linewidth(4); plot(t,sin(t)); linewidth(1); hold on; color(2); style("."); plot(t,cos(t)); color(3); style("--"); plot(t,(sin(t)+cos(t))/2); xgrid(-3:1:3,1); ygrid(-1:1,1); title("2D plots"); color(1); style(""); fullwindow(); hold off; warten(); ## Abbildungen von R nach R^2 in vier Fenstern t=-Pi:Pi/50:Pi; window(10,textheight()*1.5,490,490); plot(sin(3*t)/3+cos(t),sin(3*t)/3+sin(t)); hold on; title("Parametric curves"); window(510,textheight()*1.5,1010,490); plot(sin(2*t)/3+cos(t),sin(2*t)/3+sin(t)); window(10,510,490,1010); plot(sin(2*t),sin(3*t)); window(510,510,1010,1010); t=t+2*Pi; plot(cos(t)*log(t),sin(t)*log(t)); hold off; warten(); ## Bar plots shrinkwindow(); r=normal(1,100); c=count(r+5,10); c=c/sum(c); setplot(-5,5,0,0.5); clg; barstyle("\/"); b=barcolor(1); plotbar(-5:4,0,1,c); barcolor(b); t=linspace(-5,5,300); hold on; xplot(t,exp(-t^2/2)/sqrt(2*pi)); hold off; title("A statistical experiment"); style(""); warten(); ## x^2+y^3 als mesh und contour. fullwindow(); x=pi*(-1:0.1:1); y=x'; mesh(x*x+y*y*y); title("x^2+y^3"); warten(); contour(x*x+y*y*y,-30:5:30); title("Contour plot of this function"); warten(); x=(-1:0.04:1)*pi; y=x'; huecolor(1); density(sin(2*x)*cos(2*y),1); title("Density plot of a function"); warten(); ## e^-r cos(r) als Drahtmodell. x=pi*(-1:0.1:1); y=x'; r=x*x+y*y; f=exp(-r)*cos(r); view(2,1,0,0.5); ## [ Abstand, Zoom, Winkel rechts, Winkel hoch ] wire(x/Pi,y/Pi,f); title("Wire frame model"); warten(); meshbar(f); title("Bar plot of this function"); warten(); meshbar(-f); title("Negative bar plot"); warten(); ## Der Fisch als solides Modell. fisch(); view(2,1,0.2,0.3); ## Eine complexe Abbildung w=z^1.3 setplot(-1, 2, -0.5, 1.5); t=0:0.1:1; z=dup(t,length(t)); z=z+1i*z'; color(1); style("."); cplot(z); hold on; color(2); style(""); cplot(z^1.3); color(1); xgrid(0); ygrid(0); title("Complex numbers w=z^1.3"); hold off; warten(); shrinkwindow; return 0 endfunction function vectorfield (expr,x1,x2,y1,y2,nx=20,ny=20) ## Draw the vector field of a differential equation in x and y. ## expr must be the expression "f(x,y)", which computes the ## derivative of y(x) at x. setplot(x1,x2,y1,y2); x=linspace(x1,x2,nx-1); y=linspace(y1,y2,ny-1); {X,Y}=field(x,y); V=expreval(expr,X,y=Y); n=prod(size(X)); h=(x2-x1)/nx/4; v=redim(V,[n,1]); r=sqrt(v*v+1); x=redim(X,[n,1]); x=(x-h/r)|(x+h/r); y=redim(Y,[n,1]); y=(y-h*v/r)|(y+h*v/r); st=linestyle("->"); xplot(x,y); linestyle(st); return plot(); endfunction function norm (v) return sqrt(sum(v*v)) endfunction function f3body (x,y) y1=y[1,1:2]; y2=y[1,3:4]; y3=y[1,5:6]; d21=(y2-y1)/norm(y2-y1)^3; d31=(y3-y1)/norm(y3-y1)^3; d32=(y3-y2)/norm(y3-y2)^3; return y[7:12]|(d21+d31)|(-d21+d32)|(-d31-d32); endfunction function test3body (y1) y=y1; x=0; h=0.01; setplot(-3,3,-3,3); clg; hold off; xplot(); frame(); title("3-body problem"); testkey(); repeat; loop 1 to 10; ynew=runge2("f3body",x,x+h,y,0.0001,h); H=(y_ynew)'; hold on; color(3); plot(H[1],H[2]); color(4); plot(H[3],H[4]); color(5); plot(H[5],H[6]); y=ynew; x=x+h; hold off; end; color(1); if (any(abs(y[1:6])>4)); break; endif; end; return x endfunction function dgldemo ## Differentialgleichung vectorfield("-2*x*y",0,2,0,2); t=0:0.05:2; s=heun("-2*x*y",t,1); hold; plot(t,s); hold; title("Solving a differential equation"); warten(); test3body([-2,0,2,0,0,2,0.1,-0.2,0,0.2,0.1,0]); return 0; endfunction function grafiktutor ## Erkl„rt die Grafikfunktionen hold off; global Pi; shrinkwindow(); x=linspace(-1,1,50); T=cos((1:5)'*acos(x)); setplot(-1.5,1.5,-1.5,1.5); plot(x,T); xgrid(-2:2,1); ygrid(-2:2,1); hold off; warten(); t=-1:0.01:1; setplot(-1,1,-10,10); clg; xplot(); hold on; plot(t,1/t); plot(t,1/t^2); hold off; title("1/t and 1/t^2"); warten(); x=-1:0.1:1; y=x'; z=x*x+x*y-y*y; fullwindow(); mesh(z); warten(); contour(z,-3:0.5:3); warten(); view(2.5,1,1,0.5); solid(x,y,z); warten(); wire(x,y,z); warten(); return 0 endfunction function torus ## some torus type bodies. view([4,1,0,0.6]); x=linspace(0,2*pi,40); y=linspace(0,2*pi,20)'; ## faster than {phi,psi}=field(x,y); cosphi=cos(phi); ... ## a torus with a thick and a thin side. factor=1.5+cos(y)*(cos(x)/2+0.6); X=cos(x)*factor; Y=sin(x)*factor; Z=sin(y)*(cos(x)/2+0.6); solid(X,Y,Z); warten(); ## a deformed torus factor=1.5+cos(y); X=cos(x)*factor; Y=sin(x)*factor; Z=sin(y)+cos(2*x); solid(X,Y,Z); warten(); ## the Moebius band t=linspace(-1,1,20)'; x=linspace(0,pi,40); factor=2+cos(x)*t; X=cos(2*x)*factor; Y=sin(2*x)*factor; Z=sin(x)*t; solid(X,Y,Z); warten(); return 0; endfunction function tube ## some tube like bodies. view([3,1,0,0.1]); global Pi; x=linspace(0,2*Pi,40); ## a atomic modell or so. y=0.1+(sin(linspace(0,Pi,15))| .. 1.5*sin(linspace(0,Pi,10))|sin(linspace(0,Pi,15))); cosphi=dup(cos(x),length(y)); sinphi=dup(sin(x),length(y)); f=dup(y',length(x)); solid(f*cosphi,f*sinphi,dup(linspace(-2,2,length(y)-1)',length(x))); warten(); ## a black hole t=linspace(0,1,20); cosphi=dup(cos(x),length(t)); sinphi=dup(sin(x),length(t)); f=dup((t*t+0.2)',length(x)); view([3,1.5,0,0.7]); solid(f*cosphi,f*sinphi,dup(t'*2-1,length(x))); warten(); return 0; endfunction function minimal (r,phi) R=dup(r',length(phi)); X=R*dup(cos(phi),length(r))+R*R/2*dup(cos(2*phi),length(r)); Y=-R*dup(sin(phi),length(r))-R*R/2*dup(sin(2*phi),length(r)); Z=4/3*dup((r^1.5)',length(phi))*dup(cos(1.5*phi),length(r))-1; view(9,1,-1.5,0.2); solid(X,Y,Z); title("A minmal surface"); warten(); return 0; endfunction function spiral {r,a}=field(0:0.1:1,0:pi()/8:6*pi()); z=a/8; x=r*cos(a)*(1-a/20); y=r*sin(a)*(1-a/20); z=z-1.5; view(4,1.5,0.5,0.3); framedsolid(x,y,z); warten(); return 0; endfunction function rings rr=0.2; t=linspace(0,2*pi,10); s=linspace(0,2*pi,41); n=length(s); r=dup(1+cos(t)*rr,n)'; m=length(t); x=dup(cos(s),m)*r; y=dup(sin(s),m)*r; z=dup(sin(t)*rr,n)'; view([4,1.5,0.3,0.3]); X=x_(x+1.3)_(x-1.3); Y=y_-z_-z; Z=z_y_y; solid(X,Y,Z,[m,2*m]); title("Disconnnected surfaces"); warten(); return 0; endfunction function startdemo {x,y}=field(-1:0.1:1,-1:0.1:1); z=x*x+y*y; mesh(z); warten(); return 0; endfunction function knot() t=linspace(0,2*pi,200); x=sin(t)+2*sin(2*t); y=cos(t)-2*cos(2*t); z=sin(3*t); xv=cos(t)+4*cos(2*t); yv=-sin(t)+4*sin(2*t); zv=3*cos(3*t); n=sqrt(xv*xv+yv*yv+zv*zv); xv=xv/n; yv=yv/n; zv=zv/n; xv1=1-xv*xv; yv1=-xv*yv; zv1=-xv*zv; n=sqrt(xv1*xv1+yv1*yv1+zv1*zv1); xv1=xv1/n; yv1=yv1/n; zv1=zv1/n; xv2=yv*zv1-yv1*zv; yv2=-xv*zv1+xv1*zv; zv2=xv*yv1-xv1*yv; n=sqrt(xv2*xv2+yv2*yv2+zv2*zv2); xv2=xv2/n; yv2=yv2/n; zv2=zv2/n; p=linspace(0,2*pi,20)'; r=0.3; X=x+r*(cos(p)*xv1+sin(p)*xv2); Y=y+r*(cos(p)*yv1+sin(p)*yv2); Z=z+r*(cos(p)*zv1+sin(p)*zv2); view(5,2,0.5,0.7); framedsolidhue(X,Y,Z,cos(p)*xv1+sin(p)*xv2,2,1); title("A trefoil knot"); warten(); return 0; endfunction function demo3d startdemo(); torus(); tube(); minimal(0.1:0.1:2.5,0:pi()/20:2*pi()); spiral(); rings(); knot(); return 0; endfunction function g(x) return x^3+x^2/2-x endfunction function g1(x) return 3*x^2+x-1 endfunction function apple1 (z,z0) ## one iteration w=z0+z*z; return w endfunction function apple (z) ## compute 10 iterations w=z; loop 1 to 7; w=apple1(w,z); end: return w endfunction function julia (z,z0) ## compute 10 iterations w=z; loop 1 to 7; w=z0+w*w; end: return w endfunction function showapple (a) ## show the apple set in 3D {x,y}=field(linspace(a[1],a[2],50),linspace(a[3],a[4],50)); z=x+1i*y; w=apple(z); view(5,3,-0.75,0.7); twosides(0); wa=abs(w); wa=max(wa,1); l=log(wa); l=2*l/max(max(l)'); framedsolid(x,y,-l,1); return wa; endfunction function showjulia (z0,a) ## show the apple set in 3D {x,y}=field(linspace(a[1],a[2],50),linspace(a[3],a[4],50)); z=x+1i*y; w=julia(z,z0); view(5,3,-0.75,0.7); twosides(0); wa=abs(w); wa=max(wa,1); l=log(wa); l=2*l/max(max(l)'); framedsolid(x,y,-l,1); return wa; endfunction function showcontour(w,x) ## show the iterations clg; shrinkwindow(); wl=log(w); wl=wl/totalmax(wl); clg; setplot(x); density(wl*0.8+0.1); hold on; xplot(); contour(wl,linspace(epsilon,1,10)); t=linspace(0,2*pi,500); color(2); plot(0.5*cos(t)*(1-cos(t))+0.25,0.5*sin(t)*(1-cos(t))); color(1); hold off; title("Mandelbrot set Conchoide"); warten(); r=0; z=1+1i; xh=[-3,3,-3,3]; setplot(xh); wa=showjulia(z,xh); title(printf("Julia set at (%g,",re(z))|printf("%g)",im(z))); warten(); clg; wa=log(wa); wa=wa/totalmax(wa); density(wa*0.8+0.1); hold on; xplot(); contour(wa,linspace(epsilon,1,10)); t=sqrt(1-4*z); color(3); mark([(1-t)/2,(1+t)/2]); color(1); hold off; title("The Fixpoints"); warten(); hold off; return r endfunction function appletest() x=[-2,0.5,-1.25,1.25]; w=showapple(x); title("Potential of Mandelbrot set"); warten(); showcontour(w,x); return w; endfunction function bezier (p,t) ## Evaluate sum p_i B_{i,n}(t) the easy and direct way. ## p must be a k x n+1 matrix (n+1) points, dimension k. n=cols(p)-1; i=nonzeros(t~=1); if (cols(i)>0); t[i]=0.999; endif; T=dup(t/(1-t),n)'; b=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b=cumprod(b); if (cols(i)>0); b[i]=zeros(1,n)|1; endif; return p.b'; endfunction function bezier2 (p,t) ## Evaluate sum p_i B_{i,n}(t) the complicated way. ## p_i is a k x n+1 matrix (n+1) points, dimension k. n=cols(p)-1; {T,N}=field(t,0:n); b=bin(n,N)*T^N*(1-T)^(n-N); return p.b; endfunction function bezier3d (p) ## Shows a 3D Bezier curve and its polygon t=linspace(0,1,300); s=bezier(p,t); f=getframe(p[1],p[2],p[3]); h=holding(1); if !h; clg; endif; co=color(2); frame1(f); color(1); wire(p[1],p[2],p[3]); color(3); wire(s[1],s[2],s[3]); color(2); frame2(f); color(co); holding(h); title("3D Bezier curve"); warten(); return ""; endfunction function bezier3dtest (alpha=0.5,beta=0.5) ## Show a Beziercurve of dimension 3 p=[-1,-1,-1;0,-1,-1;1,0,0;1,1,0;0,1,1;-1,1,0]'; view(3,1.5,alpha,beta); bezier3d(p); return ""; endfunction function nurbs (p,b,t) ## Cumpute a rational Bezier curve with control points p ## and weights b. K=rows(p); pp=(p*dup(b,K))_b; s=bezier(pp,t); return s[1:K]/(dup(s[K+1],K)); endfunction function nurbstest ## Show some NURBS. p=[-1,0;0,1;1,0]'; b=[1,1,1]; bb=2^(-5:5); setplot(-1,1,0,2); clg; frame(); xplot(); hold on; linewidth(2); plot(p[1],p[2]); linewidth(1); hold off; t=linspace(0,1,300); loop 1 to cols(bb); b[2]=bb[#]; s=nurbs(p,b,t); hold on; plot(s[1],s[2]); hold off; end; title("Quadratic NURBS"); warten(); return ""; endfunction function beziersurface (x,y,z,n=20) ## Compute a Bezier surface. Return {bx,by,bz}. t=linspace(0,1,n); n=rows(x)-1; i=nonzeros(t~=1); if (cols(i)>0); t[i]=0.999; endif; T=dup(t/(1-t),n)'; b1=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b1=cumprod(b1); if (cols(i)>0); b1[i]=zeros(1,n)|1; endif; n=cols(x)-1; i=nonzeros(t~=1); T=dup(t/(1-t),n)'; b2=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b2=cumprod(b2); if (cols(i)>0); b2[i]=zeros(1,n)|1; endif; return {b1.x.b2',b1.y.b2',b1.z.b2'}; endfunction function beziersurftest ## Show a Bezier surface {x,y}=field(-1:0.5:1,-1:0.5:1); z=2*exp(-(0.5*x*x+y*y))-1; view(2.5,1.5,0.5,0.5); {xb,yb,zb}=beziersurface(x,y,z); wi=wirecolor(1); linewidth(3); wire(x[3:5,1:5],y[3:5,1:5],z[3:5,1:5]); hold on; linewidth(1); wirecolor(wi); solid(xb,yb,zb); wi=wirecolor(1); linewidth(3); wire(x[1:3,1:5],y[1:3,1:5],z[1:3,1:5]); hold on; linewidth(1); wirecolor(wi); hold off; title("A Bezier surface"); warten(); return ""; endfunction function c1test ## Show how two bezier surfaces can be joined. x1=dup(-0.5:0.25:0.5,5); y1=dup([0,0,0,0,1],5); z1=dup(1:0.25:2,5)'; {xb1,yb1,zb1}=beziersurface(x1,y1,z1,10); x2=dup(-0.5:0.25:0.5,5); y2=(-ones(4,5))_[0,0,0,0,0]; z2=dup(-1:0.25:0,5)'; {xb2,yb2,zb2}=beziersurface(x2,y2,z2,10); x=zeros(5,5); y=x; z=x; x[1]=x1[1]; x[2]=x[1]-(x1[2]-x1[1]); x[5]=x2[5]; x[4]=x[5]+(x2[5]-x2[4]); x[3]=(x[4]+x[2])/2; y[1]=y1[1]; y[2]=y[1]-(y1[2]-y1[1]); y[5]=y2[5]; y[4]=y[5]+(y2[5]-y2[4]); y[3]=(y[4]+y[2])/2; z[1]=z1[1]; z[2]=z[1]-(z1[2]-z1[1]); z[5]=z2[5]; z[4]=z[5]+(z2[5]-z2[4]); z[3]=(z[4]+z[2])/2; {xb,yb,zb}=beziersurface(x,y,z,10); view(4,2,0.5,0.5); solid(xb1,yb1,zb1-1); hold on; solid(xb,yb,zb-1); solid(xb2,yb2,zb2-1); hold off; title("C1 continuity of Bezier surfaces"); warten(); wi=wirecolor(1); linewidth(1); wire(x,y,z-1); linewidth(3); hold on; wire(x1,y1,z1-1); wire(x2,y2,z2-1); hold off; wirecolor(wi); linewidth(1); title("C1 continuity of the Bezier grid"); warten(); return ""; endfunction function feigen (x,l) return l*x*(1-x); endfunction function feigendemo l=3:0.005:4; x=0.5*ones(size(l)); h=niterate("feigen",x,200;l); h=h[100:200]; style("m."); xmark(l,h); title("Feigenbaum Diagram"); warten(); return "" endfunction function beziertest bezier3dtest(); nurbstest(); beziersurftest(); c1test(); return "" endfunction function force (x,y) ## simple force of a single body at (0,0) r=x*x+y*y; r=r*sqrt(r); return {-x/r,-y/r} endfunction function dgl (t,p) {fx,fy}=force(p{1},p{2}); return [p{3},p{4},fx,fy]; endfunction function showcurve ## solves the one body problem. t=linspace(0,4,100); clg; setplot(-1.5,1.5,-1.5,1.5); xplot(); hold on; s=heun("dgl",t,[1,0,0,1]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.9]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.8]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.7]); plot(s[1],s[2]); hold off; title("Planet orbits"); warten(); return ""; endfunction function showpotential ## demonstrates the Newton potential and a kepler elipse drawn on it. {x,y}=field(linspace(-0.9,1.1,23),linspace(-1,1,23)); p=max((-1)/sqrt(x*x+y*y),-10)+0.5; view(3,4,0.5,1.2); solid(x,y,p); hold on; t=linspace(0,3.5,150); s=heun("dgl",t,[1,0,0,0.7]); ps=-1/sqrt(s[1]*s[1]+s[2]*s[2])+0.5; color(2); wire(s[1],s[2],ps); hold off; title("Orbit projected to gravity potential"); warten(); return 0; endfunction function keplerdemo showcurve(); showpotential(); return "" endfunction function flower (x=0,y=0,a=90,l=1,dl=0.8,n=5,d=10,t=0.98) r=random([1,5]); if n==0 || r[5]>t; style("m<>"); mark([x],[y]); else a1=a-(1+r[1]/2)*d; l1=l*(1+r[2]/2); x1=x+cos(a1*pi/180)*l1; y1=y+sin(a1*pi/180)*l1; plot([x,x1],[y,y1]); flower(x1,y1,a1,dl*l,dl,n-1,d); a1=a+(1+r[3]/2)*d; l1=l*(1+r[4]/2); x1=x+cos(a1*pi/180)*l1; y1=y+sin(a1*pi/180)*l1; plot([x,x1],[y,y1]); flower(x1,y1,a1,dl*l,dl,n-1,d); endif; return ""; endfunction function flowerdemo() clg; setplot(-3,3,-1,5); hold on; flower(); hold off; title("A fractal Flower"); warten(); return ""; endfunction function lorenz (t,x) return [-3*(x[1]-x[2]),-x[1]*x[3]+26.5*x[1]-x[2],x[1]*x[2]-x[3]] endfunction function lorenza t=0:0.02:40; s=adaptiverunge("lorenz",t,[0,0.1,0],0.001); v=view(4,2,0.5,0.5); framedwire(s[1]/20,s[2]/20,s[3]/20-1); title("The Lorenz attractor"); view(v); warten(); return "" endfunction function J(z) return (z+1/z)/2 endfunction function invJ(z) w=sqrt(z^2-1); return z+(re(z)>0)*w-(re(z)<=0)*w; endfunction function K(z,a) return (z+a)/(1+conj(a)*z) endfunction function H(z) return (1i*z+1)/(1i+z) endfunction function invH(z) return (1i*z-1)/(1i-z) endfunction function L(z,a) return (a/conj(a))*(conj(a)*z-1)/(a-z) endfunction function complexdemo I=1i; r=exp(linspace(0.000001,1,20)); phi=linspace(0.0000001,2*pi,120)'; z=r*exp(phi*I); setplot(-4,4,-4,4); cplot(z); xplot(); title("Outside of circle mapped to ..."); warten(); setplot(-1.5,1.5,-1.5,1.5); cplot(J(z)); xplot(); title("Outside of interval"); warten(); setplot(-2,2,-2,2); cplot(J(I*invJ(J(z)*sqrt(2)))); xplot(); title("Outside of cross"); warten(); setplot(-1,1,-1,1); cplot(K(1/z,0.5)); xplot(); title("Inside to inside"); warten(); setplot(-3,3,0,6); cplot(H(z)); xplot(); title("Outside to upper half plane"); warten(20); setplot(-6,6,-6,6); cplot(L(z,5)); xplot(); title("5 to infinity"); warten(); setplot(-2,2,-1.5,2.5); cplot(invH(J(L(z,-invJ(1i))))); xplot(); title("Outside of half circle"); warten(); return ""; endfunction function autodemo (d=10) global demodelay; demodelay=d; repeat grafikdemo(); demo3d(); mindemo(); grafiktutor(); dgldemo(); appletest(); beziertest(); keplerdemo(); feigendemo(); flowerdemo(); lorenza(); complexdemo(); end; endfunction autodemo(5); euler-1.61.0/progs/polymult.e0000644000175000001440000000042607417015640014747 0ustar ericuserscomment Multiplies two complex polynomials with FFT very fast endcomment function polymultfft (p,q) n=cols(p)-1; m=cols(q)-1; nm=n*m+1; k=2^(floor(log(nm)/log(2))+1); p1=fft(p|zeros(1,k-(n+1))); q1=fft(q|zeros(1,k-(m+1))); res=ifft(p1*q1); return res[1:nm]; endfunction euler-1.61.0/progs/sound.e0000644000175000001440000000705107417015640014213 0ustar ericuserscomment Save and load WAV sound files. Analyze frequencies. {w,rate}=loadwave(filename); loads a WAV file. w=loadwave(filename); loads a WAV file. r is saved to defaultrate. savewave(filename,v[,rate,bits]); saves a WAV file. analyze(v[,fmin,fmax,rate,points]); plots the frequencies of v mapsound(w,[,dt,fmin,fmax,simpl,rate]); show the sound history soundsec(n[,rate]); generates t values for n seconds. Default sample rate is 22050 or the sample rate of the last read WAV file. endcomment defaultrate=22050; function soundsec (n,rate=0) ## Return n seconds of t parameter. global defaultrate; if rate==0; rate=defaultrate; endif; return 0:2*pi/rate:2*n*pi; endfunction function savewave (filename,v,rate=0,bits=16) ## Save a vector of sound data in WAV format. ## Return the length of the sample in seconds. ## If rate=0, the default sampling rate is taken. ## bits may be 8 or 16. global defaultrate; if rate==0; rate=defaultrate; endif; open(filename,"wb"); write("RIFF"); if bits==8; n=cols(v); putlongword(n+37); write("WAVEfmt "); putlongword(16); putword(1); putword(1); putlongword(rate); putlongword(rate); putword(1); putword(8); write("data"); putlongword(n); m=max(abs(v)); vv=v/m*64+128; putuchar(vv); putchar(0); elseif bits==16; n=cols(v); putlongword(2*n+36); write("WAVEfmt "); putlongword(16); putword(1); putword(1); putlongword(rate); putlongword(2*rate); putword(2); putword(16); write("data"); putlongword(2*n); m=max(abs(v)); vv=v/m*64*256; putword(vv); else error("Bits must be 8 or 16"); endif close(); return cols(v)/rate; endfunction function loadwave (filename) ## Read a WAV file. ## The sample rate is stored to defaultrate. global defaultrate; open(filename,"rb"); if getstring(4)<>"RIFF"; error("No Wave file!"); endif; getlongword(); .. This is the total file length minus 8 if getstring(8)<>"WAVEfmt "; error("No Wave file!"); endif; offset=getlongword(); .. ??? Is always 16, sometimes 18 getword(); .. ??? Is always 1. if (getword()<>1); error("Stereo sample!"); endif; rate=getlongword(); getlongword(); byte=getword(); bits=getword(); if offset>16; getuchar(offset-16); endif; if getstring(4)<>"data"; error("No Wave file!"); endif; if byte==1; w=getuchar(getlongword()); elseif byte==2; w=getword(getlongword()/2); else error("Not 8 or 16 bit!"); endif; if cols(w)>0; w=w-sum(w)/cols(w); w=w/max(abs(w)); endif; close(); defaultrate=rate; return w; endfunction function analyze (w,fmin=10,fmax=1500,rate=0,points=8192) ## Make a frequency plot of the signal w with sampling rate. ## The data must be at least points long. ## The maximal frequency plotted will be fmax, the minimal fmin. global defaultrate; if rate==0; rate=defaultrate; endif; v=w[1:points]; f=abs(fft(v)); i=fmin/rate*points:fmax/rate*points; setplot(fmin,fmax,0,max(f[i])); fr=i/points*rate; xplot(fr,f[i]); return ""; endfunction function mapsound (w,dt=0.1,fmin=100,fmax=1500,simpl=1,rate=0) ## Plots a sound map for a sound. ## It does FFT at time increments dt. ## rate is the sampling rate. ## simpl points are collected for speed reasons. n=cols(w); global defaultrate; if rate==0; rate=defaultrate; endif; dp=dt*rate; points=2^floor(log(dp)/log(2)); ind=fmin/rate*points/simpl:fmax/rate*points/simpl; f=abs(fft(w[1:points])); f=sum(redim(f,points/simpl,simpl))'; M=f[ind]; i=1; repeat i=i+dp; if i+points>n; break; endif; f=abs(fft(w[i:i+points-1])); f=sum(redim(f,points/simpl,simpl))'; M=M_f[ind]; end; setplot(fmin,fmax,0,n/rate); density(-M,0.99); xplot(); return "" endfunction euler-1.61.0/progs/program.en0000644000175000001440000000506307417015640014711 0ustar ericusers% Let us introduce you into the programming language of % EULER. % % The programming style is rather straightforward and classical. % We first make a simple example. >function f(x) $return x^3+x^2-x $endfunction % The function may be used in any expression, just like % the built-in functions. >f(5)+f(f(3)) % This function will work for vectors x. >f(1:10) % A function can call itself. >function fakult (n) $if n<=0; return 1; endif; $return n*fakult(n-1) $endfunction % This defines the faculty function. >fakult(5) % We can achieve the same result with a loop. >function fakult1 (n) $x=1; loop 2 to n; x=x*#; end; $return x; $endfunction % This should be a bit faster. >fakult1(5) % To get the result for a vector input, you must use the map function. >map("fakult1",5:10) % You may provide default values for parameters. >function pnorm (v,p=0) $if p>=1; return sum(abs(v)^p)^(1/p); $else return max(abs(v)) $endif; $endfunction % If p=0 (the default), norm computes the maximum norm. >v=[2,3,-2]; pnorm(v) % Or the L_2 norm for p=2. >pnorm(v,2) % We try to evaluate the Chebyshev polynomial of degree % n at x, using the recursive formula T(n,x)=2*x*T(n-1,x)-T(n-2,x). % % We could use a recursive definition, but is far more % effective to make it in a loop. >function t(n,x) $if n==0; return ones(size(x)); endif; $if n==1; return x; endif; $a=1; b=x; $loop 2 to n; $c=2*x*b-a; $a=b; b=c; $end; $return b $endfunction % You will wonder, why we return ones(size(x)) instead % of simply 1. This is a principle: All functions in EULER % should work for vector input. So the function must return % a vector. However, our function does only work for non-vector % n. This is for simplicity and effectiveness. >x=-1:0.01:1; xplot(x,t(6,x)); title("t(6,x)"); wait(20); % By the way, it is surprising how accurate the formula % is. This is due to an error cancellation. >longformat; t(60,0.9), cos(60*acos(0.9)), % Let us try to get the Chebyshev polynomial itself. >function T(n) $if n==0; return [1]; endif; $if n==1; return [0,1]; endif; $a=[1]; b=[0,1]; $loop 2 to n; $c=[0,2*b]-[a,0,0]; $a=b; b=c; $end; $return b $endfunction % T(n) returns now the coefficients of the n-th Chebyshev % polynomial. >T(4) % We can evaluate it with polyval. >xplot(x,polyval(T(10),x)); title("T(10)"); % However, this is not an accurate procedure for large % n. (Compare with the result above). >p=T(60); polyval(p,0.9) % Though it is not efficient either, we can use an accurate % solver for the evaluation of this polynomial. We see % that the reason of the inaccuracy is due to the Horner % scheme. >xpolyval(p,0.9) > > euler-1.61.0/progs/electricity.en0000644000175000001440000000123407521223327015555 0ustar ericusers>load util;load electricity % spectrum of a 100 Hz square wave signal. Extra parameters f and 5 % needed by sqrwave can be passed added to the list of parameters of % plotFFT. >f=100;T=1/f;plotFFT("sqrwave",10*T,256,f,5); % spectrum of a 1 kHz sinusoidal signal 1 kHz modulated by a 10 kHz carrier. % plotFFT returns the sampling frequency. >f1=10e3;f2=1e3;plotFFT("5*sin(2*pi*f1*x)*(1+0.5*sin(2*pi*f2*x))",10/f2) % a bode diagram >bode("1/(1+j*x)",0.1,10);title("low pass filter"); % a plot to simulate an oscilloscope (autorange) >f=100;T=1/f;t=0:T/100:T;v1=5*sin(2*pi*f*t);v2=12*sin(2*pi*f*t-pi/3); >shrinkwindow();scope(t,v1,v2); % even in XY... >scope(,v1,v2); > euler-1.61.0/progs/mandog.e0000644000175000001440000000135507417015640014331 0ustar ericusers.. Hundekurve function man(t) ## return t|-ones(size(t)); return cos(t)|sin(t); endfunction function dgl (t,y) delta=man(t)-y; norm=sqrt(sum(delta*delta)); return delta/norm; endfunction function mandog (t) ## Compute the dog curve at time t starting from 0. ## The dog starts in 0 and moves with speed 1. ## The mans movement is returned from function man return heun("dgl",t,[0,0]); endfunction function show (endtime) t=linspace(0,endtime,100); y=heun("dgl",t,[0,0]); m=man(t')'; xplot(y[1]_m[1],y[2]_m[2]); title("Dog and Man"); wait(180); xplot(y[1]-m[1],y[2]-m[2]); title("Difference"); wait(180); n=length(y[1]); d=sqrt((y[1,n]-m[1,n])^2+(y[2,n]-m[2,n])^2); "Last difference : ", d, return plot(); endfunction show(3); euler-1.61.0/progs/eval.en0000644000175000001440000000577007417015640014176 0ustar ericusers% In this notebook we will discuss the way EULER evaluates % expressions for matrix and vector input. % % First of all, each functions spreads over all elements % of a vector. >shortformat; sqrt(1:4) % The same for matrix parameters. >sqrt([1,2;3,4]) % If you program an own function, you will automatically % get the same behavior, unless the function contains cases. >function f(x) $return x^3-x $endfunction >f([0:0.1:1]) % By the way 0:0.1:1 does not end exactly at 1 by numerical % reasons. We can use "linspace" for better results. >f(linspace(0,1,10)) % If the function contains cases, you run into troubles. >function g1(x) $if x>0; return x^3; else return -(x^3); endif; $endfunction % This works for scalar input, of course. >g1(-1) % But it yields the wrong result for vector input, since % the if is evaluated only once for the complete vector. >g1(-1:0.5:1) % In this case, there is a simple remedy. >function g2(x) $return sign(x)*x^3; $endfunction >g2(-1:0.5:1) % The following trick works for many functions. It evaluates % both branches for all elements however. >function g3(x) $return (x>0)*x^3+(x<=0)*(-(x^3)); $endfunction >g3(-1:0.5:1) % If the function is really complicated, you need the map function. % This function maps another function on all elements of the input % matrices. >function g4(x) $return map("g3",x); $endfunction % Then it will work for vectors. >g4(-1:0.5:1) % And for matrices. >g4([0,1;2,3]) % For functions of two variables, we generate a grid of % values. The basic method is to use a column and a row % vector. This produces a matrix a[i,j]=v[i]*w[j]. >[2;3]*[4,5] % Here is another example, using the < operator. This time % the first vector is the row vector. >i=1:3; ix=linspace(-1,1,10); y=x'; mesh(x*y^2+y*x^2); wait(20); % Note, that even the following examples work. x*y is a % matrix and x is a vector. But still everything is evaluated % as expected. >mesh(x*y+x+y); wait(20); % Here is another method, which produces matrices first, % and then apllies the operators. >{X,Y}=field(x,y'); mesh(X*Y+X+Y); wait(20); % The following evaluates the sum of sin(n*x)/n for n=1..20. % The sum function operates on the rows of a matrix, so % we have to transpose a little bit. >x=linspace(-10,10,300); n=(1:20)'; xplot(x,sum((sin(n*x)/n)')'); wait(20); % If we write a function of two arguments with cases, we % could use the old trick: Multiply the result by the condition. >function hat (x,y) $r=x^2+y^2; return (r<1)*exp(-1/(1-r^2)); $endfunction % The function will work OK, unless r is accidently 1. % This would cause a math error. EULER would catch this % on most machines. But with 23 grid points, this will % never happen. >x=linspace(-2,2,23); y=x'; mesh(hat(x,y)); wait(20); % If we want to avoid this, we have to use the map function. >function hat1 (x,y) $r=x^2+y^2; $if r<0.99999; return exp(-1/(1-r^2)); else; return 0; endif; $endfunction >function hat (x,y) $return map("hat1",x,y); $endfunction >x=linspace(-2,2,20); y=x'; mesh(hat(x,y)); wait(20); > euler-1.61.0/progs/games.e0000644000175000001440000000731207417015640014157 0ustar ericuserscomment Optimization examples (two person games). gambling, scissors, poker. game(A), computes an optimal strategy for the game with matrix A. endcomment function opti (A,b,z) ## Minimizes z.x' with contraints A.x'>=b and x'>=0. ## Returns x. {x,f}=simplex(-A,-b,z)'; if f!=0; error("Simplex failed!"); endif; return x; endfunction function game (A) ## Maximizes G such that A'.q>=G, sum q_i = 1, q_i>=0. ## Returns {q,G}. m=max(max(A)'); B=A'-m; si=size(B); M=(B|ones(si[1],1))_(ones(1,si[2])|0)_(-1*ones(1,si[2])|0); r=zeros(si[1],1)_1_-1; z=zeros(1,si[2])|1; {q,K}=opti(M,r,z); return {q[1:si[2]],m-q[si[2]+1]}; endfunction function gambling (n=2) ## Computes an optimal strategy for the following game ## player A and B take 0 to n stones each. ## A claims a number and B another, ## The number, which is closer to the sum of the stones, wins. ## The win is the stones of the opponent plus 1. eps=setepsilon(1e-5); m=2*n+1; A=zeros((n+1)*m,(n+1)*(m-1)); for i=0 to n; for ik=0 to m-1; for j=0 to n; for jk=1 to m-1; if i+j==ik; A[i*m+ik+1,j*(m-1)+jk]=j+1; else if (i+j>ik && jk<=ik) || (i+jik); A[i*m+ik+1,j*(m-1)+jk]=j+1; else A[i*m+ik+1,j*(m-1)+jk]=-i-1; endif; endif; end; end; end; end; {q,G}=game(A); "Win for A : "|printf("%10.5f",G), for i=0 to n; for ik=0 to m-1; if q[i*m+ik+1]~=0; else printf("%7.5f : Take ",q[i*m+ik+1])| .. printf("%2.0f, say ",i)|printf("%2.0f",ik), endif; end; end; {p,G}=game(-A'); "Win for B : "|printf("%10.5f",G), for j=0 to n; printf("Take : %2.0f",j), for jk=1 to m-1; if p[j*(m-1)+jk]~=0; else printf("%7.5f : say less at ",p[j*(m-1)+jk])|.. printf("%2.0f or more.",jk), endif; end; end; setepsilon(eps); return ""; endfunction function scissors ## Computes the optimal strategy for the following game. ## A and B have a secret choice from scissors, paper, well or stone. ## scissors wins against paper. ## paper wins against well and stone. ## well wins against scissors and stone. ## stone wins againts scissors. q=game([0,1,-1,-1;-1,0,1,1;1,-1,0,1;1,-1,-1,0]); "Choose with probability", "scissors : ", q[1], "paper : ", q[2], "well : ", q[3], "stone : ", q[4], return q; endfunction function poker (w=5,e=5) ## Solves a primitive poker game. ## A and B get a card valued from 1 to w. ## A and B place 1. ## A places e or passes. B can pass or hold. A=zeros(w,w); for i=1 to w; ## Setze bei Karte i bis w for j=1 to w; ## Halte bei Karte j bis w if j<=i; A[i,j]=(w-i+1)*(j-1)+(e+1)*(w-i+1)*(i-j)-w*(i-1); else A[i,j]=(w-i+1)*(j-1)-(e+1)*(w-j+1)*(j-i)-w*(i-1); endif; end; end; A=A/(w*w); {p,G}=game(A); "Win for A : "|printf("%10.5f",G), "Strategy for A:" for i=1 to w; if !(p[i]~=0); printf("%7.5f : ",p[i])|printf("Place from %2.0f to ",i)|.. printf("%2.0f",w), endif; end; {q,G}=game(-A'); "Win for B : "|printf("%10.5f",G), "Strategy for B:" for i=1 to w; if !(q[i]~=0); printf("%7.5f : ",q[i])|printf("Hold from %2.0f to ",i)|.. printf("%2.0f",w), endif; end; return {p,q}; endfunction function simulhelp (w,a,k1,b,k2) return -(a=k1)*((b=k2)*(w+1)*((a>b)-(a=pa) * (rb=pb) * simulhelp(w,a,k1,b,k4) + .. (ra>=pa) * (rb>=pb) * simulhelp(w,a,k2,b,k4)), return win endfunction euler-1.61.0/progs/deutsch.en0000644000175000001440000001026407417015640014700 0ustar ericusers% Hallo! % % Da offensichtlich viele deutschsprachige Benutzer von % EULER existieren, die nicht genug Englisch beherrschen, % um die Hilfe zu verstehen, will ich hier versuchen, eine % kurze Einführung in Deutsch zu geben. % % Leider lohnt es sich nicht, die Hilfetexte zu übersetzen. % Aber vielleicht findet sich da jemand? % % Führen Sie die folgenden Kommandos Schritt für Schritt % aus. >(3+4)*(5+6)/3 % Neben solchen trivialen Rechnungen, bei denen die üblichen % Regeln beacthtet werden, kann EULER die gängigen mathematischen % Funktionen berechnen. >exp(log(asin(sin(1.2)))) % Natürlich kann EULER auch Variablen verwenden. >a=sin(0.1); b=cos(0.1); a^2+b^2 % Bei Variablennamen werden Groá- und Kleinbuchstaben unterschieden, % und es sind alle Kombinationen aus Buchstaben und Zahlen % zulässig. >S1=25; alpha=3; alpha*S1 % Auch komplexe Rechnungen sind möglich. >I*I % EULER kann Funktionen mit komplexen Argumenten berechnen. >z=2+3i; sin(z^2+z) % Ein anderer Datentyp ist das Intervall. EULER kann mit % Intervallen rechnen. Das Ergebnis ist ein Intervall, % das alle möglichen Ergebnisse einschließt. >A=~-1,2~; A*A % ~-1,2~*~-1,2~ hat als kleinstmögliches Ergebnis -2=-1*2 % und als größtes Ergebnis 4=2*2. Dies unterscheidet sich % von ~-1,2~ zum Quadrat. >A^2 % Falls ein Intervall in einer Operation vorkommt, ist % das Ergebnis ein Intervall. >~1,1~/3*3 % Diese Datentypen kann EULER zu Vektoren und Matrizen % kombinieren. >[1,2,3] >[1,2;3,4] % Oder komplexe Matrizen. >[1,1+1i;3i,2] % Es gibt auch Matrizen von Intervallen. >[~1,2~,4,5,~6~] % Das Matrixprodukt wird mit . ausgeführt. >A=[1,2;3,4]; A.A % Dagegen werden Operatoren wie * gliedweise ausgeführt. >v=[1,2,3,4]; v*v % Damit lassen sich leicht Funktionstafeln erstellen. Zunächst % erstellen wir einen Vektor t=-1, -0.99, ..., 0.99, 1. % Danach werten wir t^3-t in diesen Punkten aus. Das Ergebnis % wird mit ; unterdrückt. >t=-1:0.01:1; s=t^3-t; % Aber wir können es plotten. >xplot(t,s); wait(20); % fplot macht dasselbe. Wir müssen nur einen Ausdruck in % x eingeben. >fplot("x^3-x",-1,1); wait(20); % Es existieren auch Funktionen, die aus Vektoren Zahlen % machen, wie etwa die Summe. >sum(1:1000) % Man kann sehr leicht über 1/k^2 summieren. >sum(1/(1:1000)^2) % Der korrekte Wert für n gegen unendlich ist Pi^2/6. >pi^2/6 % Wir erzeugen ein Bild der Summe 1/k^2 für k=1,...,n mit % wachsendem n. % % cumsum erzeugt die kumululative Summe eines Vektors. >xplot(cumsum(1/(1:500)^2)); wait(20); % Dasselbe für die Multiplikation. Dies ergibt die Fakultäten. >cumprod(1:10) % Z.B. läßt sich die Wachstumsordnung von n! überprüfen. >n=1:100; xplot(cumprod(n)/((n/E)^(n+1)/sqrt(n))); wait(20); % Analog lassen sich Tafeln von Funktionen mit zwei Variablen % erzeugen. Dazu benötigt man zwei Tafeln für die x-, bzw. % y-Werte einer Matrix von Punkten. Diese erzeugt man mit % field. Die Funktion field gibt zwei Werte zurück, die % an x und y zugewiesen werden. >l=-1:0.1:1; {x,y}=field(l,l); mesh(x^2+y^2); wait(20); % Es geht aber auch einfacher mit f3dplot. >f3dplot("x^2+y^3"); wait(20); % EULER beherrscht auch lineare Algebra. Wir lösen z.B. % ein Gleichungssystem. >A=[1,2;3,4]; b=[3;7]; x=A\b >A.x % Dies funktioniert auch komplexe Systeme oder Intervallsysteme. >A=[1i,1+1i;2,3+3i]; fracformat; B=inv(A), shortformat; % Bis auf Rundungsfehler berechnet man so die inverse Matrix. >B.A % EULER hat eine eingebaute Programmiersprache, die eine % Art fortschrittlicher Basic-Dialekt ist. % % Jede Funktion beginnt mit function name(parameter) und % endet mit endfunction. >function f(x) $return sin(x)*exp(-x) $endfunction % Man kann nun den Funktionsnamen an verschiedene Funtionen % übergeben. >fplot("f",0,2*pi); wait(20); % Allerdings kann man immer auch einen Ausdruck in x eingeben. >fplot("sin(x)*exp(-x)",0,2*pi); wait(20); % Die Nullstelle bei 3 ist natürlich pi. Wir berechnen % sie mit dem Bisektionsverfahren. >bisect("f",3,4) % Oder mit dem schnelleren Sekantenverfahren. >secant("f",3,4) % Mit dem Rombergverfahren läßt sich das Integral numerisch % berechnen. >romberg("f",0,pi) % Dies sollte nur eine Einführung in EULER gewesen sein. % Für weitere Information starten Sie bitte die Demo (mit % >load "demo") oder laden Sie eines der mitgelieferten % Notebooks. > > euler-1.61.0/progs/fmin.en0000644000175000001440000000151507430524564014176 0ustar ericusers% We demonstrate minimization of a function in two variables. % % First we define a rather complicate function. >A=[1,2;3.1]; >function f(x) $global A; $return sin(x).A.(x-1)' $endfunction % Let us try a minimization. >mi=neldermin("f",[1,2]) -5.48095 1.49917 % Since the function is not a function of two variables, we must % define an intermediate function to plot. >function g(x,y) $return f([x,y]) $endfunction >color(1);fcd(''map("g",x,y)'',50,-10,10,-10,10); xplot(); wait(20); % We mark the found minimum and another local minimum around -5,-5. >markerstyle("x");hold; color(0); mark(mi[1],mi[2]); hold; wait(20); >mi=nelder("f",[-5,-5],1,epsilon) -4.94517 -4.81818 >hold; mark(mi[1],mi[2]); hold; wait(20); >mi=nelder("f",[8,-8],1,epsilon) 8.04959 -7.94387 >hold; mark(mi[1],mi[2]); hold; wait(20); > euler-1.61.0/progs/gauss.e0000644000175000001440000000355407417015640014211 0ustar ericuserscomment Gauss integration endcomment function legendre (n) p0=1; p1=[0,1]; loop 2 to n; p=((0|(2*#-1)*p1)-((#-1)*(p0|0|0)))/#; p0=p1; p1=p; end; return p1 endfunction function gaussparam (n) ## returns the knots and alphas of gauss integration at n points in ## [-1,1]. Returns {gaussz,gaussa}. p=legendre(n); z=sort(re(polysolve(p))); Z=dup(z,n)^dup((0:n-1)',n); a=Z\(2/(1:n)'*mod(1:n,2)'); return {z,a'} endfunction gaussz = [ .. -9.7390652851717172e-0001, -8.6506336668898451e-0001, -6.7940956829902441e-0001, -4.3339539412924719e-0001, -1.4887433898163121e-0001, 1.4887433898163121e-0001, 4.3339539412924719e-0001, 6.7940956829902440e-0001, 8.6506336668898451e-0001, 9.7390652851717172e-0001]; gaussa = [ .. 6.6671344308688139e-0002, 1.4945134915058059e-0001, 2.1908636251598205e-0001, 2.6926671930999635e-0001, 2.9552422471475288e-0001, 2.9552422471475287e-0001, 2.6926671930999635e-0001, 2.1908636251598205e-0001, 1.4945134915058059e-0001, 6.6671344308688137e-0002]; function gauss10 (ffunction,a,b) ## gauss10("f",a,b,...) ## evaluates the gauss integration with 10 knots an [a,b] ## ffunction may be an expression in x. global gaussa,gaussz; z=a+(gaussz+1)*(b-a)/2; if isfunction(ffunction) return sum(gaussa*ffunction(z,args()))*(b-a)/2; else return sum(gaussa*expreval(ffunction,z))*(b-a)/2; endif; endfunction function gauss (ffunction,a,b,n=1) ## gauss("f",a,b) gauss integration with 10 knots ## gauss("f",a,b,n,...) subdivision into n subintervals. ## a and b may be vectors. ## ffunction may be an expression in x. si=size(a,b); R=zeros(si); if n==1; loop 1 to prod(si); sum=0; sum=sum+gauss10(ffunction,a{#},b{#};args()); R{#}=sum; end; else; loop 1 to prod(si); h=linspace(a{#},b{#},n); sum=0; loop 1 to n; sum=sum+gauss10(ffunction,h{#},h{#+1};args()); end; R{#}=sum; end; endif; return R endfunction euler-1.61.0/progs/dea.en0000644000175000001440000000117107462557636014007 0ustar ericusers>load dea >Output=random(8,2); >Input=random(8,2); >graphDEA(Output,Input); >showDEA(Output,Input); >Output=[150,50;225,75;90,10;160,40;50,50;75,75;200,50; .. >350,100;400,90;250,300;350,350;350,400;275,375; .. >220,40;300,10;320,275;375,230;230,50;290,90;360,70]; >Input=[200,600;600,1200;200,200;600,300;500,200; .. >320,150;375,450;400,320;550,480;900,660;850,720;720,940; .. >900,850;250,370;115,250;600,590;550,710;200,280;450,410;415,575]; >solveAllDEA(Output,Input) >graphDEA(Output,Input,0); >solveAllDEA(Output,Input,1) >w1=solveAllDEA(Output,Input,0); >w2=solveAllDEA(Output,Input,1); >format(10,3); Output|Input|w1'|w2' > euler-1.61.0/progs/demo.e0000644000175000001440000010460410327072561014010 0ustar ericusers.. The Demo. Starts automatically. comment Demo loading. endcomment demodelay=180; reset(); function delay global demodelay; return demodelay endfunction function warten wait(delay()); return 0; endfunction function weiter "" "<< Press return to continue >>" warten(); cls; return 120; endfunction function taste "" "<< Please press return to see graphics >>", return warten(); endfunction function fisch ## plots a fish global Pi; t=0:3; ph=interp(t,[0.05,0.3,0.2,1.2]); pb=interp(t,[0.05,0.5,0.2,0.2]); phi=Pi-linspace(0,2*Pi,20); l=linspace(0,3,40); psin=dup(sin(phi),length(l)); pcos=dup(cos(phi),length(l)); lh=dup(interpval(t,ph,l),length(phi))'; lb=dup(interpval(t,pb,l),length(phi))'; x=pcos*lb; z=psin*lh; y=dup(l-1.5,length(phi))'; view(2.5,1.5,0.3,0.1); solid(x,y,z); title("A solid fish (return)"); warten(); huecolor(1); solidhue(x,y,z,-y,1); title("A shaded fish (return)"); warten(); return 0; endfunction function mindemo () "Next we find the local minima of sin(x*x) in [0,5]." "" "The first method is Brent's." ''fplot("sin(x*x)",0,5); title("sin(x*x) (return)"); weiter();'' ''brentmin("sin(x*x)",2), brentmin("sin(x*x)",3),'' brentmin("sin(x*x)",2), brentmin("sin(x*x)",3), ''brentmin("sin(x*x)",4), brentmin("sin(x*x)",5),'' brentmin("sin(x*x)",4), brentmin("sin(x*x)",5), taste(); fplot("sin(x*x)",0,5); title("sin(x*x) (return)"); warten(); cls; "" "The next method is the golden ratio method." ''fmax("sin(x*x)",0,2),'' fmax("sin(x*x)",0,2), "There is also a function finding all minima and maxima." ''{mi,ma}=fextrema("sin(x*x)",0,5); mi, ma,'' {mi,ma}=fextrema("sin(x*x)",0,5); mi, ma, weiter(); "Next we minimize a function of two variables." "" "Let us first plot the function." ''fcd("sin(x)*x+cos(y)*y",50,0,10,0,10); xplot(); weiter();'' taste(); fcd("sin(x)*x+cos(y)*y",50,0,10,0,10); xplot(); warten(); "" "Now we compute a minimum and mark it in the plot" "" ''mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,5]);'' ''color(10); hold on; mark(mi[1],mi[2]); hold off; color(1);'' taste(); mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,5]); color(10); hold on; mark(mi[1],mi[2]); hold off; color(1); warten(); ''mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,8]);'' taste(); mi=neldermin("sin(x[1])*x[1]+cos(x[2])*x[2]",[5,8]); color(10); hold on; mark(mi[1],mi[2]); hold off; color(1); warten(); cls; return ""; endfunction function grafikdemo ## grafikdemo shows the grafik capabilities of EULER fullwindow(); hold off; global Pi; cls "" "Demo of EULER's graphics." "" "These graphics have been programmed with a few lines." "Study the demo file for more information!" taste(); ## Abbildungen von R nach R t=-Pi:Pi/20:Pi; shrinkwindow(); setplot(-Pi,Pi,-2,2); linewidth(4); plot(t,sin(t)); linewidth(1); hold on; color(2); style("."); plot(t,cos(t)); color(3); style("--"); plot(t,(sin(t)+cos(t))/2); xgrid(-3:1:3,1); ygrid(-1:1,1); title("2D plots (return)"); color(1); style(""); fullwindow(); hold off; warten(); ## Abbildungen von R nach R^2 in vier Fenstern t=-Pi:Pi/50:Pi; window(10,textheight()*1.5,490,490); plot(sin(3*t)/3+cos(t),sin(3*t)/3+sin(t)); hold on; title("Parametric curves (return)"); window(510,textheight()*1.5,1010,490);frame(); plot(sin(2*t)/3+cos(t),sin(2*t)/3+sin(t)); window(10,510,490,1010);frame(); plot(sin(2*t),sin(3*t)); window(510,510,1010,1010);frame(); t=t+2*Pi; plot(cos(t)*log(t),sin(t)*log(t)); hold off; warten(); shrinkwindow(); ## Kosinus und Potenzreihen t=linspace(0,4*pi,500); s=(1-t^2/2); for i=4 to 30 step 2; s=s_(s[rows(s),:]+(-1)^(i/2)*t^i/fak(i)); end setplot(min(t),max(t),-max(t)/2,max(t)/2); xplot(t,s); hold on; linewidth(3); plot(t,cos(t)); linewidth(1); hold off; title("Cosine and its truncated series"); warten(); ## Bar plots r=normal(1,100); c=count(r+5,10); c=c/sum(c); setplot(-5,5,0,0.5); clg; b=barcolor(1); xplotbar(-5:4,0,1,c,"\/"); barcolor(b); t=linspace(-5,5,300); hold on;plot(t,exp(-t^2/2)/sqrt(2*pi));hold off; title("A statistical experiment"); style(""); warten(); ## x^2+y^3 als mesh und contour. fullwindow(); x=pi*(-1:0.1:1); y=x'; mesh(x*x+y*y*y); title("x^2+y^3 (return)"); warten(); contour(x*x+y*y*y,-30:5:30); title("Contour plot of this function (return)"); warten(); x=(-1:0.04:1)*pi; y=x'; huecolor(1); density(sin(2*x)*cos(2*y),1); title("Density plot of a function (return)"); warten(); huecolor(0); density(sin(2*x)*cos(2*y),1); title("The same in color (return)"); huecolor(1); warten(); ## e^-r cos(r) als Drahtmodell. x=pi*(-1:0.1:1); y=x'; r=x*x+y*y; f=exp(-r)*cos(r); view(2,1,0,0.5); ## [ Abstand, Zoom, Winkel rechts, Winkel hoch ] wire(x/Pi,y/Pi,f); title("Wire frame model (return)"); warten(); meshbar(f); title("Bar plot of this function (return)"); warten(); meshbar(-f); title("Negative bar plot (return)"); warten(); ## Der Fisch als solides Modell. fisch(); view(2,1,0.2,0.3); ## Eine complexe Abbildung w=z^1.3 shrinkwindow(); setplot(-1, 2, -0.5, 1.5); t=0:0.1:1; z=dup(t,length(t)); z=z+1i*z'; color(1); style("."); cplot(z); hold on; color(2); style(""); cplot(z^1.3); color(1); xgrid(0); ygrid(0); title("Complex numbers w=z^1.3"); hold off; warten(); "End" shrinkwindow; return 0 endfunction function normaldemo ## Einfuehrung in EULER global Pi; pi=Pi; shrinkwindow; cls "" " Welcome!" "" "EULER has been designed to ease numerical computation." "Most of the time one has a tiny problem, to tiny to use a compiler" "language." "" "Besides, one may want to play with intermediate results, see a" "graphical representation, or simply have readily available" "numerical functions." "" "All this can be done with EULER." "It is like using a numerical laboratory." weiter(); "But EULER is not a symbolic algebra program. It uses numbers with" "finite accuracy as supplied by the C compiler used. It is therefore" "faster than a symbolic program, like MATHEMATICA." "" "All commands are entered by the keyboard. Old commands can be" "recalled with cursor up or down. ESC interrupts a computation," "and HELP shows the graphics screen." weiter(); ## Eingabe von Matrizen "With EULER one can enter matrices like this:" "" ">x=[5,6,7]" x=[5,6,7], ">A=[1,2,3;5,6,7;8,9,0]" A=[1 2 3;5 6 7;8 9 0], "The comma may be omitted." "These matrices are stored on the variables x and A." weiter(); "All computing is done element for element." "" ">x*x" x*x, ">A+A" A+A, weiter(); ## Complexe Zahlen. "Complex numbers and complex computations." "" ">1+2i", 1+2i, ">c=[1i 3 4+5i]", c=[1i 3 4+5i], "" ">1i*1i", 1i*1i, ">exp(1i*pi/2)", exp(1i*pi/2), weiter(); ## Matrixprodukt. "The dot multiplies two matrices." "" ">A.x'" A.x' "Note, that x had to be transposed!" "" ">x", x, "" ">x'", x', "" ">x'.x" x'.x, weiter(); ## : "Generating vectors:" "" ">1:10", 1:10, ">-1:0.3:1", -1:0.3:1, weiter(); ">[1 2 3]|[4 5]", [1 2 3]|[4 5], ">[1 2 3]_[4 5 8]", [1 2 3]_[4 5 8], ">dup([1 2 3],4)", dup([1 2 3],4), weiter(); ## Funktionen. "Also all functions are applied to all elements of a matrix." "" ">sqrt([1,2,3,4])" sqrt([1,2,3,4]), "" "There are all the numerical functions." "See a list of all functions with >list." weiter(); "It is easy to generate a table for a function, and with" "the table, one can plot the function." "" ">t=0:pi/50:2*pi; s=sin(t); xplot(t,s);" t=0:pi/50:2*pi; s=sin(t); "plots the sine function in [0,2*Pi]", ''You could have used fplot("sin(x)",0,2*pi) with the same result'', taste(); shrinkwindow(); xplot(t,s); title("Please press return!"); warten(); cls; ## Intervalle. "You can enter intervals instead of real numbers." ">exp(~1.1,1.2~)", exp(~1.1,1.2~) "The result the interval of all exp(t), 1.1<=t<=1.2", "You can make verified computations:" ">x=~0.8~; 1+x+x^2/2+x^3/6+x^4/24+x^5/120+x^6/720*exp(~0~ || x),", x=~0.8~; 1+x+x^2/2+x^3/6+x^4/24+x^5/120+x^6/720*exp(~0~ || x), "This is a guaranteed inclusion of the exp with its series.", "|| computes the union of two intervals. Compare:" ">exp(x)", exp(x), weiter(); ## Untermatrizen. "Submatrices:" "" ">x=[11 12 13;21 22 23; 31 32 33]" x=[11 12 13;21 22 23; 31 32 33], ">x(1)" x(1), "One can write x[...] or x(...).", weiter(); ">x[1:2,2]", x[1:2,2], ">x[2:6,2:6]" x[2:6,2:6], ">x[:,3]", x[:,3], ">x[1,[2 2 1 3]]", x[1,[2 2 1 3]], weiter(); ## Numerische Integration. "An example:" "" ">sum(sin((1:100)/100))" sum(sin((1:100)/100)), "" "Let us integrate the sine in [0,pi] using the simpson method (but" "not the builtin functions). The exact value is 2." "You will get the correct result with the builtin Romberg method" ''>romberg("sin(x)",0,pi)'' romberg("sin(x)",0,pi) "However, we wish to demonstrate the vector arithmetic and do" "the Simpson method the hard way." ">t=0:pi/50:pi; n=length(t);", t=0:pi/50:pi; n=length(t); ">f=2*mod((1:n)+1,2)+2; f[1]=1; f[n]=1;", f=2*mod((1:n)+1,2)+2; f[1]=1; f[n]=1; ">longformat(); result=sum(sin(t)*f)/3*(t[2]-t[1])", longformat(); result=sum(sin(t)*f)/3*(t[2]-t[1]), ">shortformat();" shortformat(); "" "; surpresses output of intermediate results." weiter(); "By the way:" ">f[1:5]", f[1:5], ">f[n-4:n]", f[n-4:n], weiter(); ## Gleichungssysteme. "Solve linear systems:" "" ">a=hilbert(10); b=a.dup(1,10); a\b" "" longformat(); a=hilbert(10); b=a.dup(1,10); a\b, "" "hilbert(n) generates the badly conditioned Hilbert matrix." "The inaccuracy is unavoidable for the 10x10 Hilbert matrix." weiter(); "We can get rid of the error using residuum iteration." ">xlgs(a,b)", xlgs(a,b), weiter(); ## Inklusion der L”sung. "Let us make an inclusion of the solution" "The algorithm for this may be found in papers of" "Rump, Alefeld, and Herzberg." "" ">ilgs(a,b)," ilgs(a,b), weiter(); "By the way, we can also output fractions" "" ">fracformat(5,epsilon); hilbert(10)/hilberftactor" global hilbertfactor; fracformat(5,epsilon); hilbert(10)/hilbertfactor, ">shortformat;" shortformat; weiter(); ## Kurvendiskussion. "A discussion" "" "The function:" ">x=1:0.02:10; y=log(x)/x;", x=1:0.02:10; y=log(x)/x; "xplot(x,y)", taste(); shrinkwindow(); xplot(x,y); ygrid(0); title("(return)"); warten(); cls; "" "The maximal value is in " ''>fmax("log(x)/x",1,10)'', fmax("log(x)/x",1,10), "" "The first derivative (numerically)" ''>a=dif("log(x)/x",x);'' ''xplot(x,a); ygrid(0); title ("(return)");'' taste(); a=dif("log(x)/x",x); xplot(x,a); ygrid(0); title ("(return)"); warten(); cls; return 0 endfunction .. *** MatLab - Demo *** function hump(x) return 1 / ((x-0.3)^2 + 0.01) + 1 / ((x-0.9)^2 + 0.04) - 6; endfunction function hump1(x) return -(2*(x-0.3)) / ((x-0.3)^2 + 0.01)^2 .. + -(2*(x-0.9)) / ((x-0.9)^2 + 0.04)^2 ; endfunction function humpdemo cls "" "Look at the following function:" type hump ''>fplot("hump",0,2)'' taste(); fplot("hump",0,2); title("Please press return!"); warten(); "" "Let us integrate it, using the gauss method", ''>gauss("hump",0,1,10),'' gauss("hump",0,1,10), "And compare with the romberg integral." ''>romberg("hump",0,1),'' romberg("hump",0,1), weiter(); "To find the zero near 1.2, we use three different methods." ''secant("hump",1.2,1.4),'' secant("hump",1.2,1.4), ''bisect("hump",1.2,1.4),'' bisect("hump",1.2,1.4), ''inewton("hump","hump1",~1.2,1.4~),'' inewton("hump","hump1",~1.2,1.4~), "The last method provides a fast inclusion of the result," "but it needs the derivative of the function:" "" "function hump1(x)" " return -(2*(x-0.3)) / ((x-0.3)^2 + 0.01)^2 .." " + -(2*(x-0.9)) / ((x-0.9)^2 + 0.04)^2 ;" "endfunction" weiter(); return "" endfunction function fftdemo ## Fourierreihe. cls;shrinkwindow(); "" "Discrete Fourier series:" "We generate a Fourier sum by chopping off the coefficients" "of the Fourier transform of a rectangle function." "" ">n=128; t=(0:n-1)*2*pi/n; s=(tk=10; w[k+2:n-k]=zeros(1,n-2*k-1); s1=re(fft(w));" taste(); for k=10 to 40 step 10; w1=w; w1[k+2:n-k]=zeros(1,n-2*k-1); s1=re(fft(w1)); setplot(0, 2*pi, -0.5, 1.5); xplot(t,s); hold on; color(3); plot(t,s1); color(1); hold off; title("(return)"); warten(); end; cls; ## Fourieranalyse. "Fourier analysis" "" "The signal:" ">t=(0:127)*2*pi/128; x=sin(10*t)+2*cos(15*t);" t=(0:127)*2*pi/128; x=sin(10*t)+2*cos(15*t); "" "Add some noise:" ">y=x+normal(size(x));" taste(); y=x+normal(size(x)); setplot(0,2*pi,-5, 5); plot(t,x); hold on; color(3); plot(t,y); color(1); title("Signal und signal with noise (return)"); hold off; warten(); "" "Now the Fourier analysis:" "" ">c=fft(y); p=abs(c)^2;" taste(); c=fft(y); p=abs(c); plot(0:64,p(1:65)); xgrid([10,15]); title("Spectral analysis (return)"); warten(); cls; "A two dimensional edge detector is folded", "with a signal matrix." "" "First we generate the signal" ">i=-32:31; j=i'; A=(i^2+j^2<200); density(A,0.99);" taste(); i=-32:31; j=i'; A=(i^2+j^2<200); density(A,0.99); title("Signal"); warten(); "" "Then we fold it with E." ">E=[-1,1,-1;1,0,1;-1,1,-1];" ">B=zeros(64,64); B[[64,1,2],[64,1,2]]=E;" ">density(re(ifft(fft(A)*fft(B))),0.99);" taste(); E=[-1,1,-1;1,0,1;-1,1,-1]; B=zeros(64,64); B[[64,1,2],[64,1,2]]=E; density(re(ifft(fft(A)*fft(B))),0.99); title("The edges"); warten(); cls; return 0; endfunction .. *** Approximations - Demo *** function apprdemo cls; "" ## L_2-Approximation. "Some approximation problems." "" "First the x-values and the function values are computed:" "" ">x=0:0.005:1; y=sqrt(x);", x=0:0.005:1; y=sqrt(x); "" "Then the matrix of polynomial values:" "" ">n=length(x); p=polyfit(x,y,5),", n=length(x); p=polyfit(x,y,5), "" ">plot(x,y); hold on; color(3); "| .. "plot(x,polyval(p,x)); color(1); hold off;" taste(); plot(x,y); hold on; color(3); plot(x,polyval(p,x)); color(1); hold off; title("sqrt(x) and its best L_2-approximation (return)"); warten(); xplot(x,y-polyval(p,x)); ygrid(0); title("The error (return)"); warten(); "" "The maximal error in this interval is" "" ">max(abs(y-polyval(p,x)))", max(abs(y-polyval(p,x))), weiter(); ## Interpolation. "Interpolation:" "" ">t=equispace(0,1,5); s=sin(t); d=interp(t,s);", t=equispace(0,1,5); s=sin(t); d=interp(t,s); "" ">x=0:0.01:1; max(x,abs(interpval(t,d,x)-sin(x)))", x=0:0.01:1; max(abs(interpval(t,d,x)-sin(x))), "" ">xplot(x,interpval(t,d,x)-sin(x)); ygrid(0); ", taste(); xplot(x,interpval(t,d,x)-sin(x)); ygrid(0); title("Interpolation error (return)"); warten(); cls; ## Optimierung "Optimization" "" "Let us first generate a convex set" t=1.1:0.1:5; t=flipx(1/t)|1|t|0.2; s=1/t; "t=1.1:0.1:5; t=flipx(1/t)|1|t|0.2; s=1/t;" "setplot(0,6,0,6); xplot(t,s);" taste(); setplot(0,6,0,6); xplot(t,s); warten(); "" "Then we minimize 2*x+y on this set." z=t+1i*s; r=cols(z); d=-1i*(z[2:r]-z[1:r-1]); A=re(d')|im(d'); b=re(z[2:r]*conj(d))'; c=[2,1]; "z=t+1i*s; r=cols(z); d=-1i*(z[2:r]-z[1:r-1]);" "A=re(d')|im(d'); b=re(z[2:r]*conj(d))'; c=[2,1];" "x=simplex(A,b,c);" x=simplex(A,b,c), "mark(x[1],x[2]); plot([x[1]-1,x[1]+1],[x[2]+2,x[2]-2]);" taste(); hold on; mark(x[1],x[2]); plot([x[1]-1,x[1]+1],[x[2]+2,x[2]-2]); hold off; title("Optimum, Press Return"); warten(); cls; mindemo(); return 0; endfunction .. *** Statistik - Demo *** function statdemo ## Statistikdemo. global Pi; pi=Pi; ## t-Test. cls "Statistics :" "" "Let us generate 10 simulated measurements:" "" ">x=1000+5*normal(1, 10)", x=1000+5*normal(1, 10), "" "Mean value:" ">m=sum(x)/10", m=sum(x/10), "" "Standart deviation:", ">d=sqrt(sum((x-m)^2)/9)," d=sqrt(sum((x-m)^2)/9), weiter(); "" "A 95-onfidence interval for the mean value:" "" ">t=invtdis(0.975,9)*d/3; [m-t,m+t]", t=invtdis(0.975,9)*d/3; [m-t,m+t], weiter(); ## xhi^2 "Statistical evaluation of dice throws." "" ">x=random(1, 600); t=count(x*6,6)'", x=random(1, 600); t=count(x*6,6), "Compute chi^2" ">chi=sum((t-100)^2/100)," chi=sum((t-100)^2/100), "We decide that the dice is unbiased, since" ">1-chidis(chi,5)" 1-chidis(chi,5), weiter(); "Now we simulate a biased dice:" ">x=(x<0.95)*x; t=count(x*6,6), chi=sum((t-100)^2/100);" x=(x<0.95)*x; t=count(x*6,6), chi=sum((t-100)^2/100); "Error probability:" ">1-chidis(chi,5)" 1-chidis(chi,5), weiter(); ## Binomialverteilung "The binomial distribution:" "" ">n=20; t=0:n; p=0.4; b=p^t*(1-p)^(n-t)*bin(n,t);" ">color(3); mark(t,b); color(1);" n=20; t=0:n; p=0.4; b=p^t*(1-p)^(n-t)*bin(n,t); "" ">d=sqrt(n*p*(1-p));" ">s=exp(-((t-20*p)/d)^2/2)/(d*sqrt(2*pi));" ">hold on; plot(t,s); hold off;" taste(); color(3); mark(t,b); color(1); d=sqrt(n*p*(1-p)); s=exp(-((t-20*p)/d)^2/2)/(d*sqrt(2*pi)); hold on; plot(t,s); title("Binomial and normal distribution (press return)"); hold off; warten(); cls; ## Mehrfeldertest "chi^2 test:" "" "Given the matrix:" ">a" format(5,0); a=[23,37,43,52,67,74;45,25,53,40,60,83]; a, shortformat(); "" "The matrix of expected values:" ">{k,l}=field(sum(a')',sum(a)'); s=totalsum(a); b=(k*l)/s;" {k,l}=field(sum(a')',sum(a)'); s=totalsum(a); b=(k*l)/s; weiter(); "Compute chi^2:" ">chi=totalsum((a-b)^2/b); 1-chidis(chi,5)," chi=totalsum((a-b)^2/b); 1-chidis(chi,5), "" "That means we decide that the columns do not depend of the rows." weiter(); ## Regression. "Regression analysis:" "" "A linear function with errors: " "" ">t=0:0.2:5; s=2*t+3+0.2*normal(size(t));", t=0:0.2:5; s=2*t+3+0.2*normal(size(t)); ">p=polyfit(t,s,1),", p=polyfit(t,s,1), ">color(3); mark(t,s); hold on; color(1); plot(t,polyval(p,t)); hold off;" taste(); color(3); mark(t,s); hold on; color(1); plot(t,polyval(p,t)); hold off; title("The best fit (press return)"); warten(); cls; return 0; endfunction function fibo(n) ## fibo(n) liefert einen Vektor mit den ersten n Finonaccizahlen. if (n<3) return [1 1]; endif; f=ones(1, n); for i=3 to n; f[i]=f[i-1]+f[i-2]; end; return f endfunction function itertest(x) ## itertest(x) konvergiert gegen sqrt(2). repeat; x=(x+2/x)/2; x, if x*x~=2; break; endif; end; return x; endfunction function multitest return {arg1,arg1*arg1} endfunction function hut (x,y) r=x^2+y^2; if r<1-epsilon(); return exp(1-1/(1-r)); else return 0; endif; endfunction function udfdemo cls; "" "EULER is programmable.", "" "As an example we list a function, which computes the first n" "fibonacci numbers when called with fibo(n):" weiter(); ">type fibo", type fibo; ">fibo(5)", fibo(5), weiter(); "As you can see, a function starts with" ">function name" "and ends with" ">end"|"function" "Every function must have a return statement, which stops it." weiter(); "Arguments are named arg1, arg2, arg3, ...," "unless they are given names in the function header." "argn() gives the number of arguments. All variables are local and" "cease to exist after function execution is finished." "But the command" ">global name" "allows access of a global variable." weiter(); "There are:" "" "Conditionals:" ">if condition; ... { else; ... } endif;" "" "The condition can be any expression, especially a test like < > etc." "Logical connections are made with || (or) and && (and)." "!condition means: not condition." weiter(); "Repetitive statements:" ">for variable=start to end { step value }; ... end;" ">loop start to end; ... end;" ">repeat; ... end;" weiter(); "In loop's the index can be accessed with index() or #." "All these statements can be left with a break; or return ...;" weiter(); "Example:" "" type itertest "" ">longformat(); itertest(1.5), shortformat();", longformat(); itertest(1.5), shortformat(); weiter(); "A function can return multiple values and these values can be" "assigned to several variables." "" "Syntax:" ">return {variable,variable,...}" "The brackets { and } are part of the syntax here." "Then the multiple assignment looks like:" ">{a,b}=test(parameter)" weiter(); "An example:" "" type multitest "" "{a,b}=multitest(2); a, b,", {a,b}=multitest(2); a, b, weiter(); "Comments start with #"|"#. Comments are not listet with type." "If the first lines of a functions start with #"|"#," "they are considered help text. With help this text can be read." "" ">help shortformat" "", help shortformat, weiter(); "Since all EULER functions work for vector and matrix input," "user defined functions should be written the same way." "Most of the time, this is automatic. But sometimes a function" "uses a complicate algorithm or cases." "Then you may use the map function." weiter(); ">type hut", type hut taste(); v=view(5,2,0,0.4); ''>x=-1.2:0.2:1.2; y=x'; framedsolid(x,y,map("hut",x,y));'', x=-1.2:0.2:1.2; y=x'; framedsolid(x,y,map("hut",x,y)); title("(return)"); warten(); cls; view(v); "" shrinkwindow(); ''>x=-2:0.05:2; xplot(x,map("hut",x,0));'', taste(); x=-2:0.05:2; xplot(x,map("hut",x,0)); title("(return)"); warten(); cls; "You can echo output to a file" "" ">dump filename" "" "Again, filename must be string expression." weiter(); "With" ">dump" "echoing is stopped and the file closed." "" "Dumps are always appended to the file." "With" ">remove filename" "the file is removed (killed)." "" "By the way:" ">forget f; clear a;" "removes a function and the variable a." weiter(); return 0 endfunction function vectorfield (expr,x1,x2,y1,y2,nx=20,ny=20) ## Draw the vector field of a differential equation in x and y. ## expr must be the expression "f(x,y)", which computes the ## derivative of y(x) at x. setplot(x1,x2,y1,y2); x=linspace(x1,x2,nx-1); y=linspace(y1,y2,ny-1); {X,Y}=field(x,y); V=expreval(expr,X,y=Y); n=prod(size(X)); h=(x2-x1)/nx/4; v=redim(V,[n,1]); r=sqrt(v*v+1); x=redim(X,[n,1]); x=(x-h/r)|(x+h/r); y=redim(Y,[n,1]); y=(y-h*v/r)|(y+h*v/r); st=linestyle("->"); xplot(x,y); linestyle(st); return plot(); endfunction function norm (v) return sqrt(sum(v*v)) endfunction function f3body (x,y) y1=y[1,1:2]; y2=y[1,3:4]; y3=y[1,5:6]; d21=(y2-y1)/norm(y2-y1)^3; d31=(y3-y1)/norm(y3-y1)^3; d32=(y3-y2)/norm(y3-y2)^3; return y[7:12]|(d21+d31)|(-d21+d32)|(-d31-d32); endfunction function test3body (y1) y=y1; x=0; h=0.01; setplot(-3,3,-3,3); clg; hold off; xplot(); frame(); title("Any key stops the movement"); testkey(); repeat; loop 1 to 10; ynew=runge2("f3body",x,x+h,y,0.0001,h); H=(y_ynew)'; hold on; color(4); plot(H[1],H[2]); color(5); plot(H[3],H[4]); color(6); plot(H[5],H[6]); y=ynew; x=x+h; hold off; end; color(1); if (any(abs(y[1:6])>4)); "One body left definition area!", break; endif; if testkey(); break; endif; end; return x endfunction function specialdemo ## Differentialgleichung cls; "Differential equations : " "" ''vectorfield("-2*x*y",0,2,0,2);'' ''>t=0:0.05:2; s=heun("-2*x*y",t,1); plot(t,s);'', taste(); vectorfield("-2*x*y",0,2,0,2); t=0:0.05:2; s=heun("-2*x*y",t,1); hold; plot(t,s); hold; title("(return)"); warten(); "" "Maximal error : " "" ">max(abs(s-exp(-t^2)))", max(abs(s-exp(-t^2))), weiter(); "We now solve the three body problem with the" "adaptive Runge-Kutta method." "Watch the bodies move." taste(); test3body([-2,0,2,0,0,2,0.1,-0.2,0,0.2,0.1,0]); cls; return 0; endfunction function eigendemo cls "" ## Eigenwerte : "Eigenvalues and eigenvectors : " "" "Given the matrix" ">A=[0,1;1,1]", A=[0,1;1,1], "" "We compute the eigenvalues and eigenvectors of A." ">{l,V}=eigen(A); l=re(l)," {l,V}=eigen(A); l=re(l), ">V=re(V)," V=re(V), weiter(); "Then V'.D.V=A." "" ">D=diag(size(A),0,l); V'.D.V," D=diag(size(A),0,l); V'.D.V, weiter(); "There are routines to determine all solutions" "of a linear system." "Generate a random 3x5 matrix and a random right side" ">A=floor(random(3,5)*10)," repeat A=floor(random(3,5)*10), if cols(image(A[1:3,1:3]))==3; break; endif; end; ">b=floor(random(3,1)*10)," b=floor(random(3,1)*10), weiter(); "See if Ax=b must have a solution" ">cols(image(A))," cols(image(A)), "Since rank(A) is 3, it must have a solution" "Choose a special solution" fracformat(); ">{a,r,c,d}=lu(A); x=zeros(5,1); cc=nonzeros(c);" ">s=A(:,cc)\b; x(cc)=s," {a,r,c,d}=lu(A); x=zeros(5,1); cc=nonzeros(c); s=A(:,cc)\b; x(cc)=s, "plus the following vectors" ">kernel(A)," kernel(A), shortformat(); "A good special solution would be" ">fit(A,b)" fit(A,b), weiter(); return 0; endfunction function grafiktutor ## Erkl„rt die Grafikfunktionen hold off; global Pi; shrinkwindow(); cls; "Explanation of some grafics functions." "" "First we compute a vector of x-values." ">x=-1:0.02:1;" x=-1:0.02:1; "Then we compute the function at these points." ">y=sin(4*Pi*x)*exp(-x*x);" y=sin(4*Pi*x)*exp(-x*x); "Finally we can plot the function." ">plot(x,y);" taste(); plot(x,y); warten(); "The plot can be given a title." ''>title("sin(4*Pi*x)*exp(-x*x),(return)");'', taste(); title("sin(4*Pi*x)*exp(-x*x),(return)"); warten(); "For x- and y-grids, we use the following commands." ">xgrid(-0.5:0.5:0.5); ygrid(-1:0.5:1);" taste(); xgrid(-0.5:0.5:0.5); ygrid(-1:0.5:1); warten(); "To draw another plot above it, we use the hold command.", ">hold on; plot(x,cos(4*Pi*x)*exp(-x*x)); hold off;" taste(); hold on; plot(x,cos(4*Pi*x)*exp(-x*x)); hold off; warten(); cls; "One can plot several curves wth a single plot command." "", "This time, the grid is to have labels." ">shrinkwindow();" shrinkwindow(); "", ">x=linspace(-1,1,50); T=cos((1:5)'*acos(x));" x=linspace(-1,1,50); T=cos((1:5)'*acos(x)); "This way we computed 5 rows of 5 functions cos(n*acos(x))." "", "First we set the plot region manually.", ">setplot(-1.5,1.5,-1.5,1.5);" "The we plot all functions." ">plot(x,T); xgrid(-2:2,1); ygrid(-2:2,1); weiter(); hold off;" taste(); setplot(-1.5,1.5,-1.5,1.5); plot(x,T); xgrid(-2:2,1); ygrid(-2:2,1); hold off; warten(); cls; "One can also mark a point on the screen with the mouse." ''>title("Click the left mouse button."); c=mouse(); c,'' taste(); if delay>30; title("Click the left mouse button."); c=mouse(); c, "These are the coordinates, you choose." weiter(); endif; "Now a function with a singularity." "" ">t=-1:0.01:1; setplot(-1,1,-10,10);" ">xplot(t,1/t); hold on; plot(t,1/t^2); hold off;" "" taste(); t=-1:0.01:1; setplot(-1,1,-10,10); xplot(t,1/t); hold on; plot(t,1/t^2); hold off; title("1/t and 1/t^2 (return)"); warten(); cls; "Functions of two variables :" "" "First we compute the x- and y-coordinates." ">x=-1:0.1:1; y=x';" x=-1:0.1:1; y=x'; "", "Then we compute the function values at these grid points and" "draw them." ">z=x*x+x*y-y*y; mesh(z);" taste(); z=x*x+x*y-y*y; fullwindow(); mesh(z); warten(); cls; "The contour level lines of these function we can inspect with" ">contour(z,-3:0.5:3);" taste(); contour(z,-3:0.5:3); warten(); cls; "A perspective view of the same surface." ">view(2.5,1,1,0.5); solid(x,y,z);" taste(); view(2.5,1,1,0.5); solid(x,y,z); warten(); cls; "A wire frame model." ">wire(x,y,z);" taste(); wire(x,y,z); warten(); cls; return 0 endfunction function abspann cls "I hope this demo has given you a good impression." "The author wishes you success with mathematics and EULER!" "" return 0 endfunction function torus ## some torus type bodies. view([4,1,0,0.6]); x=linspace(0,2*pi,40); y=linspace(0,2*pi,20)'; ## faster than {phi,psi}=field(x,y); cosphi=cos(phi); ... ## a torus with a thick and a thin side. factor=1.5+cos(y)*(cos(x)/2+0.6); X=cos(x)*factor; Y=sin(x)*factor; Z=sin(y)*(cos(x)/2+0.6); solid(X,Y,Z); title("(Return)"); warten(); ## a deformed torus factor=1.5+cos(y); X=cos(x)*factor; Y=sin(x)*factor; Z=sin(y)+cos(2*x); solid(X,Y,Z); title("(Return)"); warten(); ## the Moebius band t=linspace(-1,1,20)'; x=linspace(0,pi,40); factor=2+cos(x)*t; X=cos(2*x)*factor; Y=sin(2*x)*factor; Z=sin(x)*t; solid(X,Y,Z); title("Return"); warten(); return 0; endfunction function tube ## some tube like bodies. view([3,1,0,0.1]); global Pi; x=linspace(0,2*Pi,40); ## a atomic modell or so. y=0.1+(sin(linspace(0,Pi,15))| .. 1.5*sin(linspace(0,Pi,10))|sin(linspace(0,Pi,15))); cosphi=dup(cos(x),length(y)); sinphi=dup(sin(x),length(y)); f=dup(y',length(x)); solid(f*cosphi,f*sinphi,dup(linspace(-2,2,length(y)-1)',length(x))); title("(Return)"); warten(); ## a black hole t=linspace(0,1,20); cosphi=dup(cos(x),length(t)); sinphi=dup(sin(x),length(t)); f=dup((t*t+0.2)',length(x)); view([3,1.5,0,0.7]); solid(f*cosphi,f*sinphi,dup(t'*2-1,length(x))); title("(Return)"); warten(); return 0; endfunction function minimal (r,phi) R=dup(r',length(phi)); X=R*dup(cos(phi),length(r))+R*R/2*dup(cos(2*phi),length(r)); Y=-R*dup(sin(phi),length(r))-R*R/2*dup(sin(2*phi),length(r)); Z=4/3*dup((r^1.5)',length(phi))*dup(cos(1.5*phi),length(r))-1; view(9,1,-1.5,0.2); solid(X,Y,Z); title("A minmal surface (Return)"); warten(); return 0; endfunction function spiral {r,a}=field(0:0.1:1,0:pi()/8:6*pi()); z=a/8; x=r*cos(a)*(1-a/20); y=r*sin(a)*(1-a/20); z=z-1.5; view(4,1.5,0.5,0.3); framedsolid(x,y,z); title("(Return)"); warten(); return 0; endfunction function rings rr=0.2; t=linspace(0,2*pi,10); s=linspace(0,2*pi,41); n=length(s); r=dup(1+cos(t)*rr,n)'; m=length(t); x=dup(cos(s),m)*r; y=dup(sin(s),m)*r; z=dup(sin(t)*rr,n)'; view([4,1.5,0.3,0.3]); X=x_(x+1.3)_(x-1.3); Y=y_-z_-z; Z=z_y_y; solid(X,Y,Z,[m,2*m]); title("Disconnnected surfaces (Return)"); warten(); return 0; endfunction function startdemo "" "We now generate some nice 3D objects" weiter(); {x,y}=field(-1:0.1:1,-1:0.1:1); z=x*x+y*y; mesh(z); title("(Return)"); warten(); return 0; endfunction function knot() t=linspace(0,2*pi,200); x=sin(t)+2*sin(2*t); y=cos(t)-2*cos(2*t); z=sin(3*t); xv=cos(t)+4*cos(2*t); yv=-sin(t)+4*sin(2*t); zv=3*cos(3*t); n=sqrt(xv*xv+yv*yv+zv*zv); xv=xv/n; yv=yv/n; zv=zv/n; xv1=1-xv*xv; yv1=-xv*yv; zv1=-xv*zv; n=sqrt(xv1*xv1+yv1*yv1+zv1*zv1); xv1=xv1/n; yv1=yv1/n; zv1=zv1/n; xv2=yv*zv1-yv1*zv; yv2=-xv*zv1+xv1*zv; zv2=xv*yv1-xv1*yv; n=sqrt(xv2*xv2+yv2*yv2+zv2*zv2); xv2=xv2/n; yv2=yv2/n; zv2=zv2/n; p=linspace(0,2*pi,20)'; r=0.3; X=x+r*(cos(p)*xv1+sin(p)*xv2); Y=y+r*(cos(p)*yv1+sin(p)*yv2); Z=z+r*(cos(p)*zv1+sin(p)*zv2); view(5,2,0.5,0.7); framedsolidhue(X,Y,Z,cos(p)*xv1+sin(p)*xv2,2,1); title("A trefoil knot (Return)"); warten(); return 0; endfunction function demo3d cls; startdemo(); torus(); tube(); minimal(0.1:0.1:2.5,0:pi()/20:2*pi()); spiral(); rings(); knot(); return 0; endfunction function g(x) return x^3+x^2/2-x endfunction function g1(x) return 3*x^2+x-1 endfunction function inewtonhist (ffunc,fder,x) repeat m=middle(x); xnew=(m-ffunc(m)/fder(x)) && x; if ! (xnew << x); break; endif; x=xnew, end; return x; endfunction function intervaldemo cls; "", "The following demonstrates the interval newton method." "" "First we define a function, and its derivative" "" type g; "" type g1; "" "The interval newton method is implemented in the following function:" "" type inewtonhist; "" "Let us plot this function in [-1,1]" taste(); t=linspace(0,1,300); xplot(t,g(t)); title("Press return"); warten(); "" "The we apply the method to the interval [0.6,1]" "" longformat; ''>x=inewtonhist("g","g1",~0.6,1~);'', x=inewtonhist("g","g1",~0.6,1~); "Result", x, shortformat; "" "This is a guaranteed inclusion of the zero of this polynomial." weiter(); "We now show how bad a simple polynomial evaluation can be." "This example is due to Rump." "" ">p=[-945804881,1753426039,-1083557822,223200658];" ">t=linspace(1.61801916,1.61801917,100);" ">s=polyval(p,t);" ">xplot(t,s,ticks=0); ygrid(ticks(s)); xrange();" taste(); p=[-945804881,1753426039,-1083557822,223200658]; t=linspace(1.61801916,1.61801917,100); s=polyval(p,t); xplot(t,s,ticks=0); ygrid(ticks(s)); xrange(); title("Incorrect polynomial values"); warten(); cls; "But there is the xpolyval function, which evaluates the" "polynomial much better (uses an algorithm of Rump)" ">s=xpolyval(p,t);" ">xplot(t,s,ticks=0); ygrid(ticks(s)); xrange();" taste(); s=xpolyval(p,t); xplot(t,s,ticks=0); ygrid(ticks(s)); xrange(); title("Correct polynomial values"); warten(); cls; return ""; endfunction function waves (p=10) reset(); twosides(0); v=fillcolor([0,0]); clg; title("Creating Animation"); beginpages(); t=linspace(0,1,p); x=linspace(-2*pi,2*pi,20); y=x'; r=sqrt(x*x+y*y); loop 1 to cols(t); solid(x/pi,y/pi,sin(r-t[#]*2*pi)*exp(-t[#]*3)/5); end; endpages(); twosides(1); fillcolor(v); return cols(t); endfunction; function demoanimate (d=0.1) global demodelay; count=0; repeat playpages(d); if testkey(); return pages(); endif; count=count+1; if demodelay==0 && count>10; break; endif; end; return pages(); endfunction function demof (a) t=linspace(-2*pi,2*pi,250); xplot(t,sin(t*a)*exp(-t*t/10)); return a; endfunction function animatedemo cls; demodelay=0; "EULER will generate a few images.", "The space key will stop the animation!" taste(); waves(); demoanimate(); clg; "", "This generates a rotating 3D image." ''>rotate("f3dplot";"x*y");'', "Press the space key to stop!", taste(); rotate("f3dplot";"x*y"); "", "We generate a rotating stereo picture with", ''>rotate("stereo";"wire",x,y,x^3+y^2);'', "Can you see it in stereographic view?", "Press the space key to stop the animation!", taste(); x=linspace(-1,1,11); y=x'; reset(); rotate("stereo";"wire",x,y,x^3+y^2); "", "Another animation", taste(); clg; beginpages(); map("demof",linspace(0,5,100)); endpages(); demoanimate(); .. "Creating waves takes some time!" .. weiter(); .. waves(); .. "Any key will stop the animation!" .. weiter(); .. repeat .. playpages(0.8); .. if testkey(); return npages(); endif; .. end; return 0; endfunction function demo (del=180) global demodelay; demodelay=del; reset(); repeat; cls "" "Please select any of the following demos." "" sel=menu("Basics", .. 1 "Graphics Demo", .. 2 "Discussion of a Function", .. 3 "Approximations, Optimization, Minimization", .. 4 "Statistics", .. 5 "Programming", .. 6 "Differential Equations", .. 7 "Linear Algebra, Eigenvalues", .. 8 "Intervals and Exact Evaluation", .. 9 "Graphics Tutor", .. 10 "3D Demo", .. 11 "FFT", .. 12 "Graphics Animation", .. 13 "Quit"); if sel==1; normaldemo(); elseif sel==2; grafikdemo(); elseif sel==3; humpdemo(); elseif sel==4; apprdemo(); elseif sel==5; statdemo(); elseif sel==6; udfdemo(); elseif sel==7; specialdemo(); elseif sel==8; eigendemo(); elseif sel==9; intervaldemo(); elseif sel==10; grafiktutor(); elseif sel==11; demo3d(); elseif sel==12; fftdemo(); elseif sel==13; animatedemo(); elseif sel==14; break; endif; end; abspann(); end; return "" endfunction demo(); euler-1.61.0/progs/bessel.e0000644000175000001440000000052007417015640014332 0ustar ericuserscomment Bessel functions bessel(m,x). endcomment function bessel (m,x,n=30) ## bessel computes the m-th bessel function at x (|x|<10). ## m must be fixed and x can be a vector. denom=1/((1:n)*((1:n)+m)); denom(1)=1/fak(m+1); denom=cumprod(denom); y=(-x^2/4); return (sum(cumprod(dup(y,n)').denom')'+1/fak(m))*(x/2)^m endfunction euler-1.61.0/progs/Makefile.am0000644000175000001440000000016710263636510014750 0ustar ericusersSUBDIRS = user progsdir = $(prefix)/share/euler/progs progs_DATA = \ *.e\ *.en\ *.dat EXTRA_DIST = $(progs_DATA) euler-1.61.0/progs/Makefile.in0000644000175000001440000003527110331246752014766 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = progs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(progsdir)" progsDATA_INSTALL = $(INSTALL_DATA) DATA = $(progs_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = user progsdir = $(prefix)/share/euler/progs progs_DATA = \ *.e\ *.en\ *.dat EXTRA_DIST = $(progs_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu progs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu progs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-progsDATA: $(progs_DATA) @$(NORMAL_INSTALL) test -z "$(progsdir)" || $(mkdir_p) "$(DESTDIR)$(progsdir)" @list='$(progs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(progsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(progsdir)/$$f'"; \ $(progsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(progsdir)/$$f"; \ done uninstall-progsDATA: @$(NORMAL_UNINSTALL) @list='$(progs_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(progsdir)/$$f'"; \ rm -f "$(DESTDIR)$(progsdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(progsdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-progsDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-progsDATA uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-progsDATA install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-info-am \ uninstall-progsDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/progs/figure.en0000644000175000001440000000132607471452723014530 0ustar ericusers% A demonstration of the figure feature % The feature uses the hold on function. So, you must be aware that % every graphical command will be buffered. % use "hold off" to come back to the common behavior. >function sinc(x) $ return sin(x)/x; $endfunction % Let's draw 2 rows of 2 subplots. % The window is set to draw the first one >figure([2,2]); >t=-10:0.01:10;x=sinc(t); >xplot(t,x);xlabel("t (s)",1);ylabel("x(t)",0); % Let's choose the second subplot >figure(2); >x=-1:0.05:1; y=x';density(x^2+y^3,1);contour(x^2+y^3,-10:0.1:10);setplot(-1,1,-1,1); xplot(); % The third one >figure(3); >view(5,1.5,0.8,0.5);huecolor(0); framedsolidhue(x,y,(x^2+y^3),x^2+y^3,2,1); huecolor(1); % The last one >figure(4);mesh(x^2+y^3); > euler-1.61.0/progs/framed.e0000644000175000001440000002216207430505620014316 0ustar ericuserscomment framed views endcomment function getframe (x,y,z) ## gets a box around all points in (x,y,z). ex=extrema(x); ey=extrema(y); ez=extrema(z); return [min(ex[:,1]'),max(ex[:,3]'), min(ey[:,1]'),max(ey[:,3]'),min(ez[:,1]'),max(ez[:,3]')] endfunction function framez0 (f) wire([f[1],f[2],f[2],f[1],f[1]], .. [f[3],f[3],f[4],f[4],f[3]],dup(f[5],5)'); .. grid3d(f); return 0 endfunction function framez1 (f) wire([f[1],f[2],f[2],f[1],f[1]], .. [f[3],f[3],f[4],f[4],f[3]],dup(f[6],5)'); return 0 endfunction function framexpyp (f) wire([f[2],f[2]],[f[4],f[4]],[f[5],f[6]]); return 0 endfunction function framexpym (f) wire([f[2],f[2]],[f[3],f[3]],[f[5],f[6]]); return 0 endfunction function framexmyp (f) wire([f[1],f[1]],[f[4],f[4]],[f[5],f[6]]); return 0 endfunction function framexmym (f) wire([f[1],f[1]],[f[3],f[3]],[f[5],f[6]]); return 0 endfunction function xgrid3d(f,tx,xfactor,yz=3,color=3) ## draws a grid for x axis in the plane y or z = f[yz] nx=cols(tx); ls=linestyle(".");lw=linewidth(1);c=color(color); loop 1 to nx; if yz==3||yz==4; .. plane y=cst wire([tx[#],tx[#]],[f[yz],f[yz]],[f[5],f[6]]); else wire([tx[#],tx[#]],[f[3],f[4]],[f[yz],f[yz]]); endif; end; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function ygrid3d(f,ty,yfactor,xz=1,color=3) ## draws a grid for y axis in the plane x or z = f[xz] ny=cols(ty); ls=linestyle(".");lw=linewidth(1);c=color(color); loop 1 to ny; if xz==1||xz==2; .. plane x=cst wire([f[xz],f[xz]],[ty[#],ty[#]],[f[5],f[6]]); else wire([f[1],f[2]],[ty[#],ty[#]],[f[xz],f[xz]]); endif; end; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function zgrid3d(f,tz,zfactor,xy=1,color=3) ## draws a grid for z axis in the plane x or y = f[xy] nz=cols(tz); ls=linestyle(".");lw=linewidth(1);c=color(color); loop 1 to nz; if xy==1||xy==2; .. plane x=cst wire([f[xy],f[xy]],[f[3],f[4]],[tz[#],tz[#]]); else wire([f[1],f[2]],[f[xy],f[xy]],[tz[#],tz[#]]); endif; end; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function xticks3d(f,tx,xfactor,ctr,color=3) ## draws a grid for z axis in the plane x or y = f[xy] nx=cols(tx); w=window(); ht=textheight(); ls=linestyle(".");lw=linewidth(1);c=color(color); y=[f[3],f[3],f[4],f[4]]; z=[f[5],f[6],f[5],f[6]]; {c,r}=project(dup(f[1],4)',y,z); cmax=max(r); loop 1 to 4 if r[#]==cmax; if y[#]==f[3]; {xp,yp}=project(tx,dup(y[#]-(!ctr)*(f[4]-f[3])/20,nx)',dup(z[#]-ctr*(f[6]-f[5])/20,nx)'); else {xp,yp}=project(tx,dup(y[#]+(!ctr)*(f[4]-f[3])/20,nx)',dup(z[#]-ctr*(f[6]-f[5])/20,nx)'); endif; break; endif; end; loop 1 to nx; _ctext(niceform(tx[#]/xfactor),[xp[#],yp[#]]); end; .. if ticks && !(f~=1); .. _ctext("* "|printscale(f),[(w[1]+w[3])/2,w[4]+1.5*ht]); .. endif; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function yticks3d(f,ty,yfactor,ctr,color=3) ## draws a grid for z axis in the plane x or y = f[xy] ny=cols(ty); w=window(); ht=textheight(); ls=linestyle(".");lw=linewidth(1);c=color(color); x=[f[1],f[1],f[2],f[2]]; z=[f[5],f[6],f[5],f[6]]; {c,r}=project(x,dup(f[3],4)',z); cmax=max(r); loop 1 to 4 if r[#]==cmax; if x[#]==f[1]; {xp,yp}=project(dup(x[#]-(!ctr)*(f[2]-f[1])/20,ny)',ty,dup(z[#]-ctr*(f[6]-f[5])/20,ny)'); else {xp,yp}=project(dup(x[#]+(!ctr)*(f[2]-f[1])/20,ny)',ty,dup(z[#]-ctr*(f[6]-f[5])/20,ny)'); endif; break; endif; end; loop 1 to ny; _ctext(niceform(ty[#]/yfactor),[xp[#],yp[#]]); end; .. if ticks && !(f~=1); .. _ctext("* "|printscale(f),[(w[1]+w[3])/2,w[4]+1.5*ht]); .. endif; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function zticks3d(f,tz,zfactor,color=3) ## draws a grid for z axis in the plane x or y = f[xy] nz=cols(tz); w=window(); ht=textheight(); ls=linestyle(".");lw=linewidth(1);c=color(color); x=[f[1],f[2],f[1],f[2]]; y=[f[3],f[3],f[4],f[4]]; {c,r}=project(x,y,dup(f[5],4)'); cmin=min(c); loop 1 to 4 if c[#]==cmin; {xp,yp}=project(dup(x[#],nz+1)',dup(y[#],nz+1)',tz|tz[nz]+(tz[nz]-tz[nz-1])); break; endif; end; loop 1 to nz; _rtext(niceform(tz[#]/zfactor),[xp[#]-5,yp[#]-ht/2]); end; .. if !(zfactor~=1); .. _rtext("* "|printscale(zfactor),[xp[nz+1]-5,yp[nz+1]-ht/2]); .. endif; color(c);linewidth(lw);linestyle(ls); return 0; endfunction function frame1 (f,grid=0,ticks=0,tx=0,ty=0,tz=0,xfactor=1,yfactor=1,zfactor=1) ## draws the back part of the box (considering view) v=view(); x=sin(v[3])*v[1]; y=-cos(v[3])*v[1]; if x<=f[2]; framexpyp(f); framexpym(f); if grid; zgrid3d(f,tz,zfactor,2); ygrid3d(f,ty,yfactor,2); endif; endif; if x>=f[1]; framexmyp(f); framexmym(f); if grid; zgrid3d(f,tz,zfactor,1); ygrid3d(f,ty,yfactor,1); endif; endif; if y<=f[4]; framexmyp(f); framexpyp(f); if grid; zgrid3d(f,tz,zfactor,4); xgrid3d(f,tx,xfactor,4); endif; endif; if y>=f[3]; framexmym(f); framexpym(f); if grid; zgrid3d(f,tz,zfactor,3); xgrid3d(f,tx,xfactor,3); endif; endif; if ticks; zticks3d(f,tz,zfactor); endif; y=sin(v[4])*v[1];ctr=0; if y>f[5]; framez0(f); if grid; xgrid3d(f,tx,xfactor,5); ygrid3d(f,ty,yfactor,5); endif; endif; if y=f[6]; framez1(f); endif; x=sin(v[3])*v[1]; y=-cos(v[3])*v[1]; if x>=f[2]; framexpyp(f); framexpym(f); endif; if x<=f[1]; framexmyp(f); framexmym(f); endif; if y>=f[4]; framexmyp(f); framexpyp(f); endif; if y<=f[3]; framexmym(f); framexpym(f); endif; return 0 endfunction function scaleframe (x,y,z,f,m) s=max([f[2]-f[1],f[4]-f[3],f[6]-f[5]]); xm=(f[2]+f[1])/2; ym=(f[4]+f[3])/2; zm=(f[6]+f[5])/2; ff=m/s*2; f=[f[1]-xm,f[2]-xm,f[3]-ym,f[4]-ym,f[5]-zm,f[6]-zm]*ff; return {(x-xm)*ff,(y-ym)*ff,(z-zm)*ff} endfunction function framedsolid (x,y,z,scale=0,grid=1,ticks=1) ## works like solid and draws a frame around the plot ## if scale is specified, then the plot is scaled to fit into a cube of ## side length 2*scale centered at 0 frame=getframe(x,y,z); if !holding(); clg; endif; h=holding(1); if scale; {x1,y1,z1}=scaleframe(x,y,z,frame,scale); else; {x1,y1,z1}={x,y,z}; endif; if grid || ticks; {tx,xfactor}=ticks(frame[1],frame[2]); {ty,yfactor}=ticks(frame[3],frame[4]); {tz,zfactor}=ticks(frame[5],frame[6]); color(2);frame1(frame,grid,ticks,tx,ty,tz,xfactor,yfactor,zfactor); color(1); solid(x1,y1,z1); color(2); frame2(frame); color(1); else color(2); frame1(frame); color(1); solid(x1,y1,z1); color(2); frame2(frame); color(1); endif; holding(h); return frame endfunction function framedsolidhue (x,y,z,hue,scale=0,f=1,grid=1,ticks=1) ## works like solidhue and draws a frame around the plot ## if scale is specified, then the plot is scaled to fit into a cube of ## side length 2*scale centered at 0 frame=getframe(x,y,z); if !holding(); clg; endif; h=holding(1); if scale; {x1,y1,z1}=scaleframe(x,y,z,frame,scale); else; {x1,y1,z1}={x,y,z}; endif; if grid || ticks; {tx,xfactor}=ticks(frame[1],frame[2]); {ty,yfactor}=ticks(frame[3],frame[4]); {tz,zfactor}=ticks(frame[5],frame[6]); color(2);frame1(frame,grid,ticks,tx,ty,tz,xfactor,yfactor,zfactor); color(1); if f; solidhue(x1,y1,z1,hue,f); else; solidhue(x1,y1,z1,hue); endif; color(2); frame2(frame); color(1); else color(2); frame1(frame); color(1); if f; solidhue(x1,y1,z1,hue,f); else; solidhue(x1,y1,z1,hue); endif; color(2); frame2(frame); color(1); endif; holding(h); return frame endfunction function framedwire (x,y,z,scale=0,grid=0,ticks=1) ## works like framedsolid frame=getframe(x,y,z); if !holding(); clg; endif; h=holding(1); if scale; {x1,y1,z1}=scaleframe(x,y,z,frame,scale); else; {x1,y1,z1}={x,y,z}; endif; if grid || ticks; {tx,xfactor}=ticks(frame[1],frame[2]); {ty,yfactor}=ticks(frame[3],frame[4]); {tz,zfactor}=ticks(frame[5],frame[6]); color(2);frame1(frame,grid,ticks,tx,ty,tz,xfactor,yfactor,zfactor); color(1); wire(x1,y1,z1); color(2); frame2(frame); color(1); else color(2); frame1(frame); color(1); wire(x1,y1,z1); color(2); frame2(frame); color(1); endif; holding(h); return frame endfunction function framedmark3 (x,y,z,scale=0,grid=1,ticks=1) ## Plots points in three dimensions with frame. ## x,y,z must be 1xn vectors. frame=getframe(x,y,z); if !holding(); clg; endif; h=holding(1); if scale; {x1,y1,z1}=scaleframe(x,y,z,frame,scale); else {x1,y1,z1}={x,y,z}; endif if grid || ticks; {tx,xfactor}=ticks(frame[1],frame[2]); {ty,yfactor}=ticks(frame[3],frame[4]); {tz,zfactor}=ticks(frame[5],frame[6]); color(2);frame1(frame,grid,ticks,tx,ty,tz,xfactor,yfactor,zfactor); color(1); {c0,r0}=project(x1,y1,z1); {x0,y0}=fromscreen(c0,r0); mark(x0,y0); color(2); frame2(frame); color(1); else color(2); frame1(frame); color(1); {c0,r0}=project(x1,y1,z1); {x0,y0}=fromscreen(c0,r0); mark(x0,y0); color(2); frame2(frame); color(1); endif; holding(h); return frame; endfunction euler-1.61.0/progs/feigenbaum.en0000644000175000001440000000066007417015640015342 0ustar ericusers% Try the following notebook, which produces the famous % chaotic behaviour, which was investigated by Feigenbaum. >function f(x,l) $return l*x*(1-x); $endfunction % This function is iterated, starting from 0.5. >l=3:0.005:4; >x=0.5*ones(size(l)); % The niterate function is given an additional argument % l. >h=niterate("f",x,200;l); h=h[100:200]; >style("m."); % xmark is a bit slow for that many points. >xmark(l,h); wait(20); > euler-1.61.0/progs/bezier.e0000644000175000001440000001150107417015640014336 0ustar ericuserscomment Compute Bezier curves. For a test try: beziertest; bezier3dtest; nurbstest; beziersurftest; c1test; Uses the following functions: bezier, bezier3d, nurbs, beziersurface endcomment reset(); function bezier (p,t) ## Evaluate sum p_i B_{i,n}(t) the easy and direct way. ## p must be a k x n+1 matrix (n+1) points, dimension k. n=cols(p)-1; i=nonzeros(t~=1); if cols(i)>0; t[i]=0.9999*ones(size(i)); endif; T=dup(t/(1-t),n)'; b=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b=cumprod(b); if (cols(i)>0); b[i]=zeros(1,n)|1; endif; return p.b'; endfunction function bezier2 (p,t) ## Evaluate sum p_i B_{i,n}(t) the complicated way. ## p_i is a k x n+1 matrix (n+1) points, dimension k. n=cols(p)-1; {T,N}=field(t,0:n); b=bin(n,N)*T^N*(1-T)^(n-N); return p.b; endfunction function gammatest (N=[10,20,50,100]) ## Bezier curve approximating a circle x=linspace(0,1,100); linewidth(4); xplot(cos(2*pi*x),sin(2*pi*x)); linewidth(1); loop 1 to cols(N); n=N[#]; t=sqrt(linspace(0,1,n)); p=cos(2*pi*t)_sin(2*pi*t); y=bezier(p,x); hold on; plot(y[1],y[2]); hold off; end; return ""; endfunction function gammatest1 (N=[10,20,50,100]) ## Bezier curve approximating a circle x=linspace(0,1,100); linewidth(4); xplot(cos(2*pi*x),sin(2*pi*x)); linewidth(1); loop 1 to cols(N); n=N[#]; t=linspace(0,1,n); p=cos(2*pi*t)_sin(2*pi*t); y=bezier(p,x); hold on; plot(y[1],y[2]); hold off; end; return ""; endfunction function beziertest ## The user clicks some points, which form the Bezier polygon. ## The program draws the Bezier curve setplot(-1,1,-1,1); xplot(-1,1); hold on; p=zeros(2,0); title("Mark points (click here for end)"); repeat m=mouse(); if (cols(p)>0) && (m[2]>1); break; endif; p=p|m'; plot(p[1],p[2]); end; t=linspace(0,1,300); s=bezier(p,t); color(2); plot(s[1],s[2]); hold off; return ""; endfunction function bezier3d (p) ## Shows a 3D Bezier curve and its polygon t=linspace(0,1,300); s=bezier(p,t); f=getframe(p[1],p[2],p[3]); h=holding(1); if !h; clg; endif; co=color(2); frame1(f); color(1); wire(p[1],p[2],p[3]); color(3); wire(s[1],s[2],s[3]); color(2); frame2(f); color(co); holding(h); return ""; endfunction function bezier3dtest (alpha=0.5,beta=0.5) ## Show a Beziercurve of dimension 3 p=[-1,-1,-1;0,-1,-1;1,0,0;1,1,0;0,1,1;-1,1,0]'; view(3,1.5,alpha,beta); bezier3d(p); return ""; endfunction function nurbs (p,b,t) ## Cumpute a rational Bezier curve with control points p ## and weights b. K=rows(p); pp=(p*dup(b,K))_b; s=bezier(pp,t); return s[1:K]/(dup(s[K+1],K)); endfunction function nurbstest ## Show some NURBS. p=[-1,0;0,1;1,0]'; b=[1,1,1]; bb=2^(-5:5); setplot(-1,1,0,2); clg; frame(); xplot(); hold on; linewidth(2); plot(p[1],p[2]); linewidth(1); hold off; t=linspace(0,1,300); loop 1 to cols(bb); b[2]=bb[#]; s=nurbs(p,b,t); hold on; plot(s[1],s[2]); hold off; end; return title("Quadratic NURBS"); endfunction function beziersurface (x,y,z,n=20) ## Compute a Bezier surface. Return {bx,by,bz}. t=linspace(0,0.99999,n); n=rows(x)-1; i=nonzeros(t~=1); T=dup(t/(1-t),n)'; b1=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b1=cumprod(b1); if (cols(i)>0); b1[i]=zeros(1,n)|1; endif; n=cols(x)-1; i=nonzeros(t~=1); T=dup(t/(1-t),n)'; b2=((1-t')^n)|(T*dup((n-(1:n)+1)/(1:n),cols(t))); b2=cumprod(b2); if (cols(i)>0); b2[i]=zeros(1,n)|1; endif; return {b1.x.b2',b1.y.b2',b1.z.b2'}; endfunction function beziersurftest ## Show a Bezier surface {x,y}=field(-1:0.5:1,-1:0.5:1); z=2*exp(-(0.5*x*x+y*y))-1; view(2.5,1.5,0.5,0.5); {xb,yb,zb}=beziersurface(x,y,z); wi=wirecolor(1); linewidth(3); wire(x[3:5,1:5],y[3:5,1:5],z[3:5,1:5]); hold on; linewidth(1); wirecolor(wi); solid(xb,yb,zb); wi=wirecolor(1); linewidth(3); wire(x[1:3,1:5],y[1:3,1:5],z[1:3,1:5]); hold on; linewidth(1); wirecolor(wi); hold off; return title("A Bezier surface"); endfunction function c1test ## Show how two bezier surfaces can be joined. x1=dup(-0.5:0.25:0.5,5); y1=dup([0,0,0,0,1],5); z1=dup(1:0.25:2,5)'; {xb1,yb1,zb1}=beziersurface(x1,y1,z1,10); x2=dup(-0.5:0.25:0.5,5); y2=(-ones(4,5))_[0,0,0,0,0]; z2=dup(-1:0.25:0,5)'; {xb2,yb2,zb2}=beziersurface(x2,y2,z2,10); x=zeros(5,5); y=x; z=x; x[1]=x1[1]; x[2]=x[1]-(x1[2]-x1[1]); x[5]=x2[5]; x[4]=x[5]+(x2[5]-x2[4]); x[3]=(x[4]+x[2])/2; y[1]=y1[1]; y[2]=y[1]-(y1[2]-y1[1]); y[5]=y2[5]; y[4]=y[5]+(y2[5]-y2[4]); y[3]=(y[4]+y[2])/2; z[1]=z1[1]; z[2]=z[1]-(z1[2]-z1[1]); z[5]=z2[5]; z[4]=z[5]+(z2[5]-z2[4]); z[3]=(z[4]+z[2])/2; {xb,yb,zb}=beziersurface(x,y,z,10); view(4,2,0.5,0.5); solid(xb1,yb1,zb1-1); hold on; solid(xb,yb,zb-1); solid(xb2,yb2,zb2-1); hold off; title("C1 continuity of Bezier surfaces"); wait(180); wi=wirecolor(1); linewidth(1); wire(x,y,z-1); linewidth(3); hold on; wire(x1,y1,z1-1); wire(x2,y2,z2-1); hold off; wirecolor(wi); linewidth(1); return title("C1 continuity of the Bezier grid"); endfunction .. EOF euler-1.61.0/progs/showdgl.e0000644000175000001440000000557607432261533014545 0ustar ericuserscomment Shows vectorfields and solutions of DGL. E.g. dgltest("x*sin(y)",-pi,pi,-pi,pi); endcomment function vectorfield (expr,x1,x2,y1,y2,nx=20,ny=20) ## Draw the vector field of a differential equation in x and y. ## expr must be the expression "f(x,y)", which computes the ## derivative of y(x) at x. setplot(x1,x2,y1,y2); x=linspace(x1,x2,nx-1); y=linspace(y1,y2,ny-1); {X,Y}=field(x,y); V=expreval(expr,X,y=Y); n=prod(size(X)); h=(x2-x1)/nx/4; v=redim(V,[n,1]); r=sqrt(v*v+1); x=redim(X,[n,1]); x=(x-h/r)|(x+h/r); y=redim(Y,[n,1]); y=(y-h*v/r)|(y+h*v/r); st=linestyle("->"); xplot(x,y); linestyle(st); return plot(); endfunction function dgltest (expr,x1,x2,y1,y2,nx=20,ny=20,n=10) ## Draw a vector field and let the user click to a starting point. ## expr must be an expression in x and y. ## x1,x2,y1,y2 are the rectangle, which will be drawn. ## nx,ny is the number of discretization points for the drawing. ## n is the number of discretization (times nx) for the DGL. vectorfield(expr,x1,x2,y1,y2,nx,ny); title("Click for a solution (>END<)"); repeat p=mouse(); if (p[2]>y2); break; endif; hold on; linewidth(2); t=p[1]:(x2-x1)/(nx*n):x2; plot(t,heun(expr,t,p[2])); t=p[1]:(x1-x2)/(nx*n):x1; plot(t,heun(expr,t,p[2])); linewidth(1); hold off; end; return plot(); endfunction function vectorfield2 (expr1,expr2,x1,x2,y1,y2,nx=20,ny=20) ## Draw the vector field of a differential equation in x and y. ## expr must be the expression "f(x,y)", which computes the ## derivative of y(x) at x. setplot(x1,x2,y1,y2); x=linspace(x1,x2,nx-1); y=linspace(y1,y2,ny-1); {X,Y}=field(x,y); V1=zeros(size(X)); V2=zeros(size(X)); loop 1 to prod(size(X)); V1{#}=expreval(expr1,X{#},y=Y{#}); V2{#}=expreval(expr2,X{#},y=Y{#}); end; n=prod(size(X)); h=(x2-x1)/nx/4; v1=redim(V1,[n,1]); v2=redim(V2,[n,1]); x=redim(X,[n,1]); x=(x-h*v1)|(x+h*v1); y=redim(Y,[n,1]); y=(y-h*v2)|(y+h*v2); st=linestyle("->"); xplot(x,y); linestyle(st); return plot(); endfunction function fff2test (X,Y,expr1,expr2) return [expreval(expr1,Y[1],y=Y[2]),expreval(expr2,Y[1],y=Y[2])] endfunction function dgl2test (expr1,expr2,x1,x2,y1,y2,nx=20,ny=20,t=0:0.01:5) ## Draw a vector field and let the user click to a starting point. ## x1,x2,y1,y2 are the rectangle, which will be drawn. ## expr1 is the x-value of the derivative and expr2 its y-value. ## Both expressions must be expressions in x and y. ## E.g., v'=f(v), with f([x,y])=[expr1,expr2]. ## nx,ny is the number of discretization points for the drawing. ## t determines, where the ODE will be evaluated. vectorfield2(expr1,expr2,x1,x2,y1,y2,nx,ny); title("Click for a solution (>END<)"); repeat p=mouse(); if (p[2]>y2); break; endif; hold on; linewidth(2); y=heun("fff2test",t,p;expr1,expr2); plot(y[1],y[2]); linewidth(1); hold off; end; return plot(); endfunction dgltest("x*sin(y)",-pi,pi,-pi,pi); dgl2test("y","-x",-1,1,-1,1); euler-1.61.0/progs/opti.e0000644000175000001440000000207107417015640014033 0ustar ericusers.. Some optimization procedures function simplex1 (A,b,z) ## Minimize z.x=b under the conditions A.x=b, x>=0. ## A must have full column rank. {Res,ri,ci,det}=lu(A); c1=nonzeros(ci); c2=nonzeros(ci==0); if cols(c1)!=rows(A); error("Rank of A to low"); endif; B=A[:,c1]; {x,f}=simplex(B\A[:,c2],B\b,z[c2]-z[c1].A[:,c2]); if f==0; xr=zeros(size(z)); xr[:,c2]=x'; xr[c1]=(B\(b-A[:,c2].x))'; endif; return {xr',f}; endfunction function intsimplex (A,b,z,alpha=1e30) ## Minimize z.x=b under the conditions A.x<=b, x integer, x>=0. {x,r}=simplex(A,b,z); n=cols(A); a=z.x; if r==0; if a>alpha; return {x,-2,a}; endif; loop 1 to n; if !(x[#]~=round(x[#],0)); {x1,r1,a1}=intsimplex(A_((1:n)==#),b_floor(x[#]),z,alpha); {x2,r2,a2}=intsimplex(A_-((1:n)==#),b_-ceil(x[#]),z,alpha); if (r1==0 && z.x1=0. return intsimplex(A_-A,b_-b,z); endfunction .. EOF euler-1.61.0/progs/3body.en0000644000175000001440000000070407417015640014257 0ustar ericusers% This is a demonstration for the three body problem. Three bodies % of equal weight are moving in space. % % The differential equation is solved with an adaptive procedure. % But even that is not perfect. >load "3body" % First a test position. >test % Now you may set the positions and initial vectors. Click with % the mouse to the position of you planet and then to the end % of the speed vector. Use vectors of approximate length 1. >setplanets > euler-1.61.0/progs/histo.e0000644000175000001440000000134507417015640014211 0ustar ericuserscomment Histogram plots endcomment function histogram (d,n=10,grid=0,ticks=1,width=4,integer=0) ## Plots a histogram of the data d with n intervals. ## The minimal and maximal value of form an interval, ## which is divided into n points. The number of data ## in each of the n subintervals is displayed. ## d is an 1xm vector. mi=min(d); ma=max(d); if mi~=ma; ma=mi+1; endif; if integer; n=floor(ma-mi)+1; ma=ma+0.9999; endif; x=zeros(1,2*n+2); y=zeros(1,2*n+2); h=(d-mi)/(ma-mi)*n; c=count(h,n+1); c[n]=c[n]+c[n+1]; c=c[1:n]; y[2:2:2*n]=c; y[3:2:2*n+1]=c; xx=linspace(mi,ma,n); x[2:2:2*n]=xx[1:n]; x[3:2:2*n+1]=xx[2:n+1]; x[1]=mi; x[2*n+2]=ma; w=linewidth(width); xplot(x,y,grid,ticks); linewidth(w); return plot; endfunction euler-1.61.0/progs/chebysh.e0000644000175000001440000000201307417015640014501 0ustar ericuserscomment Tschebycheff Polynome T(n,x); Computes T_n(x) Trek(n,x); a recursiv version (for test purposes) Tpoly(n); Computes the Chebyshev polynomials T_n endcomment function T(n,x) ## T(n,x) computes T_n(x) the trigonometric way. s=size(x,n); y=x; signum=-mod(n,2)*2+1; loop 1 to s(2); z=x{#}; if z>1; w=(z+sqrt(z^2-1))^n{#}; y{#}=(w+1/w)/2; else; if z<-1; w=(-z+sqrt(z^2-1))^n{#}; y{#}=signum{#}*(w+1/w)/2; else; y{#}=cos(n{#}*acos(z)); endif; endif; end; return y; endfunction function Trek(n,x) ## Computes the Chebyshev polynomial via the recursion formula. if (n==0); return ones(size(x)); endif; if (n==1); return x; endif; z=ones(size(x))_x; loop 3 to n+1; z=z_(2*x*z[#-1]-z[#-2]); end; return z[n+1]; endfunction function Tpoly (n) ## Computes the coefficients of the n-th chebyshev polynomial ## recursively. t0=[1]; t1=[0,1]; if (n==0); return t0; endif; if (n==1); return t1; endif; loop 2 to n t=(0|2*t1[1:#])-(t0|[0,0]); t0=t1; t1=t; end; return t; endfunction euler-1.61.0/progs/util.e0000644000175000001440000014025410330756113014036 0ustar ericuserscomment Utilities endcomment _view([7,2.5,0.4,0.4]); Epsilon=epsilon(); ResetEpsilon=epsilon(); ResetView=_view(); Pi=pi(); I=1i; vertical=0; E=2.718281828459045235360287; eulergamma=0.577215664901532860606512; function reset ## reset() resets epsilon and some other graphics things, ## like the default view, the huecolor and the linewidth. ## Also it calls shortformat. global ResetEpsilon,ResetView; setepsilon(ResetEpsilon); clip([0,0,1023,1023]); style(""); hold off; color(1); shrinkwindow(); shortformat(); linewidth(1); view(ResetView); huecolor(1); return 0; endfunction function resetepsilon ## reset the default epsilon and return the current epsilon. global ResetEpsilon; return setepsilon(ResetEpsilon); endfunction function wait (d=300) ## waits for a key (at most 5 min) return _wait(d); endfunction function longformat ## longformat() sets a long format for numbers ## See: shortformat, longestformat return goodformat([24 12]); endfunction function longestformat ## longformat() sets a long format for numbers ## See: shortformat, longformat return goodformat([32 16]); endfunction function shortformat ## shortformat() sets a short format for numbers ## See: longformat, longestformat return goodformat([14 5]); endfunction; function fracformat (n=20, eps=epsilon) ## Activates the fractional format return _fracformat([n,eps]); endfunction function linspace (a,b,n) ## linspace(a,b,n) generates n+1 linear spaced points in [a,b]. if a~=b; return a; endif; r=a:(b-a)/n:b; r[n+1]=b; return r; endfunction function equispace (a,b,n) ## equispace(a,b,n) generates n+1 euqidistribution (acos) spaced values ## in [a,b]. m=(1-cos(0:pi()/n:pi()))/2; return a+(b-a)*m; endfunction function length (v) ## length(v) returns the length of a vector return max(size(v)); endfunction function polydif (p) ## polydif(p) returns the polynomial p' n=cols(p); if (n==1); return 0; endif; return p[2:n]*(1:n-1); endfunction function isstring (x) ## Test, if x is a string. return typeof(x)==8; endfunction function writeform (x) if isreal(x); return printf("%25.16e",x); endif; if iscomplex(x); return printf("%25.16e",re(x))|printf("+%25.16ei",im(x)); endif; if isstring(x); return x; endif; error("Cannot print this!"); endfunction function varwrite (x,s="") ## Write a variable to ouput in EULER syntax. Use s as the name. ## Output looks like s=... if s==""; s=name(x); endif; si=size(x); if max(si)==1; s|" = "|writeform(x)|";", return 0; endif; s|" = [ .." for i=1 to si[1]; for j=1 to si[2]-1; writeform(x[i,j])|",", end; if i==si[1]; writeform(x[i,si[2]])|"];", else; writeform(x[i,si[2]])|";", endif; end; return 0 endfunction function expreval (expr,x) ## Evaluate the expression. Use global variables. useglobal; return evaluate(expr); endfunction .. ### plot things ### logredraw=1; subwindows=zeros([20,4]); function figure(n) ## figure([nr,nc]) divides the graph window into nr rows x nc columns ## of subplots ## figure(n) sets the current drawing window to the nth subplot counting ## by rows. global subwindows,logredraw; if rows(n)==1 && cols(n)==2; nr=n[1];nc=n[2]; w=window(); wd=textwidth(); ht=textheight(); hr=floor(1024/nr);wc=floor(1024/nc); for r=1 to nr for c=1 to nc w=[8*wd+(c-1)*wc,1.5*ht+(r-1)*hr,c*wc-2*wd,r*hr-3*ht]; subwindows[(r-1)*nc+c]=w; end; end; hold off; logredraw=1; return _window(subwindows[1]); else hold on; logredraw=1; return _window(subwindows[n]); endif endfunction function toscreen2 (x,y) ## Convert the x-y-coordinates v[1],v[2] to screen coordinates, ## from 0..1024. Useful for Labels. p=plot(); w=window(); return {w[1]+(x-p[1])/(p[2]-p[1])*(w[3]-w[1]), .. w[2]-(y-p[4])/(p[4]-p[3])*(w[4]-w[2])}; endfunction function toscreen () ## Convert the x-y-coordinates v[1],v[2] to screen coordinates, ## from 0..1024. Useful for Labels. if argn()==2; return toscreen2(arg1,arg2); endif; if argn()<>1; error("Wrong arguments for toscreen"); endif; v=arg1; {c,r}=toscreen2(v[1],v[2]); return [c,r] endfunction function fromscreen (c,r) ## Convert the screen coordinates v[1],v[2] to x-y-coordinates, ## Returns {x,y} p=plot(); w=window(); return {p[1]+(c-w[1])/(w[3]-w[1])*(p[2]-p[1]), .. p[3]+(w[4]-r)/(w[4]-w[2])*(p[4]-p[3])} endfunction function label (t,x,y,offset=0) ## Label the x-y-value with the text t. ## offset is in screen coordinates 0..1024. c=toscreen([x,y]); c[1]=c[1]+textwidth()/4+offset; c[2]=c[2]+offset; return text(t,c) endfunction function plotbar1 (x,y,w,h) ## Plots a single bar with x,y,w,h in plot coordinates. ## use barstyle and barcolor to modify the bar. ## The parameters may be vectors. a=toscreen([x,y+h]); b=toscreen([x+w,y]); bar(a|(b-a)); return 0; endfunction function plotbar (x,y,w,h) ## Plots a bars with x,y,w,h in plot coordinates. ## use barstyle and barcolor to modify the bar. ## The parameters may be vectors. if !holding(); clg; endif; map("plotbar1",x,y,w,h); return plot(); endfunction function xplotbar (x,y,w,h,st="#O") ## Plots a bar with x,y,w,h in plot coordinates. ## Uses the plot coordinates from the last plot! ## Use setplot to set new plot coordinates. ## Draws coordinates below the bar. ## use barstyle and barcolor to modify the bar. if !holding(); clg; endif; frame; xplot(); stold=barstyle(st); hold; plotbar(x,y,w,h); hold; barstyle(stold); return plot(); endfunction; function scalematrix(A) ## Scales a matrix A, so that its value are in the range from 0 to 1. e=extrema(A)'; mi=min(e[1]); ma=max(e[3]); if ma~=mi; ma=mi+1; endif; return (A-mi)/(ma-mi); endfunction function select ## Returns coordinates {x,y} of mouse clicks, until the user clicked ## above the plot window. p=plot(); x=[]; repeat m=mouse(); if m[2]>p[4]; break; endif; h=holding(1); mark(m[1],m[2]); holding(h); x=x_m; end; x=x'; return {x[1],x[2]} endfunction function title (text) ## title(text) plots a title to the grafik window. ctext(text,[512 0]); return text; endfunction function textheight ## textheight() returns the height of a letter. h=textsize(); return h[2]; endfunction function textwidth ## textwidth() returns the width of a letter. h=textsize(); return h[1]; endfunction function fullwindow ## fullwindow() takes the full size (besides a title) for the ## plots. global logredraw; h=textsize(); logredraw=1; return _window([12,textheight()*1.5,1011,1011]); endfunction function shrinkwindow ## shrinkwindow() shrinks the window to allow labels. global vertical,logredraw; h=textheight(); b=textwidth(); logredraw=1; if vertical; return _window([2*h,1.5*h,1023-2*b,1023-3*h]); else; return _window([8*b,1.5*h,1023-2*b,1023-3*h]); endif; endfunction function setplot ## setplot([xmin xmax ymin ymax]) sets the plot coordinates and holds ## the plot. Also setplot(xmin,xmax,ymin,ymax). ## setplot() resets it. if argn()==4; return _setplot([arg1,arg2,arg3,arg4]); else; if argn()==0; scaling(1); else; _setplot(arg1); endif; endif; return plot(); endfunction function ticks (aa=0,bb=0) ## returns the proper ticks to be used for intervals [a,b] and ## the factor f of the ticks. if argn==2; a=aa; b=bb; elseif argn==1; a=min(aa); b=max(aa); else error("Wrong arguments for ticks"); endif; if (b>1e30); b=1e30; endif; if (a<-1e30); a=-1e30; endif; if (a>=b); b=a+1; endif; tick=10^floor(log(b-a)/log(10)-0.4); if b-a>10*tick; tick1=tick*2; else; tick1=tick; endif; if (tick>0.000001) && (tick<10000); tick=1; endif; return {(floor(a/tick1)+1:ceil(b/tick1)-1)*tick1,tick} endfunction function xplot (x=0,y=0,grid=1,ticks=1) ## xplot(x,y) or xplot(y) works like plot, but shows axis ticks. ## xplot() shows only axis ticks and the grid. if argn()>0; if argn()==1; if iscomplex(x); y=im(x); xh=re(x); else y=x; xh=1:cols(y); endif; else; xh=x; endif; p=plotarea(xh,y); if !holding(); clg; frame(); endif; else p=plot(); endif; lw=linewidth(1); {t,f}=ticks(p[1],p[2]); xgrid(t,f,grid,ticks); {t,f}=ticks(p[3],p[4]); ygrid(t,f,grid,ticks); linewidth(lw); if argn()>0; ho=holding(1);plot(xh,y);holding(ho); endif; return p; endfunction function xmark (x=0,y=0,grid=1,ticks=1) ## xmark(x,y) or xmark(y) works like plot, but shows axis ticks. ## xmark() shows only axis ticks and the grid. if !holding(); clg; frame(); endif; if argn()==1; if iscomplex(x); y=im(x); xh=re(x); else; y=x; xh=1:cols(y); endif; else; xh=x; endif; p=plotarea(xh,y); {t,f}=ticks(p[1],p[2]); xgrid(t,f,grid,ticks); {t,f}=ticks(p[3],p[4]); ygrid(t,f,grid,ticks); ho=holding(1); p=mark(xh,y); holding(ho); return p; endfunction function setplotm ## The user may choose the plotting coordinates with the mouse. ## Returns the plot coordinates. h=holding(1); k1=mouse(); mark(k1[1],k1[2]); k2=mouse(); mark(k2[1],k2[2]); kl=min(k1,k2); ku=max(k1,k2); c=color(2); plot([kl[1],kl[1],ku[1],ku[1],kl[1]],[kl[2],ku[2],ku[2],kl[2],kl[2]]); color(c); setplot(kl[1],ku[1],kl[2],ku[2]); holding(h); return plot(); endfunction function fplot (ffunction,a=0,b=0,c=0,d=0,n=200) ## fplot("f",a,b,c,d,n;...) plots the function f(x,...) in [a,b]. ## fplot("f") or fplot("f",,,,n;...) plots f in the old interval. ## If c10000) || (abs(x)<0.00001); return printf("%12.5e",x); else return printf("%10.5f",x); endif; endfunction function niceform (x) ## Return a string, containing a nice print of x. y=round(x,10); return printf("%g",y); endfunction function xgrid(xx,f=1,grid=1,ticks=1,color=3,xt="default") ## xgrid([x0,x1,...]) draws vertical grid lines on the plot window at ## x0,x1,... ## xgrid([x0,x1,...],f) additionally writes x0/f to the axis. c=plot(); n=cols(xx); s=scaling(0); h=holding(1); w=window(); st=linestyle("."); wi=linewidth(1); color(color); ht=textheight(); if isstring(xt); xt=xx; endif; str=""; loop 1 to n; x=xx[#]; if (x<=c[2])&&(x>=c[1]); if grid; _plot([x,x],[c[3],c[4]]); endif; if ticks; col=w[1]+(x-c[1])/(c[2]-c[1])*(w[3]-w[1]); stra=niceform(xt[#]/f); if !(stra==str && #=c[3])&&(y<=c[4]); if ticks; row=w[4]-(y-c[3])/(c[4]-c[3])*(w[4]-w[2]); if vertical; _vcutext(niceform(y,f),[w[1]-0.2*ht,row]); else _rtext(niceform(yt[#]/f),[w[1]-wd/2,row-ht/2]); endif; endif; if grid; _plot([c[1],c[2]],[y,y]); endif; endif; end; if ticks && !(f~=1); _text("* "|printscale(f),[w[1]-6*wd,0]); endif; linestyle(st); linewidth(wi); color(1); holding(h); scaling(s); return 0; endfunction function xrange() ## Writes the range of x below the x axis. c=plot(); s=scaling(0); h=holding(1); w=window(); ht=textheight(); text(niceform(c[1]),[w[1],w[4]+0.2*ht]); rtext(niceform(c[2]),[w[3],w[4]+0.2*ht]); holding(h); scaling(s); return 0; endfunction function xlabel(text,l=1) ## Puts the label text at the x-axis at point l in [0,1]. w=window(); ht=textheight(); .. ctext(text,[w[1]+l*(w[3]-w[1]),w[4]+0.2*ht]); _ctext(text,[(w[1]+w[3])/2,w[4]+1.5*ht]); return 0; endfunction function yrange() ## Writes the range of y besides the y axis. c=plot(); s=scaling(0); h=holding(1); w=window(); wd=textwidth(); ht=textheight(); rtext(niceform(c[4]),[w[1]-wd/2,w[2]]); rtext(niceform(c[3]),[w[1]-wd/2,w[4]-ht]); holding(h); scaling(s); return 0; endfunction function ylabel(text,l=1) ## Puts the label text at the x-axis at point l in [0,1]. w=window(); wd=textwidth(); ht=textheight(); .. rtext(text,[w[1]-wd/2,w[2]+l*(w[4]-w[2])-ht/2]); _vcutext(text,[w[1]-8*wd+5,(w[2]+w[4])/2]); return 0; endfunction function plot (x=0,y=0) ## plot(x,y) plots the values (x(i),y(i)) with the current style. ## If x is a matrix, y must be a matrix of the same size. ## The plot is then drawn for all rows of x and y. ## The plot is scaled automatically, unless hold is on. ## plot(x,y) and plot() return [x1,x2,y1,y2], where [x1,x2] is the range ## of the x-values and [y1,y2] of the y-values. ## plot(x) is the same as plot(1:cols(x),x). if !holding() && argn()>0; clg; endif; if argn()==1; if iscomplex(x); oldclip = clip(window()); res = _plot(re(x),im(x)); clip(oldclip); return res; else oldclip = clip(window()); res = _plot(1:cols(x),x); clip(oldclip); return res; endif; else if argn()==2; oldclip=clip(window()); res = _plot(x,y); clip(oldclip); return res; else return _plot(); endif; endfunction function mark (x=0,y=0) ## mark(x,y) plots markers at (x(i),y(i)) according the the actual style. ## Works like plot. if !holding() && argn()>0; clg; endif; if argn()==1; if iscomplex(x); oldclip = clip(window()); res = _mark(re(x),im(x)); clip(oldclip); return res; else oldclip = clip(window()); res = _mark(1:cols(x),x); clip(oldclip); return res; endif; else if argn()==2; oldclip = clip(window()); res = _mark(x,y); clip(oldclip); return res; else return _plot(); endif; endfunction function cplot (z) ## cplot(z) plots a grid of complex numbers. plot(re(z),im(z)); s=scaling(0); h=holding(1); w=z'; plot(re(w),im(w)); holding(h); scaling(s); return plot(); endfunction function plotwindow ## plotwindow() sets the plot window to the screen coordinates. w=window(); setplot(w[1],w[3],w[2],w[4]); return plot() endfunction function density (x,f=1) ## density(x,1) makes density plot of the values in the matrix x ## scaled to fit into [0,f]. if f==0; _density(x); return x; else; ma=max(max(x)'); mi=min(min(x)'); h=ma-mi; if h~=0; h=1; endif; xx=(x-mi)/h*f*0.99; _density(xx); return xx; endif; endfunction function solidhue (x,y,z,h,f=1) ## solidhue(x,y,z,h) makes a shaded solid 3D-plot of x,y,z. ## h is the shading and should run between 0 and 1. ## f determines, if h is scaled to fit in between 0 and f. if argn()==1; return _solidhue(x,y,z,h); endif; ma=max(max(h)'); mi=min(min(h)'); delta=ma-mi; if delta~=0; delta=1; endif; hh=(h-mi)/delta*f*0.9999; return _solidhue(x,y,z,hh); endfunction function fillcolor (c1=0,c2=0) ## Set the fillcolor for the fore- and background of 3D plots. ## fillcolor(c1,c2) or fillcolor() returns the colors [c1,c2]. if argn()==0; return _fillcolor(); else if argn==1; return _fillcolor(c1); endif; endif; return _fillcolor([c1,c2]); endfunction function mark3 (x,y,z) ## Plots points in three dimensions. ## x,y,z must be 1xn vectors. {c0,r0}=project(x,y,z); {x0,y0}=fromscreen(c0,r0); return mark(x0,y0); endfunction function stereo (fff) ## Calls the function fff, which must be the name of ## a 3D plot command, and does it twice in two different ## windows. Many people are able to view a 3D picture. ## Example: stereo("f3dplot","x*y^2"); hold on; clg; s=300; m=510; win=window(); v=view(); window(m-s,m-s/2,m,m+s/2); w=v; w[3]=v[3]-0.05; view(w); fff(args(2)); window(m,m-s/2,m+s,m+s/2); w=v; w[3]=v[3]+0.05; view(w); fff(args(2)); window(win); hold off; return "" endfunction function rotate (fff,d=0.01,n=120) ## Shows a rotating animation of the plot fff, ## which must be a 3D plot command. ## Example: rotate("f3dplot";"x*y^2"); clg; title("Creating Animation"); beginpages(); t=linspace(0,2*pi,n); v=view(); loop 1 to cols(t); v[3]=t[#]; view(v); fff(args()); end; endpages(); animate(d); return pages(); endfunction function animate (d=0.01) ## Animate the pages with delay d. repeat playpages(d); if testkey(); return pages(); endif; end; return pages(); endfunction .. ### log plots ### function xticks (aa=0,bb=0) if argn==2; a=aa; b=bb; elseif argn==1; a=min(aa); b=max(aa); else error("Wrong arguments for ticks"); endif; if (b>1e30); b=1e30; endif; if (a<-1e30); a=-1e30; endif; if (a>=b); b=a+1; endif; tick=10^floor(log(b-a)/log(10)-0.4); if b-a>10*tick; tick1=tick*2; else; tick1=tick; endif; if (tick>0.001) && (tick<1000); tick=1; endif; return (floor(a/tick1))*tick1:tick1:(ceil(b/tick1))*tick1; endfunction; function xlogticks(expi,expf,base) x=[ ]; for k = floor(expi) to floor(expf); x = x | logbase(1:base,base) + k; end; return x; endfunction; function xloggrid() endfunction function xlogplot(x=1,y=0,xbase=10) ## xlogplot draws y(x) in a semilog paper with base xbase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); if holding() && !logredraw hd=holding(); p=plot(); else expi=floor(logbase(min(xe),xbase)); expf=ceil(logbase(max(xe),xbase)); xt=xlogticks(expi,expf,xbase); if rows(ye)==1 yt=xticks(min(ye),max(ye)); elseif rows(ye)>1 yt=xticks(min(min(ye)'),max(max(ye)')); endif; p=setplot([expi,expf,min(yt),max(yt)]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt); plot([expi,expf],[yt[i],yt[i]]); d=toscreen([expi,yt[i]]); rtext(printf("%g",yt[i]),[d[1]-w,d[2]-h/2]); end; for i=1 to length(xt)-xbase; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expi to expf; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif; plot(xl,ye); holding(hd); logredraw=0; endif; return p; endfunction; function ylogplot(x=0,y=1,ybase=10) ## xlogplot draws y(x) in a semilog paper with base ybase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; yl=logbase(ye,ybase); if holding && !logredraw hd=holding; p=plot(); else expi=floor(logbase(min(ye),ybase)); expf=ceil(logbase(max(ye),ybase)); xt=xticks(min(xe),max(xe)); yt=xlogticks(expi,expf,ybase); p=setplot([min(xt),max(xt),expi,expf]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt)-ybase; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expi to expf; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; for i=1 to length(xt); plot([xt[i],xt[i]],[p[3],p[4]]); d=toscreen([xt[i],p[3]]); ctext(printf("%g",xt[i]),[d[1],d[2]+h/2]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif plot(xe,yl); holding(hd); logredraw=0; endif; return p; endfunction; function xylogplot(x=1,y=1,xbase=10,ybase=10) ## xylogplot draws y(x) in a loglog paper with base xbase and ybase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); yl=logbase(ye,ybase); if holding() && !logredraw hd=holding(); p=plot(); else expix=floor(logbase(min(xe),xbase)); expfx=ceil(logbase(max(xe),xbase)); expiy=floor(logbase(min(ye),ybase)); expfy=ceil(logbase(max(ye),ybase)); xt=xlogticks(expix,expfx,xbase); yt=xlogticks(expiy,expfy,ybase); p=setplot([expix,expfx,expiy,expfy]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(xt)-xbase; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expix to expfx; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; for i=1 to length(yt)-ybase; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expiy to expfy; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif; plot(xl,yl); holding(hd); logredraw=0; endif; return p; endfunction; function xlogmark(x=1,y=0,xbase=10) ## xlogmark draws marks at the specified points in a semilog paper with base xbase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); if holding() && !logredraw hd=holding(); p=plot(); else expi=floor(logbase(min(xe),xbase)); expf=ceil(logbase(max(xe),xbase)); xt=xlogticks(expi,expf,xbase); if rows(ye)==1 yt=xticks(min(ye),max(ye)); elseif rows(ye)>1 yt=xticks(min(min(ye)'),max(max(ye)')); endif; p=setplot([expi,expf,min(yt),max(yt)]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt); plot([expi,expf],[yt[i],yt[i]]); d=toscreen([expi,yt[i]]); rtext(printf("%g",yt[i]),[d[1]-w,d[2]-h/2]); end; for i=1 to length(xt)-xbase; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expi to expf; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif; mark(xl,ye); holding(hd); logredraw=0; endif; return p; endfunction; function ylogmark(x=0,y=1,ybase=10) ## xlogmark draws y(x) in a semilog paper with base ybase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; yl=logbase(ye,ybase); if holding && !logredraw hd=holding; p=plot(); else expi=floor(logbase(min(ye),ybase)); expf=ceil(logbase(max(ye),ybase)); xt=xticks(min(xe),max(xe)); yt=xlogticks(expi,expf,ybase); p=setplot([min(xt),max(xt),expi,expf]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(yt)-ybase; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expi to expf; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; for i=1 to length(xt); plot([xt[i],xt[i]],[p[3],p[4]]); d=toscreen([xt[i],p[3]]); ctext(printf("%g",xt[i]),[d[1],d[2]+h/2]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif mark(xe,yl); holding(hd); logredraw=0; endif; return p; endfunction; function xylogmark(x=1,y=1,xbase=10,ybase=10) ## xylogmark draws y(x) points in a loglog paper with base xbase and ybase global logredraw; if argn()==0; p=plot(); else if !holding();clg;endif; if iscomplex(x); xe=abs(x); else xe=x; endif; if iscomplex(y); ye=abs(y); else ye=y; endif; xl=logbase(xe,xbase); yl=logbase(ye,ybase); if holding() && !logredraw hd=holding(); p=plot(); else expix=floor(logbase(min(xe),xbase)); expfx=ceil(logbase(max(xe),xbase)); expiy=floor(logbase(min(ye),ybase)); expfy=ceil(logbase(max(ye),ybase)); xt=xlogticks(expix,expfx,xbase); yt=xlogticks(expiy,expfy,ybase); p=setplot([expix,expfx,expiy,expfy]); h=textheight();w=textwidth(); hd=holding(1); ls=linestyle("."); lw=linewidth(1); c=color(1); for i=1 to length(xt)-xbase; plot([xt[i],xt[i]],[p[3],p[4]]); end; for i=expix to expfx; d=toscreen([i,p[3]]); .. ctext(printf("%g",xbase)|"^"|printf("%g",i),[d[1],d[2]+h/2]); rtext(printf("%g",xbase),[d[1]+w,d[2]+0.75*h]); text(printf("%g",i),[d[1]+w,d[2]+h/4]); end; for i=1 to length(yt)-ybase; plot([p[1],p[2]],[yt[i],yt[i]]); end; for i=expiy to expfy; d=toscreen([p[1],i]); .. rtext(printf("%g",ybase)|"^"|printf("%g",i),[d[1]-w/2,d[2]-h/2]); rtext(printf("%g",ybase),[d[1]-40,d[2]-h/2]); text(printf("%g",i),[d[1]-40,d[2]-h]); end; color(c); linewidth(lw); linestyle(ls); frame(); endif; mark(xl,yl); holding(hd); logredraw=0; endif; return p; endfunction; function logspace(a,b,n=50,base=10) ## logspace(a,b,n) generates n log spaced points in [a,b]. ## base specifies the based log used. if a>b tmp=a; a=b; b=tmp; endif; return base^(linspace(logbase(a,base),logbase(b,base),n-1)); endfunction .. ### linear algebra things ### function id (n) ## id(n) creates a nxn identity matrix. return diag([n n],0,1); endfunction function inv (a) ## inv(a) produces the inverse of a matrix. return a\id(cols(a)); endfunction function fit (a,b) ## fit(a,b) computes x such that ||a.x-b||_2 is minimal. ## a is a nxm matrix, and b is a mx1 vector. ## For badly conditioned a, you should use svdsolve instead. A=conj(a'); return symmult(A,a)\(A.b) endfunction function norm (A) ## Compute the maximal row sum of A return max(sum(abs(A))'); endfunction function kernel (A) ## kernel(a) computes the kernel of the quadratic matrix a. ## You might add eps=..., if a is almost regular. if isvar("eps"); localepsilon(eps); endif; a=A/norm(A); {aa,r,c,d}=lu(a); n=size(a); nr=size(r); if nr[2]==n[2]; return zeros([1,n[2]])'; endif; if nr[2]==0; return id(n[2]); endif; c1=nonzeros(c); c2=nonzeros(!c); b=lusolve(aa[r,c1],a[r,c2]); m=size(b); x=zeros([n[2] m[2]]); x[c1,:]=-b; x[c2,:]=id(cols(c2)); return x endfunction function image (A) ## image(a) computes the image of the quadratic matrix a. if isvar("eps"); localepsilon(eps); endif; a=A/norm(A); {aa,r,c,d}=lu(a); return a[:,nonzeros(c)); endfunction function det (a) ## det(A) returns the determinant of A if isvar("eps"); localepsilon(eps); endif; r=norm(a); {aa,rows,c,d}=lu(a/r); return d*r^cols(a); endfunction function eigenremove(l) ## helping function. return l(nonzeros(!(l[1]~=l))) endfunction function eigenvalues (a) ## eigenvalues(A) returns the eigenvalues of A. return polysolve(charpoly(a)); endfunction function eigenspace (a,l) ## eigenspace(A,l) returns the eigenspace of A to the eigenvaue l. k=kernel(a-l*id(cols(a))); if k==0; error("No eigenvalue found!"); endif; si=size(k); loop 1 to si[2]; x=k[:,index()]; k[:,index()]=x/sqrt(x'.x); end; return k; endfunction function eigen (A) ## eigen(A) returns the eigenvectors and a basis of eigenvectors of A. ## {l,x,ll}=eigen(A), where l is a vector of eigenvalues, ## x is a basis of eigenvectors, ## and ll is a vector of distinct eigenvalues. l=eigenvalues(A); s=eigenspace(A,l[1]); si=size(s); v=dup(l[1],si[2])'; vv=l[1]; l=eigenremove(l,si[2]); repeat; if min(size(l))==0; break; endif; ll=l[1]; sp=eigenspace(A,ll); si=size(sp); l=eigenremove(l,si[2]); s=s|sp; v=v|dup(ll,si[2])'; vv=vv|ll; end; return {v,s,vv} endfunction hilbertfactor=3*3*3*5*5*7*11*13*17*19*23*29; function hilbert (n,f=hilbertfactor) ## hilbert(n) produces the nxn-Hilbert matrix. ## It is accurate up to the 30x30 Hilbert matrix. {i,j}=field(1:n,1:n); return f/(i+j-1); endfunction function hilb (n,f=hilbertfactor) return hilbert(n,f); endfunction .. ### polynomial fit ## function polyfit (xx,yy,n) ## fit(x,y,degree) fits a polynomial in L_2-norm to (x,y). A=ones(size(xx))_dup(xx,n); A=cumprod(A'); return fit(A,yy')'; endfunction .. ### Some Functions ### function field (x,y) ## field(x,y) returns {X,Y} such that the X+i*Y is a rectangular ## grid in C containing the points x(n)+i*y(m). x and y must be ## 1xN and 1xM vectors. return {dup(x,cols(y)),dup(y',cols(x))}; endfunction function totalsum (A) ## totalsum(a) computes the sum of all elements of a return sum(sum(A)'); endfunction function totalmin (A) ## Returns the total minimum of the elements of a return min(min(A)')' endfunction function totalmax (A) ## Returns the total maximum of the elements of a return max(max(A)')' endfunction function sinh ## sinh(x) = (exp(x)-exp(-x))/2 h=exp(arg1); return (h-1/h)/2; endfunction function cosh ## cosh(x) = (exp(x)+exp(-x))/2 h=exp(arg1); return (h+1/h)/2; endfunction function arsinh ## arsinh(z) = log(z+sqrt(z^2+1)) return log(arg1+sqrt(arg1*arg1+1)) endfunction function arcosh ## arcosh(z) = log(z+(z^2-1)) return log(arg1+sqrt(arg1*arg1-1)) endfunction function logbase (x,a) ## returns the logarithm to base a return log(x)/log(a); endfunction function log10 (x) ## returns the logarithm to base 10 return log(x)/log(10) endfunction function beta (a,b) ## returns the beta function return gamma(a)*gamma(b)/gamma(a+b); endfunction function betai (x,a,b) ## returns the incomplete beta function. return map("betai1",x,a,b); endfunction .. ### Differential equations ### function heun (ffunction,t,y0) ## y=heun("f",x,y0;...) solves the differential equation y'=f(x,y). ## f(x,y;...) must be a function. ## y0 is the starting value. ## ffunction may be an expression in x and y. n=cols(t); y=dup(y0,n); if isfunction(ffunction) loop 1 to n-1; h=t[#+1]-t[#]; yh=y[#]; xh=t[#]; k1=ffunction(xh,yh,args()); k2=ffunction(xh+h/2,yh+h/2*k1,args()); k3=ffunction(xh+h,yh+2*h*k2-h*k1,args()); y[#+1]=yh+h/6*(k1+4*k2+k3); end; else loop 1 to n-1; h=t[#+1]-t[#]; yh=y[#]; xh=t[#]; k1=expreval(ffunction,xh,y=yh); k2=expreval(ffunction,xh+h/2,y=yh+h/2*k1); k3=expreval(ffunction,xh+h,y=yh+2*h*k2-h*k1); y[#+1]=yh+h/6*(k1+4*k2+k3); end; endif; return y'; endfunction function fdgleval (x,y,expr) return evaluate(expr); endfunction function runge (ffunction,t,y0,steps=1) ## y=runge("f",x,y0;...) solves the differential equation y'=f(x,y). ## f(x,y;...) must be a function. ## y0 is the starting value. ## ffunction may be an expression in x and y. ## steps are intermediate steps between the t[i]. ## It is fastest to use a 1x2 vector t and many steps, ## but will not yield the intermediate values. ## Returns the values y(t). y=dup(y0,cols(t)); if isfunction(ffunction); loop 2 to cols(t); y[#]=runge1(ffunction,t[#-1],t[#],steps,y[#-1],args()); end; else loop 2 to cols(t); y[#]=runge1("fdgleval",t[#-1],t[#],steps,y[#-1],ffunction); end; endif; return y'; endfunction function adaptiverunge (ffunction,t,y0,eps=epsilon(),step=0.1) ## y=adaptiverunge("f",x,y0;...) solves the differential ## equation y'=f(x,y) with adaptive step size. ## f(x,y;...) must be a function. ## y0 is the starting value. ## ffunction may be an expression in x and y. ## steps are intermediate steps between the t[i]. ## It is fastest to use a 1x2 vector t and many steps, ## but will not yield the intermediate values. ## Returns the values y(t). y=dup(y0,cols(t)); if isfunction(ffunction); loop 2 to cols(t); {y[#],step}=runge2(ffunction,t[#-1],t[#],y[#-1],eps,step,args()); end; else loop 2 to cols(t); {y[#],step}=runge2("fdgleval",t[#-1],t[#],y[#-1],eps,step,ffunction); end; endif; return y'; endfunction function adaptintf (x,y,fff) return fff(x;args()); endfunction function adaptiveint (ffunction,a,b,eps=epsilon(),steps=10) ## I=adaptiveint("f",a,b;...) returns the integral from a to b. ## f may be an expression in x, which must not contain y. if isfunction(ffunction); return runge2("adaptintf",a,b,0,eps,(b-a)/steps;ffunction,args()); else return runge2("fdgleval",a,b,0,eps,(b-a)/steps;ffunction); endif; endfunction function bisect (ffunction,a,b) ## bisect("f",a,b;...) uses the bisection method to find a root of ## f(x,...) in [a,b]. ffunction may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; if isfunction(ffunction); ## function if ffunction(b,args())<0; b1=a; a1=b; if ffunction(a,args())<0 error("No zero in interval"); endif; else; a1=a; b1=b; if ffunction(a,args())>0 error("No zero in interval"); endif; endif; repeat m=(a1+b1)/2; if a1~=b1; break; endif; if ffunction(m,args())>0; b1=m; else a1=m; endif; end; else ## expression if expreval(ffunction,b,args())<0; b1=a; a1=b; if expreval(ffunction,a)<0 error("No zero in interval"); endif; else; a1=a; b1=b; if expreval(ffunction,a)>0 error("No zero in interval"); endif; endif; repeat m=(a1+b1)/2; if a1~=b1; break, endif; if expreval(ffunction,m)>0; b1=m; else a1=m; endif; end; endif; return m; endfunction function secant (ffunction,a,b) ## secant("f",a,b;...) uses the secant method to find ## a root of f(x,...) in [a,b] ## ffunction may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; if isfunction(ffunction) ## function x0=a; x1=b; y0=ffunction(x0,args()); y1=ffunction(x1,args()); repeat x2=x1-y1*(x1-x0)/(y1-y0); if x2~=x1; break; endif; x0=x1; y0=y1; x1=x2; y1=ffunction(x2,args()); end; else ## expression x0=a; x1=b; y0=expreval(ffunction,x0); y1=expreval(ffunction,x1); repeat x2=x1-y1*(x1-x0)/(y1-y0); if x2~=x1; break; endif; x0=x1; y0=y1; x1=x2; y1=expreval(ffunction,x2); end; endif; return x2 endfunction function simpson (ffunction,a,b,n=50) ## simpson("f",a,b) or simpson("f",a,b,n;...) integrates ## f(x,...) in [a,b] using the Simpson method. ## f must be able to evaluate a vector. ## ffunction may be an expression in x. t=linspace(a,b,2*n); if isfunction(ffunction); s=ffunction(t,args()); else s=expreval(ffunction,t); endif; ff=4-mod(1:2*n+1,2)*2; ff[1]=1; ff[2*n+1]=1; return sum(ff*s)/3*(t[2]-t[1]); endfunction function romberg(ffunction,a,b,m=10) ## romberg(f,a,b) computes the Romberg integral of f(x,...) in [a,b]. ## romberg(f,a,b,m;...) specifies h=(b-a)/m/2^k for k=1,... ## ffunction may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; if isfunction(ffunction) y=ffunction(linspace(a,b,m),args()); h=(b-a)/m; else y=expreval(ffunction,linspace(a,b,m)); h=(b-a)/m; endif y[1]=y[1]/2; y[m+1]=y[m+1]/2; I=sum(y); S=I*h; H=h^2; Intalt=S; repeat; if isfunction(ffunction) I=I+sum(ffunction(a+h/2:h:b,args())); h=h/2; else I=I+sum(expreval(ffunction,a+h/2:h:b)); h=h/2; endif; S=S|I*h; H=H|h^2; Int=interpval(H,interp(H,S),0); if Int~=Intalt; break; endif; Intalt=Int; end; return Intalt endfunction function iterate (ffunction,x0) ## iterate("f",x0;...) iterates the function f(x,...), starting from ## x0. ## The iteration stops at a fixed point. ## Returns the fixed point. ## ffunction may be an expression in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x=x0; if isinterval(x); repeat if isfunction(ffunction); x=ffunction(x,args()); else; x=expreval(ffunction,x); endif; if left(x)~=right(x); return x; endif; end; else; repeat if isfunction(ffunction); xn=ffunction(x,args()); else; xn=expreval(ffunction,x); endif; if (x~=xn); return xn; endif; x=xn; end; endif; endfunction function niterate (ffunction,x0,n) ## iterate("f"x0,n;...) Iterate the function f(x,...) n times, ## starting with the point x0. ## Returns the vector of iterants. ## ffunction may be an expression in x. x=x0; y=zeros(n,cols(x)); loop 1 to n if isfunction(ffunction); x=ffunction(x,args()); else x=expreval(ffunction,x); endif; y[#,:]=x; end; return y; endfunction function newton (ffunc,fder,x) ## newton("f","df",x;...) seeks a zero of f(x,...). ## Starts the Newton iteration from x. ## df is the derivative of f. ## Additional parameters are passed to ffunc and fder. ## ffunc and fder may be expressions in x. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; repeat if isfunction(ffunc); a=ffunc(x,args()); else a=expreval(ffunc,x); endif; if isfunction(fder); b=fder(x,args()); else b=expreval(fder,x); endif; xnew=x-a/b; if (xnew~=x) return xnew; endif; x=xnew; end; endfunction function newton2 (fff,fff1,x) ## newton2("f","Df",x;...) ## Newton method for several parameter. ## fff is the function, fff1 computes the Jacobian. ## Additional parameters are passed to fff and fff1. ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; repeat d=(fff1(x,args())\fff(x,args())')'; xn=x-d; if xn~=x; return xn; endif; x=xn; end endfunction function evalfff (fff) useglobal; return evaluate(fff); endfunction function root (fff, x) ## Find the root of an expression fff (of string type) ## by changing the variable x. Other variables may be ## set globally. Note that the actual name of the variable ## x may be different from "x". if (isvar("eps")); localepsilon(eps); endif; if (x==0) x1=0.00001; else x1=1.00001*x; endif; x0=x; a=evalfff(fff); repeat x=x1; b=evalfff(fff); xn=(x0*b-x1*a)/(b-a); if xn~=x; break; endif; x0=x1; x1=xn; a=b; end; return x; endfunction function setupdif (n) A=zeros([n,2*n+1]); loop 1 to n; b=zeros([2*#+1,1]); b[#+1]=fak(#); a=((-#:#)^(0:2*#)')\b; A[#,1:2*#+1]=a'; end; return A; endfunction DifMatrix=setupdif(5); function dif (fff, x, n=1, e=epsilon()^(1/2)) ## Compute the n-th derivative of fff in the points x. ## fff may be an expression in x or a function. ## For n>=2, x must be a 1xn vector. global DifMatrix; eps=e^(1/(n+1)); if n==0; if isfunction(fff); fff(x;args()); else return expreval(fff,x); endif; elseif (n==1) if isfunction(fff); return (fff(x+eps,args())-fff(x-eps,args()))/(2*eps); else return (expreval(fff,x+eps)-expreval(fff,x-eps))/(2*eps); endif; elseif n<=5; h=(-n:n)*eps; xh=h'+x; a=DifMatrix[n,0:2*n+1]; if isfunction(fff); return (a.fff(xh,args()))/eps^n; else return (a.expreval(fff,xh))/eps^n; endif; else error("Too high a derivative!"); endif; endfunction .. ### use zeros,... the usual way ### function ctext ## ctext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Also ctext(s,c,r). if argn()==3; return _ctext(arg1,[arg2,arg3]); else return _ctext(arg1,arg2); endif; endfunction function text ## text(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Also ctext(s,c,r). if argn()==3; return _text(arg1,[arg2,arg3]); else return _text(arg1,arg2); endif; endfunction function vctext ## vtext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn downwards, centered. if argn()==3; return _vctext(arg1,[arg2,arg3]); else return _vctext(arg1,arg2); endif; endfunction function vrtext ## vtext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn downwards, right justified. if argn()==3; return _vrtext(arg1,[arg2,arg3]); else return _vrtext(arg1,arg2); endif; endfunction function vtext ## vtext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn downwards, left justified. ## Also vctext(s,c,r). if argn()==3; return _vtext(arg1,[arg2,arg3]); else return _vtext(arg1,arg2); endif; endfunction function vutext ## vutext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn upwards. ## Also vcutext(s,c,r). if argn()==3; return _vutext(arg1,[arg2,arg3]); else return _vutext(arg1,arg2); endif; endfunction function vcutext ## vutext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn upwards, centered. ## Also vcutext(s,c,r). if argn()==3; return _vcutext(arg1,[arg2,arg3]); else return _vcutext(arg1,arg2); endif; endfunction function vrutext ## vutext(s,[c,r]) plots the centered string s at the coordinates (c,r). ## Text will be drawn upwards, right justified. ## Also vcutext(s,c,r). if argn()==3; return _vrutext(arg1,[arg2,arg3]); else return _vrutext(arg1,arg2); endif; endfunction function diag ## diag([n,m],k,v) returns a nxm matrix A, containing v on its k-th ## diagonal. v may be a vector or a real number. Also diag(n,m,k,v); ## diag(A,k) returns the k-th diagonal of A. if argn()==4; return _diag([arg1,arg2],arg3,arg4); elseif argn()==3; return _diag(arg1,arg2,arg3); else return _diag(arg1,arg2); endif; endfunction function format ## format(n,m) sets the number output format to m digits and a total ## width of n. if argn()==2; return _format([arg1,arg2]); else return _format(arg1); endif; endfunction function goodformat ## goodformat(n,m) sets the number output format to m digits and a ## total width of n. Prints less than m digits, when not necessary. if argn()==2; return _goodformat([arg1,arg2]); else return _goodformat(arg1); endif; endfunction function expformat ## expformat(n,m) sets the number output format to m digits and a ## total width of n. Always uses exponential format if argn()==2; return _expformat([arg1,arg2]); else return _expformat(arg1); endif; endfunction function fixedformat ## expformat(n,m) sets the number output format to m digits and a ## total width of n. Always uses fixed point format if argn()==2; return _fixedformat([arg1,arg2]); else return _fixedformat(arg1); endif; endfunction function redim ## redim(A,[n,m]) returns a matrix with the numbers in A but different ## dimension filling with 0 if necessary. Also redim(A,n,m). if argn()==3; return _redim(arg1,[arg2,arg3]); else return _redim(arg1,arg2); endif; endfunction function normal ## normal([n,m]) returns a nxm matrix of unit normal distributed random ## values. Also normal(n,m). if argn()==2; return _normal([arg1,arg2]); else return _normal(arg1); endif; endfunction function random ## random([n,m]) returns a nxm matrix of uniformly distributed random ## values in [0,1]. Also random(n,m). if argn()==2; return _random([arg1,arg2]); else return _random(arg1); endif; endfunction function ones ## ones([n,m]) returns a nxm matrix with all elements set to 1. ## Also ones(n,m). if argn()==2; return _ones([arg1,arg2]); else return _ones(arg1); endif; endfunction function zeros ## zeros([n,m]) returns a nxm matrix with all elements set to 0. ## Also zeros(n,m). if argn()==2; return _zeros([arg1,arg2]); else return _zeros(arg1); endif; endfunction function matrix ## matrix([n,m],x) returns a nxm matrix with all elements set to x. ## Also matrix(n,m,x). if argn()==3; return _matrix([arg1,arg2],arg3); else return _matrix(arg1,arg2); endif; endfunction function view ## view([distance, tele, angle1, angle2]) sets the perspective for ## solid and view. distance is the eye distance, tele a zooming factor. ## angle1 is the angle from the negativ y-axis to the positive x-axis. ## angle2 is the angle to the positive z-axis (the height of the eye). ## Also view(d,t,a1,a2). ## view() returns the values of view. if argn()==4; return _view([arg1,arg2,arg3,arg4]); else if argn()==1; return _view(arg1); else return _view(); endif; endfunction function window ## window([c1,r1,c2,r2]) sets a plotting window. The coordinates must ## be screen coordinates. Also window(c1,r1,c2,r2). ## window() returns the active window coordinates. global logredraw; if argn()==4; logredraw=1; return _window([arg1,arg2,arg3,arg4]); else if argn()==1; logredraw=1; return _window(arg1); else return _window(); endif; endfunction function unclip ## Clips to the complete graphics screen return _clip([0,0,1023,1023]); endfunction function clip ## clip([c1,r1,c2,r2]) sets the clipping window. The coordinates must ## be screen coordinates. Also clip(c1,r1,c2,r2). ## clip() returns the active clipping window coordinates. if argn()==4; return _clip([arg1,arg2,arg3,arg4]); else if argn()==1; return _clip(arg1); else return _clip(); endif; endfunction function menu () ## menu(string1,string2,...) displays a menu and returns the ## number of the chosen item. loop 1 to argn(); char(#+ascii("a")-1)|" : "|args(#), end; "" "Please, press any of these keys!" k=key();k n=ascii("a"); if k-n>=0 && k-n<=argn(); return k-n+1; endif; if k==13; return -1; endif; return 0; endfunction function drawbutton (text,x,y,w) ## draw a button with the text at x,y with ## w character width. x centered and y top ## of the label. return the button rectangle. st=barstyle("#O"); bc=barcolor(0); tw=textwidth(); th=textheight(); b=[x-tw*w/2,y-th/3,tw*w,th*5/3]; bar(b); ctext(text,[x,y]); barstyle(st); barcolor(bc); return b endfunction function inbutton (b,s) ## test if the screen coordinates s are with in ## the button rectangle b. get s e.g. with ## toscreen(mouse()) return s[1]>b[1] && s[1]b[2] && s[2]""; open(filename,"r"); endif; {v,N}=getvector(n*m); if filename<>""; close(); endif; if (N2; error("Can write only real matrices"); endif; if filename<>""; open(filename,"w"); endif; f=format|" "; for i=1 to rows(v); for j=1 to cols(v); write(printf(f,v[i,j])); end; putchar(10); end; if filename<>""; close(); endif; return ""; endfunction function triangles ## Obsolete Function. return 1 endfunction function upperwindow (title="") ## select the upper window for plot window(150,860,75,500); title(title); return title endfunction function lowerwindow (title="") ## select the upper window for plot window(150,860,575,1010); ctext(title,512,510); return title endfunction function caseone (b,x,y) if b return x; else return y; endif endfunction function case (b,x,y) ## case(condition,x,y) ## returns x, if condition!=null, else y. return map("caseone",b,x,y); endfunction function rad () ## rad(x) transfers degree x to radians ## rad(x,s) for degrees and minutes ## rad(x,s,m) for degrees, minutes and seconds ## x° works too. if argn==1; return arg1/180*pi; endif; if argn==2; return (arg1+arg2/60)/180*pi; endif; if argn==3; return (arg1+arg2/60+arg3/3600)/180*pi; endif; error("Wrong argument for rad"); endfunction function deg (x) ## deg(x) transfers radians x to degrees return x/pi*180; endfunction function degprint (x) ## Print radians x in degrees y=round(deg(x),10); h=abs(y); vz=""; if (y<0); vz="-"; endif; g=floor(h); if g~=h; return vz|printf("%g°",g); endif; m=floor((h-g)*60); s=(h-g-m/60)*3600; return vz|printf("%g°",g)|printf("%g'",m)|printf("%2.2lf''",s); endfunction euler-1.61.0/progs/texprint.e0000644000175000001440000000177007417015640014742 0ustar ericuserscomment Shows how to print numbers, so that they can appear in a TeX table. texprint(x,d); prints the matrix x with d decimal places. itexprint(x,d); the same for interval matrices. endcomment function texprint (x,d=5) form="\hfill %0."|printf("%g",d)|"g & "; form1="\quad %0."|printf("%g",d)|"g & "; filler=printf(form1,1/300000000000); n=cols(x); m=rows(x) s="\settabs\+ \qquad \quad & "; loop 1 to n s=s|filler; end s|"\cr", loop 1 to m; i=#; s="\+ & "; loop 1 to n s=s|printf(form,x[i,#]); end; s|"\cr", end; return "" endfunction function itexprint (x,d=5) lform="\hfill [%0."|printf("%g",d)|"g"; rform=",%0."|printf("%g",d)|"g] & "; form1="%0."|printf("%g",d)|"g"; f=printf(form1,1/30000000000); filler="\quad "|f|f|" & "; n=cols(x); m=rows(x) s="\settabs\+ \qquad \quad & "; loop 1 to n s=s|filler; end s|"\cr", loop 1 to m; i=#; s="\+ & "; loop 1 to n s=s|printf(lform,left(x[i,#]))|printf(rform,right(x[i,#])); end; s|"\cr", end; return "" endfunction euler-1.61.0/progs/statist.en0000644000175000001440000001543507417015640014741 0ustar ericusers% In this notebook, we demonstrate statistical tests and distributions, % as implemented in the file STATIST.E. We load this file first. >load "statist" % Assume the following measurements. We wish to compute the mean % value and the measured standard deviation. >M=[1000,1004,998,997,1002]; >mean(M) >dev(M) % Next we plot the normal distribution with this mean and deviation. >fplot("qnormal(x,mean(M),dev(M))",990,1010); wait(20); % We wish to compute the probability that a value is bigger than % 1005, assuming the measured distribution. To do this, we have % to normalize the value and compute the normal distribution quantile % of this value. >1-normaldis((1005-mean(M))/dev(M)) % So the probability is 4.7 percent. % % Next we assume measured sizes of men in cm. We set data ranges % 155.5-159.5, 159.5-163.5 and so on. >r=155.5:4:190.5; v=[22,71,136,169,139,71,32,8]; % We can use xplotrange to plot these measurements. The function % expects the end values of the ranges and the measurements. So % r must be one longer than v. >xplotrange(r,v); wait(20); % Next we take as measurement point the middle of each range and % compute the mean value and the deviation of all data. >l=(r[1:8]+r[2:9])/2; >{m,d}=meandev(l,v); m, d, % meandev computes the mean value of measurements r with multiplicities % v. >{m1,d1}=meandev([100,200],[1,99]); m1, d1, % We can add a plot of the expected distribution with this mean % value and deviation over the true size measurements. >hold on; linewidth(3); >fplot("qnormal(x,m,d)*sum(v)*4",min(r),max(r)); >linewidth(1); hold off; shg; % Next we test the distribution against the normal distribution. % This uses a chi^2 test. >testnormal(r,sum(v),v,m,d) % This error probablity for rejection is much to high. So we do % not reject the hypothesis of normal distribution. % % In comparision, we try the same with a sample of the built in % random number generator. >p=normal(1,1000); testnormal(0:10,1000,count(p*2.5+5,10),5,2.5) % This will sometimes lead to rejection. To put up a real test, % we repeat this test 1000 times and reject, if p<0.05. This should % lead to about 5 percent rejections. >function test (m=1000) $n=0; $loop 1 to m; $if testnormal(0:10,100,count(normal(1,100)*2.5+5,10),5,2.5)<0.05; $n=n+1; $endif; $end; $return n/m; $endfunction >test % Next we test dice throws to the equidistribution. Assuming 600 % throws, we got some values. >chitest([90,103,114,101,103,89],dup(100,6)') % So we do not reject equi-distribution. % % Next we generate 1000 dice throws and do the same. >n=1000; t=random([1,n*6]); chitest(count(t*6,6),dup(n,6)') % A result less than 0.05 leads to the assumption of a false dice. % This may happen every 20-th time. % % Next we test for the mean value 100 with the t-test. >s=100+normal([1,100])*10; >ttest(mean(s),dev(s),10,100) % The function accepts the mean, the deviation and the number % of data, and the mean value to test for. % % Finally, we check two measurements for the same mean. We reject % if the result is <0.05. >tcomparedata(normal(1,10),normal(1,10)) % If bias one distribution, we get more rejections. Repeat this % test several times to see the effect. >tcomparedata(normal(1,10),normal(1,10)+1) % In the next example, we generate 100 times 20 random dice throws % and count the ones in it. There must be 20/6=3.3 ones on average. >R=random(100,20); R=sum(R*6<=1)'; mean(R) % We now compare the number of ones with the binomial distribution. % First we plot the distribution of ones. >t=count(R,21); xplotrange(0:21,t); wait(20); % Then we compute the expected values. >n=0:20; b=bin(20,n)*(1/6)^n*(5/6)^(20-n)*100; % We now collect several numbers to get categories, which are % big enough. >t1=sum(t[1:2])|t[3:7]|sum(t[8:21]); >b1=sum(b[1:2])|b[3:7]|sum(b[8:21]); % The chitest rejects our result, if its result is <0.05. >chitest(t1,b1) % This may happen any 20-th time. So we repeat the test 100 times % and should get 5 percent rejections. >function test (m=100) $n=0; $b=bin(20,0:20)*(1/6)^(0:20)*(5/6)^(20-(0:20))*100; $loop 1 to m; $t=count(sum(random(100,20)*6<=1)',21); $c=chitest(sum(t[1:2])|t[3:7]|sum(t[8:21]), .. $sum(b[1:2])|b[3:7]|sum(b[8:21])); $if c<0.05; n=n+1; endif; $end; $return n/m; $endfunction >test % The following example contains results of two groups of persons % (male and female, say) in voting any of six parties. >A=[23,37,43,52,67,74;27,39,41,49,63,77] % We wish to test for independence of the votes from the sex. >tabletest(A) % We now demonstrate how to read and write data to a file. >a=random(1,100); mean(a), dev(a), % To write it, we use the printformat function. >open("test.dat","w"); printformat(a'); close(); % To read it, we use the getvector function, which accepts almost % any data format. >open("test.dat","r"); a=getvector(100); close(); >mean(a), dev(a), % Next we use a variance analysis (F-test) to test three samples % of normally distributed data for same mean value. >x1=[109,111,98,119,91,118,109,99,115,109,94]; mean(x1), >x2=[120,124,115,139,114,110,113,120,117]; mean(x2), >x3=[120,112,115,110,105,134,105,130,121,111]; mean(x3) >varanalysis(x1,x2,x3) % This means, we reject the hypothesis of same mean value. % % We can compute the binomial distribution. First there is the % binomialsum function, which returns the probability of i or % less hits out of n trials. >binsum(410,1000,0.4) % The normalum function approximates the same with the normal % distribution and is much faster. >normalsum(410,1000,0.4) % This is the direct way. But normalsum uses some tricks to avoid % overflow and is faster. >p=0.4; i=0:410; n=1000; sum(bin(n,i)*p^i*(1-p)^(n-i)) % invbinsum computes the inverse of binomialsum. >invbinsum(0.75,1000,0.4) % In Bridge there may be 5 outstanding cards (out of 52) in two % hands (26 cards). Let us compute the probability of a distribution % worse than 3:2 (e.g. 0:5, 1:4, 4:1 or 5:0). >2*hypergeomsum(1,5,13,26) % An application is the medin test, which is to reject data samples % with different mean distribution by testing with the median % of the united sample. >a=[56,66,68,49,61,53,45,58,54]; >b=[72,81,51,73,69,78,59,67,65,71,68,71]; >mediantest(a,b) % Another test on equality is the rank test. This is much sharper % than the median test. >ranktest(a,b) % In the following example, both distributions have the same mean. >ranktest(random(1,100),random(1,50)*3-1) % Let us now try to simulate two treatments a and b applied to % different persons. >a=[8.0,7.4,5.9,9.4,8.6,8.2,7.6,8.1,6.2,8.9]; >b=[6.8,7.1,6.8,8.3,7.9,7.2,7.4,6.8,6.8,8.1]; % The signum test decides, wether a is better than b. >signtest(a,b) % This is to much error. We cannot reject that a not better than % b. % % The Wilcoxon test is sharper than this test, but relies on the % quantitative value of the differences. >wilcoxon(a,b) % Two tests with internally generated series. >wilcoxon(normal(1,20),normal(1,20)-1) >wilcoxon(normal(1,20),normal(1,20)) > euler-1.61.0/progs/xdis.e0000644000175000001440000000747407417015640014043 0ustar ericusers .. ########## normal distribution and inverse ############## function gaussf (x) return 1/sqrt(2*pi)*exp(-x^2/2) endfunction function xnormaldis (x) ## Returns the probability that a normal distibuted random variable ## is less equal x. si=size(x); y=zeros(si); loop 1 to prod(si); l=abs(x{#}); if (l~=0); else; if (l>10) l=0.5; else; l=romberg("gaussf",0,l,10); endif; endif; if (x{#}>0); y{#}=l+0.5; else; y{#}=0.5-l; endif; end; return y; endfunction function xindhelp (y,a) return xnormaldis(y)-a endfunction function xinvnormaldis (y) ## Returns the inverse of xnormaldis si=size(y); x=zeros(si); loop 1 to prod(si); x{#}=invnormaldis(y{#}); x{#}=secant("xindhelp",x{#}-0.1,x{#}+0.1,y{#}); end; return x; endfunction .. ############ t distribution ############## function mygamma (x) ## works only for 2x natural ## look into gamma.e for the general gamma function if floor(x)~=x; return fak(x-1); endif; return prod(0.5:1:x-1)*sqrt(pi()); endfunction function tintegral (t,n) return (1+t*t/n)^(-(n+1)/2) endfunction function xtdis (x,n) ## Returns the t-distribution with n degrees at x. si=size(x,n); y=zeros(si); loop 1 to prod(si); t=abs(x{#}); if t~=0; y{#}=0.5; else; y{#}=0.5+mygamma((n{#}+1)/2)/(sqrt(pi()*n{#})* .. mygamma(n{#}/2))*romberg("tintegral",0,t,10,n{#}); if x{#}<0; y{#}=1-y{#}; endif; endif; end; return y endfunction function xitdhelp (x,y,n) return xtdis(x,n)-y; endfunction function xinvtdis (y,n) ## Returns the inverse of xtdis. si=size(y,n); x=zeros(si); loop 1 to prod(si); x{#}=invtdis(y{#},n{#}); if (y{#}>0.99); x{#}=bisect("xitdhelp",x{#}-1,x{#}+1,y{#},n{#}); else; x{#}=secant("xitdhelp",x{#}-0.1,x{#}+0.1,y{#},n{#}); endif; end; return x; endfunction .. ############# chi^2 distribution ############### function chidisf (x,n,factor) return x^(n/2-1)*exp(-x/2)*factor; endfunction function xchidis (x,n) ## Returns the chi^2 distribution with n degrees. si=size(x,n); y=zeros(si); loop 1 to prod(si); if (x{#}~=0); else; factor=1/(2^(n{#}/2)*mygamma(n{#}/2)); y{#}=romberg("chidisf",0,abs(x{#}),10,n{#},factor); endif; end; return y endfunction function xicdhelp (x,y,n) return xchidis(x,n)-y; endfunction function icdhelp (x,y,n) return chidis(x,n)-y; endfunction function xinvchidis (y,n) ## Returns the inverse of xtdis. si=size(y,n); x=zeros(si); loop 1 to prod(si); if (y{#}<0 || y{#}~=0); x{#}=0; else if (y{#}>1 || y{#}~=1); x{#}=1/epsilon(); else; x{#}=bisect("icdhelp",0,100,y{#},n); x{#}=secant("xicdhelp",x{#}*0.9,x{#}*1.1,y{#},n); endif; endif; end; return x; endfunction .. ############# F distribution ############### function fdisf (x,n,m,factor) return factor*x^(n/2-1)*(m+n*x)^(-(n+m)/2); endfunction function xfdis (x,n,m) ## Returns the F distribution with n and m degrees at x. ## Integration is sometimes instable. si=size(x,n,m); y=zeros(si); loop 1 to prod(si); if (x{#}<0 || x{#}~=0) y{#}=0; else; factor=n{#}^(n{#}/2)*m{#}^(m{#}/2)*mygamma((n{#}+m{#})/2)/ .. (mygamma(n{#}/2)*mygamma(m{#}/2)); y{#}=romberg("fdisf",0,x{#},10,n{#},m{#},factor); endif; end; return y endfunction function xfdhelp (x,y,n,m) return xfdis(x,n,m)-y; endfunction function fdhelp (x,y,n,m) return fdis(x,n,m)-y; endfunction function xinvfdis (y,n,m) ## Returns the inverse of xfdis. si=size(y,n,m); x=zeros(si); loop 1 to prod(si); x{#}=bisect("fdhelp",0,100,y{#},n{#},m{#}); x{#}=secant("xfdhelp",x{#}*0.9,x{#}*1.1,y{#},n{#},m{#}); end; return x; endfunction function fbe(x,a,b) return x^(a-1) * (1-x)^(b-1) endfunction function xbeta (a,b) return gamma(a)*gamma(b)/gamma(a+b); endfunction function xbetai(t,a,b) return romberg("fbe",0,t;a,b)/xbeta(a,b) endfunction comment xnormaldis,xinvnormaldis xtdis,xinvtdis xchidis,xinvchidis xfdis,xinvfdis xbetai endcomment .. EOF euler-1.61.0/progs/linear.en0000644000175000001440000000230207417015640014505 0ustar ericusers% This notebook demonstrate some of the linear algebra % features of EULER. % % Let us first show some easy things. We solve a linear % system Ax=b. >A=[0,1;1,2] >b=[1;1] >x=A\b % The test. >A.x-b % Let us try a huge problem. We generate a 100x100 matrix % A with normally distributed entries. Then we set b equal % to the sum of all rows of A. The solution of Ax=b is % the vector 1. We only check the first three coefficients % of the computes solution x. >A=normal(100,100); b=sum(A); x=A\b; x[1:3] % We can check, how good this solution is. >max(abs(x-1)') % The ill-conditioned Hilbert matrix yields bad results % even for small sizes. >H=hilbert(12); b=sum(H); x=H\b; max(abs(x-1)') % However, we can compute the residuum r=A.x-b with maximal % accuracy and solve the problem A.x=r. This yields an % improved solution x-r. >r=residuum(H,x,b); x=x-H\r; max(abs(x-1)') % Another iteration makes the result even better. >r=residuum(H,x,b); x=x-H\r; max(abs(x-1)') % The function xlgs does exactly this until a good solution % is derived. >x=xlgs(H,b); max(abs(x-1)') % The INTERVAL.E file contains an optimal interval solver, % using the Krawzyk method. >load "interval" % Now we get good inclusions. >ilgs(H,b) > euler-1.61.0/progs/rounding.en0000644000175000001440000000672407417015640015074 0ustar ericusers% This file demonstrates rounding errors. Every computer % with a floating point arithmetic makes errors due to % rounding. EULER can get rid of some of these errors with % the exact scalar product and the interval arithmetic. % % First of all, we investigate the basic rounding error. >a=1/3-0.33333333333333 % 1/3 is not exactly representable in the computer. However, % if we multiply it by 3, we get 1 exactly. This is due % to the rounding. >(1/3)*3-1 % This does no longer work for 1/49. >1/49*49-1 % By the way, there are not many numbers between 1 and % 100 such that 1/n*n does not round to 1. >n=1:100; nonzeros(1/n*n-1<>0) % As you can see belowe, the sqrt function is a good function. % The input error is divided by 2 in each iterations. Thus % all values are correct. >longestformat; p=niterate("sqrt(x)",2,20); p|2^(2^-(1:20))' % However, going back with x^2 to 2 is not a good function. % The error is multiplied by 2 this time. This accumulates % to a surprising error. >niterate("x^2",p[20],20)|2^(2^-(19:-1:0))' % Another example is the subtraction of two large numbers. >x=10864; y=18817; 9*x^4-y^4+2*y^2, % The correct result is 1. We can obtain it in the following % way. >x=10864; y=18817; (3*x^2-y^2)*(3*x^2+y^2)+2*y^2, % By transforming the problem into a linear system, we % can get very good results and even inclusions. % % The linear system is v[1]=x, v[2]=x*v[1], ..., v[5]=y, % v[6]=y*v[5], ..., v[9]=9*v[4]-v[8]+2*v[2] >x=10864; y=18817; >A=id(9); >A[2,1]=-x; A[3,2]=-x; A[4,3]=-x; >A[6,5]=-y; A[7,6]=-y; A[8,7]=-y; >A[9,4]=-9; A[9,8]=1; A[9,6]=-2; >b=[x 0 0 0 y 0 0 0 0]'; >v=A\b; v[9], % The first solution is wrong. % % However, we can improve it with a residual iteration. >w=v-A\residuum(A,v,b); w[9], % This is correct. % % The function xlusolve does the same. >v=xlusolve(A,b); v[9] >load "interval" % Using ilgs, we get a bound for the solution. >v=ilgs(A,b); v[9] % We now try the following recursion: I[n+1]=1/(n+1)-5*I[n]. % It is true that I[n]=intergral(x^n/(x+5),x=0..1). % % We compute the recursion with the following function. >function I(n) $a=log(1.2); x=[]; $loop 1 to n; $a=(1/#-5*a); x=x|a; $end; $return x; $endfunction >I(20) % The last number is completely wrong. >romberg("x^20/(x+5)",0,1) % However, if we compute the recursion backwards, we get % I[0] exactely. We get even a proved inclusion for log(1.2). >function J(n) $a=~0,1~; $loop 1 to n $a=0.2*(1/(n-#+1)-a); $end $return a $endfunction >J(20) >log(1.2) % The file CHEBYSH.E contains functions for the Chebyshev % polynomials. >load "chebysh"; % We test is for degree 60 at 0.9. >T(60,0.9) % Surprisingly, the recursive version is also exact. This % is surprising in view of the example above. >Trek(60,0.9) % However, if we compute the polynomial and evaluate it % at 0.9 with polyval, the result is completely wrong. >p=Tpoly(60); >polyval(p,0.9) % This is not due to the coefficients, as we see with interval % aritmetic. This is slow because of the 60x60 matrix involved. >ipolyval(p,0.9) % xpolyval is fast, but less reliable. >xpolyval(p,0.9) % The difference to the correct value is due to the coefficients. >cos(60*acos(0.9)) % Another example is the following polynomial. >p=[-945804881,1753426039,-1083557822,223200658]; % We evaluate it in the following interval. >t=linspace(1.61801916,1.61801917,100); % The values are clearly wrong. >xplot(t-1.61801916,polyval(p,t)); wait(20); % The correct values are easily obtained with a little % residual iteration. >xplot(t-1.61801916,xpolyval(p,t)); wait(20); > euler-1.61.0/progs/stereo.e0000644000175000001440000000062407417015640014363 0ustar ericusersfunction stereo x=-1:0.2:1; y=x'; hold on; clg; s=300; m=510; window(m-s,m-s/2,m,m+s/2); view(3,1.5,0.5,0.5); wire(x,y,x^2*y^3); window(m,m-s/2,m+s,m+s/2); view(3,1.5,0.55,0.5); wire(x,y,x^2*y^3); hold off; shrinkwindow(); return "" endfunction "Try to see three pictures and focus the center one." "Works better, when you print the graphics." "Press return" wait(20); stereo; wait(180); euler-1.61.0/progs/bench.e0000644000175000001440000000477107337010766014155 0ustar ericusers.. Bench function. comment Run: test Times for bench OS/2, 486 DX 50/2, 8 MB 40 9 88 209 49 262 311 175 131 143 105 585 OS/2, P90, 16 MB 35 4 64 113 45 123 141 92 79 88 62 216 Windows 95, P75, 32 MB 3 4 42 110 22 111 134 72 63 69 50 208 Windows NT, K6-2 500, 128 MB 0.5 0.4 4 10 2.4 10 12 7.4 5.6 6.3 5.2 129 Benchmark is running ... endcomment function leer () return 0; endfunction leert=0; function bench (ffunction) ## bench("f",...) returns the time needed by f in milliseconds. ## ... is passed to f. global leert; func=ffunction; t=time(); count=0; repeat; if (time()>t+5); break; endif; func(args(2)); count=count+1; end; argt=(time()-t)/count; return argt; endfunction leert=bench("leer"); function f1 loop 1 to 1000; end; return 0; endfunction function f2 loop 1 to 1000; endif; end; return 0; endfunction function f3 x=0; loop 1 to 1000; x=3; end; return 0; endfunction function f4 x=0; loop 1 to 1000; x; end; return 0; endfunction function f5 A=zeros([2,2]); loop 1 to 1000; A=[1,2;3,4]; end; return 0; endfunction function f6 A=zeros([2,2]); loop 1 to 1000; A[1,1]=A[1,2]; end; return 0; endfunction function f7 loop 1 to 1000; v=1:10; end; return 0; endfunction function f8 v=1:10; loop 1 to 1000; v{4}=5; end; return 0; endfunction function f9 x=3; loop 1 to 1000; (x+x)*(x+x); end; return 0; endfunction function f10 v=1:10; x=0; loop 1 to 1000; x=v{4}; end; return 0; endfunction function f11 v=1:10; x=0; loop 1 to 1000; v*v; end; return 0; endfunction function f12 x=2; loop 1 to 1000; x=sqrt(sin(log(exp(x)))); end; return 0; endfunction looptime=bench("f1"); function musec (ffunction) global looptime; res=bench(ffunction,args(2))*1000-looptime; return {printf("%12.3f musec ",res),res}; endfunction function test global looptime; looptime=0; shortformat(); {text,looptime}=musec("f1"); text|" for one loop.", musec("f2")|" for: endif;", musec("f3")|" for: x=3;", musec("f9")|" for: (x+x)*(x+x);", musec("f4")|" for: x;", musec("f5")|" for: A=[1,2;3,4];", musec("f6")|" for: A[1,1]=A[1,2];", musec("f7")|" for: v=1:10;", musec("f8")|" for: v{4}=3;", musec("f10")|" for: x=v{4};", musec("f11")|" for: v*v;", musec("f12")|" for: x=sqrt(sin(log(exp(x))));", looptime=0; return 0; endfunction test(); euler-1.61.0/progs/hondt.e0000644000175000001440000000323107417015640014173 0ustar ericuserscomment D'Hondt and Hare-Niemeyer (best fit). hondt(v,n); best(v,n); cumpute seat distributions for n seats based on votes v (1xn vector). For a test run test(0:5:100,[100,200],127); test(0:0.5:5,100,37); endcomment function hondt (v,n) ## Compute the distribution of seats s[1],...s[k], which corresonds ## to v[1],...,v[k], such that sum s[i] = n, using d'Hondt. k=length(v); t=1/(1:n); S=[]; I=[]; loop 1 to k; S=S|(v[#]*t); I=I|(dup(#,n)'); end; {S,i}=sort(-S); I=I[i]; I=I[1:n]; return count(I-0.5,k); endfunction function best (v,n) ## Compute the distribution of seats s[1],...s[k], which corresonds ## to v[1],...,v[k], such that sum s[i] = n, using closest fit. ## The method minimizes the sum of absolute errors and is ## often called Hare-Niemeyer method. s=v/sum(v)*n; S=floor(s); d=n-sum(S); if d>0; {f,i}=sort(S-s); i=i[1:d]; S[i]=S[i]+1; endif; return S; endfunction function test (v1,v,n) ## Test hondt(v1|v,n), for all elements in p. p=v1; s=v1; sb=v1; su=sum(v); loop 1 to length(p); r=hondt(v1[#]|v,n)/n; s[#]=r[1]; r=best(v1[#]|v,n)/n; sb[#]=r[1]; p[#]=v1[#]/(su+v1[#]); end; xplot(p,p); hold on; style("mx]"); color(2); mark(p,s); color(1); style("m[]"); color(3); mark(p,sb); color(1); hold off; title("% of votes, % of seats (x Hondt, [] best)"); wait(180); m=max(max(abs(s-p)),max(abs(sb-p))); setplot(min(p),max(p),-m,m); xplot(p,zeros(size(p))); hold on; style("mx]"); color(2); mark(p,s-p); color(1); style("m[]"); color(3); mark(p,sb-p); color(1); hold off; title("% error (x Hondt, [] best)"); wait(180); "sum of errors (hondt)", sum(abs(s-p)), "sum of errors (best)", sum(abs(sb-p)), return 0; endfunction .. EOF euler-1.61.0/progs/apple.e0000644000175000001440000000371407417015640014166 0ustar ericuserscomment Show the apple set and investigate it, starts automatically or with test(); endcomment function apple1 (z,z0) ## one iteration w=z0+z*z; return w endfunction function apple (z) ## compute 10 iterations w=z; loop 1 to 7; w=apple1(w,z); end: return w endfunction function julia (z,z0) ## compute 10 iterations w=z; loop 1 to 7; w=z0+w*w; end: return w endfunction function showapple (a) ## show the apple set in 3D {x,y}=field(linspace(a[1],a[2],50),linspace(a[3],a[4],50)); z=x+1i*y; w=apple(z); view(5,3,-0.75,0.7); twosides(0); wa=abs(w); wa=max(wa,1); l=log(wa); l=2*l/max(max(l)'); framedsolid(x,y,-l,1); return wa; endfunction function showjulia (z0,a) ## show the apple set in 3D {x,y}=field(linspace(a[1],a[2],50),linspace(a[3],a[4],50)); z=x+1i*y; w=julia(z,z0); view(5,3,-0.75,0.7); twosides(0); wa=abs(w); wa=max(wa,1); l=log(wa); l=2*l/max(max(l)'); framedsolid(x,y,-l,1); return wa; endfunction function showcontour(w,x) ## show the iterations clg; shrinkwindow(); wl=log(w); wl=wl/totalmax(wl); repeat clg; setplot(x); density(wl*0.8+0.1); hold on; xplot(); contour(wl,linspace(epsilon,1,10)); t=linspace(0,2*pi,500); color(2); plot(0.5*cos(t)*(1-cos(t))+0.25,0.5*sin(t)*(1-cos(t))); color(1); hold off; title("Click any point for the local Julia set! (Finish -> )"); r=0; m=mouse(); z=m[1]+1i*m[2]; if m[2]>x[4]; break; endif; xh=[-3,3,-3,3]; setplot(xh); wa=showjulia(z,xh); title(printf("Julia set at (%g",re(z))|printf("%g)",im(z))); wait(180); clg; wa=log(wa); wa=wa/totalmax(wa); density(wa*0.8+0.1); hold on; xplot(); contour(wa,linspace(epsilon,1,10)); t=sqrt(1-4*z); color(3); mark([(1-t)/2,(1+t)/2]); color(1); hold off; title("The fixpoints"); wait(180); end; hold off; return r endfunction function test() "Just a moment!", x=[-2,0.5,-1.25,1.25]; w=showapple(x); title("Press any key please!"); wait(180); showcontour(w,x); return w; endfunction test(); euler-1.61.0/progs/statist.e0000644000175000001440000001601310330764315014552 0ustar ericuserscomment Statistical Functions endcomment function meandev (x,v=0) ## Return the mean value and the standard deviation of x1,...,xn. ## E.g. {m,d}=mean([1,2,3,3,4,2,5]). ## An additional parameter v may contain the multiplicities of x. ## E.g. {m,d}=mean([1,2,3,4,5],[1,2,2,1,1]) (same example). ## m=mean(x) will assign the mean value only! if (argn()==2) n=sum(v); m=sum(x*v)/n; d=sqrt((sum(x*x*v)-n*m*m)/(n-1)); else n=cols(x); m=sum(x)/n; d=sqrt((sum(x*x)-n*m*m)/(n-1)); endif; return {m,d}; endfunction function mean (x) ## Returns the mean value of x. ## An additional parameter may contain multiplicities. ## See: meandev. {m,d}=meandev(x,args()); return m; endfunction function dev (x) ## Returns the standard deviation of x. ## An additional parameter may contain multiplicities. ## See: meandev. {m,d}=meandev(x,args()); return d; endfunction function qnormal (x,m,d) ## Returns the normal density with mean m and deviation d. return 1/(d*sqrt(2*pi))*exp(-(x-m)^2/2/d^2); endfunction function xplotrange (r,v) ## Plots a barplot of the multiplicities v[i] in the ranges ## r[i],r[i+1]. r must be one longer than v. ## You can set the plot area with setplot beforehand. s=scaling(1); if s; setplot(min(r),max(r),0,max(v)); endif; scaling(s); n=cols(v); xplotbar(r[1:n],0,r[2:n+1]-r[1:n],v); return plot(); endfunction function chitest (x,y) ## Perform a xhi^2 test, if x obeys the distribution y. ## Return the error, if you reject this. return 1-chidis(sum((x-y)^2/y),cols(x)-1); endfunction function testnormal (r,n,v,m,d) ## Test the data v[i] in the ranges r[i],r[i+1] against ## the normal deviation with mean m and deviation d, ## using the xhi^2 method. ## n is the total number of data (including those ## less than r[1] and larger than r[n]). ## Return the error you have, if you reject normal distribution. t=normaldis((r-m)/d); k=cols(v); p=(t[2:k+1]-t[1:k])*n; return chitest(v,p); endfunction function ttest (m,d,n,mu) ## Test, if the measured mean m with deviation d of n data ## can come from a distribution with mean value mu. ## Returns the error you have, if you reject this. return 1-tdis(abs(m-mu)/d*sqrt(n),n-1); endfunction function tcompare (m1,d1,n1,m2,d2,n2) ## Test, if two measured data with means mi, deviation di ## of ni data (i=1,2), aggree in mean. ## The data must be normally distributed. ## Returns the error you have, if you reject this. h1=d1^2/n1; h2=d2^2/n2; return 1-tdis(abs(m1-m2)/sqrt(h1+h2), .. (h1+h2)^2/(h1^2/(n1+1)+h2^2/(n2+1))-2); endfunction function tcomparedata (x,y) ## Compare x and y on same mean, where x and y are ## normally distributed with different deviation. ## Return the error you have, if you reject this. return tcompare(mean(x),dev(x),cols(x),mean(y),dev(y),cols(y)); endfunction function tabletest (A) ## Test the results a[i,j] for independence of the rows ## from the columns. (chi^2 test) ## This should only be used for large table entries. ## Return the error you have, if you reject independence. c=sum(A); r=sum(A')'; E=c*r/sum(r); return 1-chidis(totalsum((A-E)^2/E),(cols(A)-1)*(rows(A)-1)); endfunction function varanalysis ## Test the normally distributed data x1,x2,x3,... for same ## mean value. ## varanalysis(x1,x2,x3,...), where each xi is a row vector. ## Returns the error you have, if you reject same mean. md=[mean(arg1),cols(arg1)]; s=sum((arg1-md[1])^2); loop 2 to argn(); x=args(#); mx=mean(x); md=md_[mx,cols(x)]; s=s+sum((x-mx)^2); end; md=md'; n=sum(md[2]); mt=sum(md[1]*md[2])/n; s1=sum(md[2]*(md[1]-mt)^2); return 1-fdis((s1/(argn()-1))/(s/(n-argn())),argn()-1,n-argn()); endfunction function binsum1 (i,n,p) if i>=n; return 1; endif; d=sqrt(n*p*(1-p)); i1=n*p-10*d; if i1<0; i1=0; endif; if in*p+10*d; return 1; endif; s=n*log(1-p); if i>=1; j=1:i+1; s=cumsum(s|(log((n-j+1)/j*p/(1-p)))); endif; return sum(exp(s[floor(i1):i+1])); endfunction function binsum (i,n,p) ## Compute the probablitiy of getting i or less hits ## in n runs, where the probability for each hit is p. ## Works even for large i and n, but is ineffective then. ## One may use the normalsum function for large n and ## medium p. return map("binsum1",i,n,p); endfunction function normalsum (i,n,p) ## Works like binsum, but is much faster for large n ## and medium p. return normaldis((i+0.5-n*p)/sqrt(n*p*(1-p))); endfunction function invbinsum1 (x,n,p) if x<=0; return 0; endif; if x>=1; return n; endif; s=n*log(1-p); d=sqrt(n*p*(1-p)); i1=floor(n*p-10*d); i2=floor(n*p+10*d); if i1<0; i1=0; endif; if i2>n; i2=n; endif; j=1:i2; s=cumsum(s|(log((n-j+1)/j*p/(1-p)))); return find(cumsum(exp(s[i1:length(s)])),x)+i1; endfunction function invbinsum (x,n,p) ## Computes i, such that binomialsum(i,n,p) is just larger than x. return map("invbinsum1",x,n,p) endfunction function hypergeomsum1 (i,n,i1,n1) if i=i1; return 1; endif; if i1<=n1-n; s=logbin(n1-n,i1)-logbin(n1,i1); if i>=1; j=1:i; s=cumsum(s|(log(n-j+1)-log(j)+log((i1-j+1))-log((n1-n-i1+j)))); endif; else s=log(bin(n,i1-(n1-n)))-log(bin(n1,i1)); if i>i1-(n1-n); j=(i1-(n1-n)+1):i; s=cumsum(s|(log(n-j+1)-log(j)+log(i1-j+1)-log(n1-n-i1+j))); endif; endif return sum(exp(s)); endfunction function hypergeomsum (i,n,itot,ntot) ## Return the probability of hitting i or less black balls, if ## n are chosen out of ntot, and there are a total of itot black ## balls (and ntot-itot white balls). return map("hypergeomsum1",i,n,itot,ntot); endfunction function mediantest (a,b) ## Test the two distributions a and b on equal mean value. ## To do this both distributions are checked on exceeding ## the median of both. ## Returns the error you have, if you assume a does not ## exceed the median to often (i.e. a may be equal to b) c=sort(a|b); n=cols(c); if mod(n,2)==0; m=(c[n/2]+c[n/2+1])/2; else m=c[n/2+1]; endif; return 1-hypergeomsum(sum(an1)); return 1-normaldis(abs((min(R1-n1*(n1+1)/2,R2-n2*(n2+1)/2)-n1*n2/2)/ .. sqrt(n1*n2*(n1+n2+1)/12))); endfunction function signtest (a,b) ## Assume a(i) and b(i) are results of treatment a and b at i. ## a and b must be row vectors of equal length. ## Test, if a is not better than b. ## Return the error you have, if you decide that a is better ## than b. n=cols(a); i=sum(a>b); return 1-binsum(i-1,n,0.5); endfunction function wilcoxon (a,b,eps=sqrt(epsilon())) ## This is a sharper test for the same problem as in signtest. ## See: signtest ## Returns the error you have, if you decide that a is better ## than b. d=a-b; n=cols(d); {c,i}=sort(abs(d)); R=1:n; {c1,i1}=sort(c+eps*(n:-1:1)); R=(R+R[i1])/2; R1=sum(R*(d[i]<0)); R2=sum(R*(d[i]>=0)); W=R2; return 1-normaldis((W-n*(n+1)/4)/ .. sqrt(n*(n+1)*(2*n+1)/24))); endfunction euler-1.61.0/progs/astro.e0000644000175000001440000044760707417015640014232 0ustar ericusers.. a collection of basic astronomical functions for use in Euler .. program - written and tested on euler 1.36 comment ----------------------------------------------------- Astronomical functions 1999-08-19 Type 'help astro(RETURN)' for list of functions ----------------------------------------------------- endcomment function astro() ## Astronomical functions taken from ## Jean Meeus - 'Astronomical Algorithms' ## Montenbruck and Pfleger - 'Astronomy on the Personal Computer' ## Duffett-Smith - 'Practical astronomy with your calculator' ## other sources. ## For information on a function named fred, type 'help fred'. ## ## Report any problems or errors in these functions to ## Keith Burnett (keith@xylem.demon.co.uk) ## Latest version of this package is available from ## http://www.xylem.demon.co.uk/kepler/euler.html ## ## day jday gst nutation ## hmercury hvenus hearth hmars hjupiter hsaturn ## mercury venus sun mars jupiter saturn ## gmer gven gmar gjup ## gmoon amoon moon tmoon librate ## equatorial apparent mean altaz raltaz ## cart sph ## table ## ddegrees dsin dcos dtan dasin dacos datan datan2 ## brum reekie settle ## return 1; endfunction function ddegrees (d, m, s) ## converts degrees minutes and seconds to decimal degrees return d + m/60 + s/3600; endfunction .. Note that the built in mod function will give answers correct to .. 8 decimal places for angles up to 36,000,000 degrees - falls off .. for larger angles .. Note that Euler uses the same logical operators as C, so || is OR .. && is AND, ! is NOT. 'a NOT equal to b' is 'a != b', 'a equal to b' is .. 'a == b' and so on. function dsin (x) ## returns sine of x degrees return sin(pi()/180*mod(x, 360)); endfunction function dcos (x) ## returns cosine of x degrees return cos(pi()/180*mod(x, 360)); endfunction function dtan (x) ## returns tangent of x degrees return tan(pi()/180*mod(x, 360)); endfunction function dasin(x) ## returns angle in degrees corresponding to x return 180/pi()*asin(x) endfunction function dacos(x) ## returns angle in degrees corresponding to x return 180/pi()*acos(x) endfunction function datan(x) ## returns angle in degrees corresponding to x return 180/pi()*atan(x) endfunction function datan2(y, x) ## returns the angle in degrees within the correct ## quadrant given the coordinates y, x on the unit ## circle a = datan(y / x); if x < 0; a = a + 180; endif; if y < 0 && x > 0; a = a + 360; endif; return a; endfunction function day(y, m, d, h, min) ## returns the days since J2000.0 number assuming the Gregorian calendar ## after 1582 Oct 4th given the year, month, day, hour and minute ## This method is modified from Duffett-Smith Calculator page 7 ## Negative years CE are numbered according to the astronomical ## convention - i.e. calendrical year 1 BC is year zero in this function greg = y*10000 + m*100 + d; if m == 1 || m == 2; y = y - 1; m = m + 12; endif; if greg > 15821004; a = floor(y/100); b = 2 - a + floor(a/4); else; b = 0; endif; c = floor(365.25 * y); d1 = floor(30.6001 * (m + 1)); return b + c + d1 -730550.5 + d + (h+min/60)/24; endfunction function jday(y, m, d, h, min) ## returns the julian day number assuming the Gregorian calendar ## after 1582 Oct 4th given the year, month, day, hour and minute ## This method is taken from Duffett-Smith Calculator page 7 greg = y*10000 + m*100 + d; if m == 1 || m == 2; y = y - 1; m = m + 12; endif; if greg > 15821004; a = floor(y/100); b = 2 - a + floor(a/4); else; b = 0; endif; c = floor(365.25 * y); d1 = floor(30.6001 * (m + 1)); return b + c + d1 + 1720994.5 + d + (h+min/60)/24; endfunction function gst(day) ## returns the greenwich siderial time corresponding to the number of days ## before J2000.0 (Meeus Ch 11). ## Answer is given in degrees (360 = siderial day) t = day/36525; st = mod(280.46061837 + 360.98564736629 * day + 0.000387933 * t* t - t*t*t/38710000, 360); if st < 0; st = st + 360; endif; return st; endfunction function gmoon(day) ## returns the mean geocentric longitude, latitude and distance of the Moon ## given the instant in days since J2000.0 based on the truncated ELP-2000/82 ## theory in Meeus' book C45 - claimed good to 10 arcsec in longitude, ## 4 arcsec in latitude. .. Coefficients for mean longitude and radius vector of moon lcoef = [ 0 , 0 , 1 , 0 , 6288774 , -20905355; 2 , 0 , -1 , 0 , 1274027 , -3699111; 2 , 0 , 0 , 0 , 658314 , -2955968; 0 , 0 , 2 , 0 , 213618 , -569925; 0 , 1 , 0 , 0 , -185116 , 48888; 0 , 0 , 0 , 2 , -114332 , -3149; 2 , 0 , -2 , 0 , 58793 , 246158; 2 , -1 , -1 , 0 , 57066 , -152138; 2 , 0 , 1 , 0 , 53322 , -170733; 2 , -1 , 0 , 0 , 45758 , -204586; 0 , 1 , -1 , 0 , -40923 , -129620; 1 , 0 , 0 , 0 , -34720 , 108743; 0 , 1 , 1 , 0 , -30383 , 104755; 2 , 0 , 0 , -2 , 15327 , 10321; 0 , 0 , 1 , 2 , -12528 , 0; 0 , 0 , 1 , -2 , 10980 , 79661; 4 , 0 , -1 , 0 , 10675 , -34782; 0 , 0 , 3 , 0 , 10034 , -23210; 4 , 0 , -2 , 0 , 8548 , -21636; 2 , 1 , -1 , 0 , -7888 , 24208; 2 , 1 , 0 , 0 , -6766 , 30824; 1 , 0 , -1 , 0 , -5163 , -8379; 1 , 1 , 0 , 0 , 4987 , -16675; 2 , -1 , 1 , 0 , 4036 , -12831; 2 , 0 , 2 , 0 , 3994 , -10445; 4 , 0 , 0 , 0 , 3861 , -11650; 2 , 0 , -3 , 0 , 3665 , 14403; 0 , 1 , -2 , 0 , -2689 , -7003; 2 , 0 , -1 , 2 , -2602 , 0; 2 , -1 , -2 , 0 , 2390 , 10056; 1 , 0 , 1 , 0 , -2348 , 6322; 2 , -2 , 0 , 0 , 2236 , -9884; 0 , 1 , 2 , 0 , -2120 , 5751; 0 , 2 , 0 , 0 , -2069 , 0; 2 , -2 , -1 , 0 , 2048 , -4950; 2 , 0 , 1 , -2 , -1773 , 4130; 2 , 0 , 0 , 2 , -1595 , 0; 4 , -1 , -1 , 0 , 1215 , -3958; 0 , 0 , 2 , 2 , -1110 , 0; 3 , 0 , -1 , 0 , -892 , 3258; 2 , 1 , 1 , 0 , -810 , 2616; 4 , -1 , -2 , 0 , 759 , -1897; 0 , 2 , -1 , 0 , -713 , -2117; 2 , 2 , -1 , 0 , -700 , 2354; 2 , 1 , -2 , 0 , 691 , 0; 2 , -1 , 0 , -2 , 596 , 0; 4 , 0 , 1 , 0 , 549 , -1423; 0 , 0 , 4 , 0 , 537 , -1117; 4 , -1 , 0 , 0 , 520 , -1571; 1 , 0 , -2 , 0 , -487 , -1739; 2 , 1 , 0 , -2 , -399 , 0; 0 , 0 , 2 , -2 , -381 , -4421; 1 , 1 , 1 , 0 , 351 , 0; 3 , 0 , -2 , 0 , -340 , 0; 4 , 0 , -3 , 0 , 330 , 0; 2 , -1 , 2 , 0 , 327 , 0; 0 , 2 , 1 , 0 , -323 , 1165; 1 , 1 , -1 , 0 , 299 , 0; 2 , 0 , 3 , 0 , 294 , 0; 2 , 0 , -1 , -2 , 0 , 8752 ]; .. Coeficients for mean latitude of Moon bcoef = [ 0 , 0 , 0 , 1 , 5128122; 0 , 0 , 1 , 1 , 280602; 0 , 0 , 1 , -1 , 277693; 2 , 0 , 0 , -1 , 173237; 2 , 0 , -1 , 1 , 55413; 2 , 0 , -1 , -1 , 46271; 2 , 0 , 0 , 1 , 32573; 0 , 0 , 2 , 1 , 17198; 2 , 0 , 1 , -1 , 9266; 0 , 0 , 2 , -1 , 8822; 2 , -1 , 0 , -1 , 8216; 2 , 0 , -2 , -1 , 4324; 2 , 0 , 1 , 1 , 4200; 2 , 1 , 0 , -1 , -3359; 2 , -1 , -1 , 1 , 2463; 2 , -1 , 0 , 1 , 2211; 2 , -1 , -1 , -1 , 2065; 0 , 1 , -1 , -1 , -1870; 4 , 0 , -1 , -1 , 1828; 0 , 1 , 0 , 1 , -1794; 0 , 0 , 0 , 3 , -1749; 0 , 1 , -1 , 1 , -1565; 1 , 0 , 0 , 1 , -1491; 0 , 1 , 1 , 1 , -1475; 0 , 1 , 1 , -1 , -1410; 0 , 1 , 0 , -1 , -1344; 1 , 0 , 0 , -1 , -1335; 0 , 0 , 3 , 1 , 1107; 4 , 0 , 0 , -1 , 1021; 4 , 0 , -1 , 1 , 833; 0 , 0 , 1 , -3 , 777; 4 , 0 , -2 , 1 , 671; 2 , 0 , 0 , -3 , 607; 2 , 0 , 2 , -1 , 596; 2 , -1 , 1 , -1 , 491; 2 , 0 , -2 , 1 , -451; 0 , 0 , 3 , -1 , 439; 2 , 0 , 2 , 1 , 422; 2 , 0 , -3 , -1 , 421; 2 , 1 , -1 , 1 , -366; 2 , 1 , 0 , 1 , -351; 4 , 0 , 0 , 1 , 331; 2 , -1 , 1 , 1 , 315; 2 , -2 , 0 , -1 , 302; 0 , 0 , 1 , 3 , -283; 2 , 1 , 1 , -1 , -229; 1 , 1 , 0 , -1 , 223; 1 , 1 , 0 , 1 , 223; 0 , 1 , -2 , -1 , -220; 2 , 1 , -1 , -1 , -220; 1 , 0 , 1 , 1 , -185; 2 , -1 , -2 , -1 , 181; 0 , 1 , 2 , 1 , -177; 4 , 0 , -2 , -1 , 176; 4 , -1 , -1 , -1 , 166; 1 , 0 , 1 , -1 , -164; 4 , 0 , 1 , -1 , 132; 1 , 0 , -1 , -1 , -119; 4 , -1 , 0 , -1 , 115; 2 , -2 , 0 , 1 , 107]; ..Calculate the arguments, eccentricity and additive corrections t = day/36525; t2 = t*t; t3 = t2*t; t4 = t2*t2; .. Mean longitude including light travel time and referred to equinox of date l1 = mod(218.3164591 + 481267.88134236 *t - 0.0013268 *t2 + t3/538841 - t4/65194000, 360); .. Mean elongation d = mod(297.8502042 + 445267.1115168 *t - 0.0016300 *t2 + t3/545868 - t4/113065000, 360); .. Sun's mean anomaly m = mod(357.5291092 + 35999.0502909 *t - 0.0001536 *t2 + t3/24490000, 360); .. Moon's mean anomaly m1 = mod(134.9634114 + 477198.8676313 *t + 0.0089970 *t2 + t3/69699 - t4/14712000, 360); ..Moon's argument of latitude (mean distance from ascending node) f = mod(93.2720993 + 483202.0175273 *t - 0.0034029 *t2 - t3/3526000 + t4/863310000, 360); ..further arguments a1 = mod(119.75 + 131.849 * t,360); a2 = mod( 53.09 + 479264.290 * t,360); a3 = mod(313.45 + 481266.484 * t,360); .. Eccentricity of earth's orbit round Sun (affects terms with M or 2M) e = 1 - 0.002516 * t - 0.0000074 *t2; e2 = e * e; .. Use matrix algebra to sum the series (slight differences compared with .. for loop summation, around 0.1 arcsec .. Longitude and radius vector series tr = lcoef'; .. Condition coefficents with eccentricity correction for inc = 1 to cols(tr); if abs(tr[2, inc]) == 1; tr[5, inc] = e*tr[5, inc]; tr[6, inc] = e*tr[6, inc]; endif; if abs(tr[2, inc]) == 2; tr[5, inc] = e2*tr[5, inc]; tr[6, inc] = e2*tr[6, inc]; endif; end; .. Form the term vectors and sum the series arg = mod(tr[1]*d + tr[2]*m + tr[3]*m1 + tr[4]*f, 360); long = sum(tr[5] * dsin(arg)); r = sum(tr[6] * dcos(arg)); .. Latitude series tr = bcoef'; for inc = 1 to cols(tr); if abs(tr[2, inc]) == 1; tr[5, inc] = e*tr[5, inc]; endif; if abs(tr[2, inc]) == 2; tr[5, inc] = e2*tr[5, inc]; endif; end; arg = mod(tr[1]*d + tr[2]*m + tr[3]*m1 + tr[4]*f, 360); lat = sum(tr[5] * dsin(arg)); .. additive terms for longitude long = long + 3958 * dsin(a1) + 1962 * dsin (l1 - f) + 318 * dsin(a2); lambda = l1 + long/1000000; if lambda < 0; lambda = lambda + 360; endif; .. additive terms for latitude lat = lat - 2235 * dsin(l1) + 382 * dsin(a3) + 175 * dsin(a1 - f); lat = lat + 175 * dsin(a1 + f) + 127 * dsin(l1 - m1) - 115 * dsin(l1 + m1); beta = lat/1000000; .. calculate radius vector in Km delta = 385000.56 + r/1000; return [lambda, beta, delta]; endfunction function nutation(day) ## returns the values of delta-phi and delta-epsilon in degrees ## for UT instant. See Meeus Ch21 - good to 0.5 arcsec in phi and ## 0.1 arcsec in epsilon ## Returns a vector with entries [dphi, deps, 0] for compatibility t = day/36525; t2 = t*t; t3 = t2*t; .. Arguments .. Mean longitude of the Sun l = mod(280.4665 + 36000.7698 * t, 360); .. Mean longitude of the Moon l1 = mod(218.3165 + 481267.8813 * t, 360); .. Longitude of the ascending node of the Moon's orbit on Ecliptic plane, measured from .. mean equinox of UT instant o = mod(125.04452 - 1934.136261 * t - 0.0020708 * t2 + t3/327270, 360); .. Series dphi = -17.20 * dsin(o) - 1.32 * dsin(2*l) - 0.23 * dsin(2*l1) + 0.21 * dsin(2 * o); dphi = dphi/3600; deps = 9.20 * dcos(o) + 0.57 * dcos(2*l) + 0.10 * dcos(2*l1) - 0.09 * dcos(2 * o); deps = deps/3600; return [dphi, deps, 0]; endfunction function amoon(day) ## returns the apparent geocentric longitude, latitude and distance of the Moon ## corrected for nutation using a low precision nutation theory meanmoon = gmoon(day); nutcor = nutation(day); nutcor[2] = 0; return meanmoon + nutcor; endfunction function table(position, day1, day2, inc) ## builds a table of positions given the position function name, ## a starting UT instant, a stopping UT instant and a time increment. ## Each row of the table is a position. ..start = time c = 1; moontab = zeros([(day2-day1)/inc+1, 3]); for day = day1 to (day2 + inc) step inc; moonnow = position(day); moontab(c, 1) = moonnow(1); moontab(c, 2) = moonnow(2); moontab(c, 3) = moonnow(3); c = c+1; end; ..finish = time return moontab endfunction function hearth(day) ## returns the heliocentric ecliptic latitude of the Earth given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC .. define coeficient tables for the constants l0, l1 and so on l0 = [175347046 , 0.0000000 , 0.0000000; 3341656 , 4.6692568 , 6283.0758500; 34894 , 4.6261024 , 12566.1517000; 3497 , 2.7441178 , 5753.3848849; 3418 , 2.8288658 , 3.5231183; 3136 , 3.6276704 , 77713.7714681; 2676 , 4.4180835 , 7860.4193924; 2343 , 6.1351621 , 3930.2096962; 1324 , 0.7424634 , 11506.7697698; 1273 , 2.0370966 , 529.6909651; 1199 , 1.1096295 , 1577.3435424; 990 , 5.2326807 , 5884.9268466; 902 , 2.0450545 , 26.2983198; 857 , 3.5084915 , 398.1490034; 780 , 1.1788268 , 5223.6939198; 753 , 2.5333905 , 5507.5532387; 505 , 4.5829260 , 18849.2275500; 492 , 4.2050571 , 775.5226113; 357 , 2.9195411 , 0.0673103; 317 , 5.8490195 , 11790.6290887; 284 , 1.8986924 , 796.2980068; 271 , 0.3148626 , 10977.0788047; 243 , 0.3448145 , 5486.7778432; 206 , 4.8064663 , 2544.3144199; 205 , 1.8695377 , 5573.1428014; 202 , 2.4576779 , 6069.7767546; 156 , 0.8330608 , 213.2990954; 132 , 3.4111829 , 2942.4634233; 126 , 1.0829546 , 20.7753955; 115 , 0.6454491 , 0.9803211; 103 , 0.6359985 , 4694.0029547; 102 , 0.9756928 , 15720.8387849; 102 , 4.2667980 , 7.1135470; 99 , 6.2099293 , 2146.1654165; 98 , 0.6810134 , 155.4203994; 86 , 5.9832263 , 161000.6857377; 85 , 1.2987076 , 6275.9623030; 85 , 3.6708009 , 71430.6956181; 80 , 1.8079129 , 17260.1546547; 79 , 3.0369746 , 12036.4607349; 75 , 1.7550891 , 5088.6288398; 74 , 3.5031941 , 3154.6870849; 74 , 4.6792663 , 801.8209311; 70 , 0.8329762 , 9437.7629349; 62 , 3.9776391 , 8827.3902699; 61 , 1.8183989 , 7084.8967811; 57 , 2.7843046 , 6286.5989683; 56 , 4.3869487 , 14143.4952424; 56 , 3.4700606 , 6279.5527316; 52 , 0.1891495 , 12139.5535091; 52 , 1.3328274 , 1748.0164131; 51 , 0.2830683 , 5856.4776591; 49 , 0.4873501 , 1194.4470102; 41 , 5.3681759 , 8429.2412665; 41 , 2.3985094 , 19651.0484811; 39 , 6.1683302 , 10447.3878396; 37 , 6.0413386 , 10213.2855462; 37 , 2.5695748 , 1059.3819302; 36 , 1.7087581 , 2352.8661538; 36 , 1.7759689 , 6812.7668151; 33 , 0.5931028 , 17789.8456198; 30 , 0.4429446 , 83996.8473181; 30 , 2.7397512 , 1349.8674097; 25 , 3.1647089 , 4690.4798364 ]; l1 = [628331966747 0 0; 206059 2.678234558 6283.07585; 4303 2.635122335 12566.1517; 425 1.59046982 3.523118349; 119 5.795557656 26.2983198; 109 2.966310107 1577.343542; 93 2.592111095 18849.22755; 72 1.138405812 529.6909651; 68 1.874533003 398.1490034; 67 4.40932832 5507.553239; 59 2.888157906 5223.69392; 56 2.1747174 155.4203994; 45 0.397995029 796.2980068; 36 0.468754372 775.5226113; 29 2.647322546 7.113547001; 21 5.341382751 0.980321068; 19 1.84628376 5486.777843; 19 4.968551795 213.2990954; 17 2.991167606 6275.962303; 16 0.032165873 2544.31442; 16 1.430493013 2146.165416; 15 1.204697937 10977.0788; 12 2.834322821 1748.016413; 12 3.25805082 5088.62884; 12 5.273797604 1194.44701; 12 2.075020801 4694.002955; 11 0.76614723 553.5694028; 10 1.302634234 6286.598968; 10 4.239258653 1349.86741; 9 2.69956827 242.728604; 9 5.64476086 951.7184063; 8 5.300561729 2352.866154; 6 2.65034514 9437.762935; 6 4.666337263 4690.479836 ]; l2 = [52919 0 0; 8720 1.0721 6283.0758; 309 0.867 12566.152; 27 0.05 3.52; 16 5.19 26.3; 16 3.68 155.42; 10 0.76 18849.23; 9 2.06 77713.77; 7 0.83 775.52; 5 4.66 1577.34; 4 1.03 7.11; 4 3.44 5573.14; 3 5.14 796.3; 3 6.05 5507.55; 3 1.19 242.73; 3 6.12 529.69; 3 0.31 398.15; 3 2.28 553.57; 2 4.38 5223.69; 2 3.75 0.98 ]; l3 = [289 5.844 6283.076; 35 0 0; 17 5.49 12566.15; 3 5.2 155.42; 1 4.72 3.52; 1 5.3 18849.23; 1 5.97 242.73 ]; l4 = [114 3.142 0; 8 4.13 6283.08; 1 3.84 12556.15 ]; l5 = [1 3.14 0 ]; .. latitude terms - Meeus truncates most of these b0 = [ 280 3.19870156 84334.66158; 102 5.422486193 5507.553239; 80 3.880132045 5223.69392; 44 3.704446898 2352.866154; 32 4.000263698 1577.343542 ]; b1 = [ 9 3.90 5507.55; 6 1.73 5223.69 ]; .. Radius vector terms r0 = [ 100013989 0 0; 1670700 3.098463508 6283.07585; 13956 3.055246096 12566.1517; 3084 5.198466744 77713.77147; 1628 1.17387749 5753.384885; 1576 2.846852458 7860.419392; 925 5.452922341 11506.76977; 542 4.564091498 3930.209696; 472 3.661000221 5884.926847; 346 0.963686177 5507.553239; 329 5.899836465 5223.69392; 307 0.298671395 5573.142801; 243 4.273495362 11790.62909; 212 5.847145403 1577.343542; 186 5.021944472 10977.0788; 175 3.011936365 18849.22755; 110 5.055106363 5486.777843; 98 0.886813113 6069.776755; 86 5.689597783 15720.83878; 86 1.270837334 161000.6857; 65 0.272506138 17260.15465; 63 0.921771088 529.6909651; 57 2.01374292 83996.84732; 56 5.241597989 71430.69562; 49 3.245012404 2544.31442; 47 2.578050704 775.5226113; 45 5.537158073 9437.762935; 43 6.01110242 6275.962303; 39 5.360717382 4694.002955; 38 2.39255344 8827.39027; 37 0.829529223 19651.04848; 37 4.901075919 12139.55351; 36 1.67468059 12036.46073; 35 1.842706933 2942.463423; 33 0.243703001 7084.896781; 32 0.183682298 5088.62884; 32 1.777756421 398.1490034; 28 1.213448682 6286.598968; 28 1.899343309 6279.552732; 26 4.588968504 10447.38784 ]; r1 = [ 103019 1.107490 6283.075850; 1721 1.0644 12566.1517; 702 3.142 0; 32 1.02 18849.23; 31 2.84 5507.55; 25 1.32 5223.69; 18 1.42 1577.34; 10 5.91 10977.08; 9 1.42 6275.96; 9 0.27 5486.78 ]; r2 = [ 4359 5.7846 6283.0758; 124 5.579 12566.152; 12 3.14 0; 9 3.63 77713.77; 6 1.87 5573.14; 3 5.47 18849.23 ]; r3 = [ 145 4.273 6283.076; 7 3.92 12566.15 ]; r4 = [ 4 2.56 6283.076 ]; .. Now work out the sums of the terms t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); beta = (sb0 + sb1*t)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); r = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4)/100000000; return [lambda, beta, r]; endfunction function hvenus(day) ## returns the heliocentric ecliptic latitude of Venus given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC .. Longitude coefficents l0 = [ 317614667 0 0; 1353968 5.593133196 10213.28555; 89892 5.306500485 20426.57109; 5477 4.416306525 7860.419392; 3456 2.699644708 11790.62909; 2372 2.993775396 3930.209696; 1664 4.25018935 1577.343542; 1438 4.15745044 9683.594581; 1317 5.186682191 26.2983198; 1201 6.153571153 30639.85664; 769 0.816296159 9437.762935; 761 1.950147021 529.6909651; 708 1.064667072 775.5226113; 585 3.998398848 191.4482661; 500 4.123402101 15720.83878; 429 3.586428598 19367.18916; 327 5.677365837 5507.553239; 326 4.590564731 10404.73381; 232 3.162510571 9153.903616; 180 4.653379156 1109.378552; 155 5.570438889 19651.04848; 128 4.226044937 20.77539549; 128 0.962098227 5661.332049; 106 1.537211913 801.8209311 ]; l1 = [ 1021352943053 0 0; 95708 2.46424449 10213.28555; 14445 0.516245647 20426.57109; 213 1.795479294 30639.85664; 152 6.106352824 1577.343542; 174 2.655358794 26.2983198; 82 5.702341337 191.4482661; 70 2.68136035 9437.762935; 52 3.600130877 775.5226113; 38 1.03379038 529.6909651; 30 1.250563224 5507.553239; 25 6.106647929 10404.73381 ]; l2 = [ 54127 0 0; 3891 0.3451436 10213.28555; 1338 2.020112861 20426.57109; 24 2.04592119 26.2983198; 19 3.535273715 30639.85664; 10 3.971302211 775.5226113; 7 1.519625934 1577.343542; 6 0.999267579 191.4482661 ]; l3 = [ 136 4.80389021 10213.28555; 78 3.668763716 20426.57109; 26 0 0 ]; l4 = [ 114, 3.1416, 0; 3, 5.21, 20426.57; 2, 2.51, 10213.29 ]; l5 = [ 1, 3.14, 0 ]; .. latitude coefficients; b0 = [ 5923638 0.2670278 10213.2855462; 40108 1.14737 20426.57109; 32815 3.14159 0; 1011 1.0895 30639.8566; 149 6.254 18073.705; 138 0.860 1577.344; 130 3.672 9437.763; 120 3.705 2352.866; 108 4.539 22003.915 ]; b1 = [ 513348 1.803643 10213.285546; 4380 3.3862 20426.5711; 199 0 0; 197 2.530 30639.857 ]; b2 = [ 22378 3.38509 10213.28555; 282 0 0; 173 5.256 20426.571; 27 3.87 30639.86 ]; b3 = [ 647 4.992 10213.286; 20 3.14 0; 6 0.77 20426.57; 3 5.44 30639.86 ]; b4 = [ 14 0.32 10213.29 ]; .. Radius vector coefficients r0 = [ 72334821 0 0; 489824 4.021518 10213.285546; 1658 4.9021 20426.5711; 1632 2.8455 7860.4194; 1378 1.1285 11790.6291; 498 2.587 9683.595; 374 1.423 3930.210; 264 5.529 9437.763; 237 2.551 15720.839; 222 2.013 19367.189; 126 2.768 1577.344; 119 3.020 10404.734 ]; r1 = [ 34551 0.89199 10213.28555; 234 1.772 20426.571; 234 3.142 0 ]; r2 = [ 1407 5.0637 10213.2855; 16 5.47 20426.57; 13 0 0 ]; r3 = [ 50 3.22 10213.29 ]; r4 = [ 1 0.92 10213.29 ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4)/100000000; return [lambda, beta, delta]; endfunction function zzterm(a, t) ## calculates the value of a periodic term in the VSOP82 analytical theory ## for the position of the planets - called by the planet position functions tpi = 2*pi(); tr = a'; vec1 = tr[1] * cos(mod(tr[2] + tr[3] * t, tpi)); total = sum(vec1); return total; endfunction function hjupiter(day) ## returns the heliocentric ecliptic latitude of Jupiter given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## Accuracy of order 4 arcsec in longitude .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC l0 = [ 59954691 0 0; 9695899 5.061917931 529.6909651; 573610 1.44406206 7.113547001; 306389 5.4173473 1059.38193; 97178 4.142647088 632.7837393; 72903 3.640429093 522.5774181; 64264 3.411451852 103.0927742; 39806 2.293767449 419.4846439; 38858 1.272317249 316.3918697; 27965 1.784545895 536.8045121; 13590 5.774810316 1589.072895; 8769 3.630003244 949.175609; 8246 3.582279617 206.1855484; 7368 5.081011256 735.8765135; 6263 0.024976437 213.2990954; 6114 4.513195317 1162.474704; 5305 4.186250535 1052.268383; 5305 1.306712368 14.227094; 4905 1.320846317 110.2063212; 4647 4.699581095 3.932153263; 3045 4.316759603 426.5981909; 2610 1.566675949 846.0828348; 2028 1.063765474 3.181393738; 1921 0.971689288 639.8972863; 1765 2.141480778 1066.495477; 1723 3.880360089 1265.567479; 1633 3.582010898 515.4638711; 1432 4.296836903 625.6701923; 973 4.097649571 95.97922722; 884 2.437014261 412.3710969; 733 6.085341132 838.9692878; 731 3.80591234 1581.959348; 709 1.292725737 742.9900605; 692 6.133682229 2118.76386; 614 4.108534968 1478.866574; 582 4.539677176 309.2783227; 495 3.755674614 323.5054167; 441 2.958184609 454.9093665; 417 1.035544302 2.447680555; 390 4.897161059 1692.16567; 376 4.702991248 1368.660253; 341 5.714525258 533.6231184; 330 4.740498195 0.04818411; 262 1.87652461 0.963207847; 261 0.820472464 380.127768; 257 3.724107242 199.0720014; 244 5.220208789 728.7629665; 235 1.226939081 909.8187331; 220 1.65115016 543.9180591; 207 1.854616666 525.7588118; 202 1.806845742 1375.7738; 197 5.29252149 1155.361157; 175 3.729665548 942.062062; 175 3.226349034 1898.351218; 175 5.909735053 956.289156; 158 4.364839218 1795.258444; 151 3.906250226 74.78159857; 149 4.377451043 1685.052123; 141 3.135683579 491.5579295; 138 1.317979208 1169.588251; 131 4.168679455 1045.154836; 117 2.500221409 1596.186442; 117 3.38920921 0.521264862; 106 4.554397982 526.5095714 ]; l1 = [ 52993480757 0 0; 489741 4.220666899 529.6909651; 228919 6.02647464 7.113547001; 27655 4.572659568 1059.38193; 20721 5.459389363 522.5774181; 12106 0.16985765 536.8045121; 6068 4.42419502 103.0927742; 5434 3.984783826 419.4846439; 4238 5.890093513 14.227094; 2212 5.267714466 206.1855484; 1746 4.926693785 1589.072895; 1296 5.551327651 3.181393738; 1173 5.856473044 1052.268383; 1163 0.514508953 3.932153263; 1099 5.307049816 515.4638711; 1007 0.464783986 735.8765135; 1004 3.150403018 426.5981909; 848 5.758058505 110.2063212; 827 4.803120157 213.2990954; 816 0.586430549 1066.495477; 725 5.518274715 639.8972863; 568 5.988670495 625.6701923; 474 4.132452692 412.3710969; 413 5.736528913 95.97922722; 345 4.241595654 632.7837393; 336 3.73248749 1162.474704; 234 4.034699703 949.175609; 234 6.243022266 309.2783227; 199 1.504584428 838.9692878; 195 2.218790109 323.5054167; 187 6.086205659 742.9900605; 184 6.279635888 543.9180591; 171 5.416559838 199.0720014; 131 0.626433774 728.7629665; 115 0.680190502 846.0828348; 115 5.286416991 2118.76386; 108 4.492827601 956.289156; 80 5.824124003 1045.154836; 72 5.341626503 942.062062; 70 5.972634503 532.8723588; 67 5.733651265 21.340641; 66 0.129241914 526.5095714; 65 6.088034903 1581.959348; 59 0.58626971 1155.361157; 58 0.994530873 1596.186442; 57 5.968513048 1169.588251; 57 1.411984388 533.6231184; 55 5.428063837 10.29494074; 52 5.726614484 117.3198682; 52 0.229812991 1368.660253; 50 6.080751478 525.7588118; 47 3.626118432 1478.866574; 47 0.511440732 1265.567479; 40 4.161580136 1692.16567; 34 0.099139049 302.1647757; 33 5.035966895 220.4126424; 32 5.374925307 508.3503241; 29 5.422088971 1272.681026; 29 3.359272415 4.665866446; 29 0.759079097 88.86568022; 25 1.607230634 831.8557407 ]; l2 = [ 47234 4.321483236 7.113547001; 38966 0 0; 30629 2.930214402 529.6909651; 3189 1.055046156 522.5774181; 2729 4.845454814 536.8045121; 2723 3.414115266 1059.38193; 1721 4.187343852 14.227094; 383 5.767907144 419.4846439; 378 0.760489649 515.4638711; 367 6.055091204 103.0927742; 337 3.786443842 3.181393738; 308 0.693566541 206.1855484; 218 3.813891914 1589.072895; 199 5.339964434 1066.495477; 197 2.483564021 3.932153263; 156 1.406424265 1052.268383; 146 3.813731968 639.8972863; 142 1.63435169 426.5981909; 130 5.837388725 412.3710969; 117 1.414354626 625.6701923; 97 4.033834279 110.2063212; 91 1.10630629 95.97922722; 87 2.522351748 632.7837393; 79 4.637261313 543.9180591; 72 2.2171667 735.8765135; 58 0.832163174 199.0720014; 57 3.122920599 213.2990954; 49 1.672837916 309.2783227; 40 4.024854447 21.340641; 40 0.624169458 323.5054167; 36 2.32581247 728.7629665; 29 3.608383278 10.29494074; 28 3.239920137 838.9692878; 26 4.501182983 742.9900605; 26 2.512406239 1162.474704; 25 1.218681107 1045.154836; 24 3.005321393 956.289156; 19 4.290286447 532.8723588; 18 0.809539416 508.3503241; 17 4.200019777 2118.76386; 17 1.834021466 526.5095714; 15 5.810379869 1596.186442; 15 0.681741655 942.062062; 15 3.999896226 117.3198682; 14 5.951695685 316.3918697; 14 1.80336678 302.1647757; 13 2.518566436 88.86568022; 13 4.368562324 1169.588251; 11 4.435866346 525.7588118; 10 1.715631611 1581.959348; 9 2.176845635 1155.361157; 9 3.294527833 220.4126424; 9 3.319244936 831.8557407; 8 5.756722284 846.0828348; 8 2.709555168 533.6231184; 7 2.175600933 1265.567479; 6 0.499398635 949.175609 ]; l3 = [ 6502 2.598628805 7.113547001; 1357 1.346358864 529.6909651; 471 2.475039779 14.227094; 417 3.244512432 536.8045121; 353 2.97360159 522.5774181; 155 2.075655858 1059.38193; 87 2.514315843 515.4638711; 44 0 0; 34 3.826337945 1066.495477; 28 2.447547561 206.1855484; 24 1.276671723 412.3710969; 23 2.982313268 543.9180591; 20 2.10099934 639.8972863; 20 1.40255939 419.4846439; 19 1.593684035 103.0927742; 17 2.302146812 21.340641; 17 2.598214607 1589.072895; 16 3.145211173 625.6701923; 16 3.360301263 1052.268383; 13 2.759738922 95.97922722; 13 2.538622443 199.0720014; 13 6.265781104 426.5981909; 9 1.763349607 10.29494074; 9 2.265632563 110.2063212; 7 3.425664333 309.2783227; 7 4.038695629 728.7629665; 6 2.520964177 508.3503241; 5 2.911846871 1045.154836; 5 5.251961535 323.5054167; 4 4.302902612 88.86568022; 4 3.523813616 302.1647757; 4 4.091253151 735.8765135; 3 1.431759913 956.289156; 3 4.358175077 1596.186442; 3 1.252765908 213.2990954; 3 5.015058398 838.9692878; 3 2.237856733 117.3198682; 2 2.896624092 742.9900605; 2 2.355818712 942.062062 ]; l4 = [ 669 0.852824211 7.113547001; 114 3.141592654 0; 100 0.742589478 14.227094; 50 1.653462082 536.8045121; 44 5.820263866 529.6909651; 32 4.858299867 522.5774181; 15 4.290616358 515.4638711; 9 0.714785207 1059.38193; 5 1.295022594 543.9180591; 4 2.317155166 1066.495477; 4 0.483267975 21.340641; 3 3.002455427 412.3710969; 2 0.398589402 639.8972863; 2 4.259256203 199.0720014; 2 4.905362073 625.6701923; 2 4.261475808 206.1855484; 1 5.255469557 1052.268383; 1 4.716146338 95.97922722; 1 1.286045712 1589.072895 ]; l5 = [ 50 5.26 7.11; 16 5.25 14.23; 4 0.01 536.80; 2 1.10 522.58; 1 3.14 0 ]; .. latitude series b0 = [ 2268616 3.558526067 529.6909651; 110090 0 0; 109972 3.908093474 1059.38193; 8101 3.605095734 522.5774181; 6438 0.306271214 536.8045121; 6044 4.258831088 1589.072895; 1107 2.985344219 1162.474704; 944 1.675222884 426.5981909; 942 2.936190724 1052.268383; 894 1.754474299 7.113547001; 836 5.178819732 103.0927742; 767 2.154735941 632.7837393; 684 3.678087701 213.2990954; 629 0.643432823 1066.495477; 559 0.013548305 846.0828348; 532 2.703059544 110.2063212; 464 1.173372492 949.175609; 431 2.608250005 419.4846439; 351 4.610629907 2118.76386; 132 4.778169907 742.9900605; 123 3.349681814 1692.16567; 116 1.38688232 323.5054167; 115 5.048922954 316.3918697; 104 3.701038381 515.4638711; 103 2.318789996 1478.866574; 102 3.152937854 1581.959348 ]; b1 = [ 177352 5.701664885 529.6909651; 3230 5.779416193 1059.38193; 3081 5.474642965 522.5774181; 2212 4.734774802 536.8045121; 1694 3.141592654 0; 346 4.745951741 1052.268383; 234 5.188560999 1066.495477; 196 6.185542866 7.113547001; 150 3.927212261 1589.072895; 114 3.438972718 632.7837393; 97 2.914263041 949.175609; 82 5.076660975 1162.474704; 77 2.505221887 103.0927742; 77 0.612889814 419.4846439; 74 5.499582922 515.4638711; 61 5.447400844 213.2990954; 50 3.947996166 735.8765135; 46 0.538503609 110.2063212; 45 1.895166452 846.0828348; 37 4.698283928 543.9180591; 36 6.109525788 316.3918697; 32 4.92 1581.96 ]; b2 = [ 8094 1.463228437 529.6909651; 813 3.141592654 0; 742 0.95691639 522.5774181; 399 2.898886664 536.8045121; 342 1.446837897 1059.38193; 74 0.407246759 1052.268383; 46 3.480368958 1066.495477; 30 1.925041713 1589.072895; 29 0.990888318 515.4638711; 23 4.271240524 7.113547001; 14 2.922423873 543.9180591; 12 5.221689325 632.7837393; 11 4.880242225 949.175609; 6 6.210891084 1045.154836 ]; b3 = [ 252 3.381 529.691; 122 2.733 522.577; 49 1.04 536.80; 11 2.31 1052.27; 8 2.77 515.46; 7 4.25 1059.38; 6 1.78 1066.50; 4 1.13 543.92; 3 3.14 0 ]; b4 = [ 15 4.53 522.58; 5 4.47 529.69; 4 5.44 536.80; 3 0 0; 2 4.52 515.46; 1 4.20 1052.27 ]; b5 = [ 1 0.09 522.58 ]; .. radius vector r0 = [ 520887429 0 0; 25209327 3.4910864 529.6909651; 610600 3.841153656 1059.38193; 282029 2.574198799 632.7837393; 187647 2.075903801 522.5774181; 86793 0.710010906 419.4846439; 72063 0.214656947 536.8045121; 65517 5.979958508 316.3918697; 30135 2.161320584 949.175609; 29135 1.677592437 103.0927742; 23947 0.274578549 7.113547001; 23453 3.540231473 735.8765135; 22284 4.193627735 1589.072895; 13033 2.960430557 1162.474704; 12749 2.715501029 1052.268383; 9703 1.906695724 206.1855484; 9161 4.413526189 213.2990954; 7895 2.479075514 426.5981909; 7058 2.181847531 1265.567479; 6138 6.264175425 846.0828348; 5477 5.657293252 639.8972863; 4170 2.016050339 515.4638711; 4137 2.722199797 625.6701923; 3503 0.565312974 1066.495477; 2617 2.009939671 1581.959348; 2500 4.551820559 838.9692878; 2128 6.127514618 742.9900605; 1912 0.856219274 412.3710969; 1611 3.088677893 1368.660253; 1479 2.680261914 1478.866574; 1231 1.890429797 323.5054167; 1217 1.80171561 110.2063212; 1015 1.386732377 454.9093665; 999 2.872089401 309.2783227; 961 4.548769898 2118.76386; 886 4.147859485 533.6231184; 821 1.593425344 1898.351218; 812 5.940918991 909.8187331; 777 3.676969547 728.7629665; 727 3.988246864 1155.361157; 655 2.790656042 1685.052123; 654 3.381507753 1692.16567; 621 4.82284339 956.289156; 615 2.276249156 942.062062; 562 0.080959872 543.9180591; 542 0.283602664 525.7588118 ]; r1 = [ 1271802 2.649375111 529.6909651; 61662 3.00076251 1059.38193; 53444 3.897176442 522.5774181; 41390 0 0; 31185 4.882766635 536.8045121; 11847 2.413295882 419.4846439; 9166 4.759794086 7.113547001; 3404 3.34688538 1589.072895; 3203 5.210832855 735.8765135; 3176 2.792979871 103.0927742; 2806 3.742236936 515.4638711; 2677 4.330528787 1052.268383; 2600 3.634351016 206.1855484; 2412 1.469473083 426.5981909; 2101 3.927626823 639.8972863; 1646 5.309535109 1066.495477; 1641 4.416286698 625.6701923; 1050 3.16113623 213.2990954; 1025 2.55432643 412.3710969; 806 2.677508014 632.7837393; 741 2.170946306 1162.474704; 677 6.249534798 838.9692878; 567 4.576554147 742.9900605; 485 2.468827932 949.175609; 469 4.709734635 543.9180591; 445 0.402811814 323.5054167; 416 5.368360182 728.7629665; 402 4.605288415 309.2783227; 347 4.681488087 14.227094; 338 3.167819511 956.289156; 261 5.342903061 846.0828348; 247 3.923138235 942.062062; 220 4.84210965 1368.660253; 203 5.599954254 1155.361157; 200 4.438888144 1045.154836; 197 3.705514614 2118.76386; 196 3.758775871 199.0720014; 184 4.265267697 95.97922722; 180 4.401654912 532.8723588; 170 4.846474889 526.5095714; 146 6.129583655 533.6231184; 133 1.322457359 110.2063212; 132 4.511879508 525.7588118 ]; r2 = [ 79645 1.358658966 529.6909651; 8252 5.777739354 522.5774181; 7030 3.274769658 536.8045121; 5314 1.838351097 1059.38193; 1861 2.976821394 7.113547001; 964 5.48031822 515.4638711; 836 4.198898817 419.4846439; 498 3.141592654 0; 427 2.227531018 639.8972863; 406 3.782507304 1066.495477; 377 2.242483529 1589.072895; 363 5.367618473 206.1855484; 342 6.099229693 1052.268383; 339 6.12690864 625.6701923; 333 0.003289612 426.5981909; 280 4.261625558 412.3710969; 257 0.96295365 632.7837393; 230 0.705307662 735.8765135; 201 3.068506234 543.9180591; 200 4.428841653 103.0927742; 139 2.932356716 14.227094; 114 0.787139113 728.7629665; 95 1.704980411 838.9692878; 86 5.14434752 323.5054167; 83 0.058348735 309.2783227; 80 2.981223618 742.9900605; 75 1.604951959 956.289156; 70 1.509883575 213.2990954; 67 5.473071781 199.0720014; 62 6.101378899 1045.154836; 56 0.955348105 1162.474704; 52 5.584356256 942.062062; 50 2.720631623 532.8723588; 45 5.524456214 508.3503241; 44 0.271181526 526.5095714; 40 5.945665062 95.97922722 ]; r3 = [ 3519 6.058006338 529.6909651; 1073 1.673213458 536.8045121; 916 1.413296761 522.5774181; 342 0.522965427 1059.38193; 255 1.196254735 7.113547001; 222 0.952252262 515.4638711; 90 3.141592654 0; 69 2.268852823 1066.495477; 58 1.413897453 543.9180591; 58 0.525801176 639.8972863; 51 5.980163647 412.3710969; 47 1.57864238 625.6701923; 43 6.116896091 419.4846439; 37 1.182627623 14.227094; 34 1.66671707 1052.268383; 34 0.847849779 206.1855484; 31 1.042902459 1589.072895; 30 4.63236245 426.5981909; 21 2.500712438 728.7629665; 15 0.891369984 199.0720014; 14 0.960401971 508.3503241; 13 1.502337886 1045.154836; 12 2.609526145 735.8765135; 12 3.555135101 323.5054167; 11 1.790414376 309.2783227; 11 6.278451127 956.289156; 10 6.260168595 103.0927742; 9 3.451268125 838.9692878 ]; r4 = [ 129 0.084193096 536.8045121; 113 4.248588558 529.6909651; 83 3.297549094 522.5774181; 38 2.733266111 515.4638711; 27 5.691425886 7.113547001; 18 5.400125369 1059.38193; 13 6.015604161 543.9180591; 9 0.768139465 1066.495477; 8 5.682280657 14.227094; 7 1.427512921 412.3710969; 6 5.122869325 639.8972863; 5 3.335019473 625.6701923; 3 3.403348051 1052.268383; 3 4.16090413 728.7629665; 3 2.898020351 426.5981909 ]; r5 = [ 11 4.75 536.80; 4 5.92 522.58; 2 5.57 515.46; 2 4.30 543.92; 2 3.69 7.11; 2 4.13 1059.38; 2 5.49 1066.50 ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); sr5 = zzterm(r5, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4 + sr5*t5)/100000000; return [lambda, beta, delta]; endfunction function hmars(day) ## returns the heliocentric ecliptic latitude of Mars given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## More terms than Meeus included as an experiment .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC l0 = [ 620347711.583000000000 0.000000000000 0.000000000000; 18656368.100000000000 5.050371003030 3340.612426699800; 1108216.792000000000 5.400998369580 6681.224853399600; 91798.394000000000 5.754787451110 10021.837280099400; 27744.987000000000 5.970495129420 3.523118349000; 12315.897000000000 0.849560812380 2810.921461605200; 10610.230000000000 2.939585249730 2281.230496510600; 8926.772000000000 4.156978459390 0.017253652200; 8715.688000000000 6.110051597920 13362.449706799200; 7774.867000000000 3.339686550740 5621.842923210400; 6797.552000000000 0.364622436260 398.149003408200; 4161.101000000000 0.228149753300 2942.463423291600; 3575.079000000000 1.661865401410 2544.314419883400; 3075.250000000000 0.856965970820 191.448266111600; 2937.543000000000 6.078937114080 0.067310302800; 2628.122000000000 0.648061435700 3337.089308350800; 2579.842000000000 0.029967061970 3344.135545048800; 2389.420000000000 5.038964013490 796.298006816400; 1798.808000000000 0.656340268440 529.690965094600; 1546.408000000000 2.915796333920 1751.539531416000; 1528.140000000000 1.149793062280 6151.533888305000; 1286.232000000000 3.067959246260 2146.165416475200; 1264.356000000000 3.622750922310 5092.151958115800; 1024.907000000000 3.693342935550 8962.455349910200; 891.567000000000 0.182938990900 16703.062133499000; 858.760000000000 2.400937042040 2914.014235823800; 832.724000000000 4.494957534580 3340.629680352000; 832.718000000000 2.464185912820 3340.595173047600; 748.724000000000 3.822483994680 155.420399434200; 723.863000000000 0.674975658010 3738.761430108000; 712.899000000000 3.663360147880 1059.381930189200; 655.163000000000 0.488640751760 3127.313331261800; 635.557000000000 2.921827042750 8432.764384815600; 552.746000000000 4.474788630160 1748.016413067000; 550.472000000000 3.810012054080 0.980321068200; 472.164000000000 3.625478194100 1194.447010224600; 425.972000000000 0.553651381720 6283.075849991400; 415.132000000000 0.496623147740 213.299095438000; 312.141000000000 0.998533228430 6677.701735050600; 306.552000000000 0.380528629730 6684.747971748600; 302.377000000000 4.486181503210 3532.060692811400; 299.396000000000 2.783237056970 6254.626662523600; 293.199000000000 4.221312779140 20.775395492400; 283.600000000000 5.768854941230 3149.164160588200; 281.073000000000 5.881633729450 1349.867409658800; 274.035000000000 0.133725012110 3340.679737002600; 274.028000000000 0.542221418410 3340.545116397000; 238.857000000000 5.371554716720 4136.910433516200; 236.114000000000 5.755045155760 3333.498879699000; 231.185000000000 1.282406852940 3870.303391794400; 221.225000000000 3.504666722030 382.896532223200; 204.161000000000 2.821332661850 1221.848566321400; 193.126000000000 3.357151377450 3.590428651800; 188.639000000000 1.491030164860 9492.146315004800; 179.196000000000 1.005611125740 951.718406250600; 174.068000000000 2.413603325760 553.569402842400; 172.110000000000 0.439430417190 5486.777843175000; 160.011000000000 3.948547351920 4562.460993021200; 144.305000000000 1.418741934180 135.065080035400; 139.897000000000 3.325925161640 2700.715140385800; 138.245000000000 4.301451769150 7.113547000800; 130.993000000000 4.044917202640 12303.067776610000; 128.102000000000 2.208066510080 1592.596013632800; 128.062000000000 1.806656433320 5088.628839766800; 116.945000000000 3.128052822070 7903.073419721000; 113.486000000000 3.700707981230 1589.072895283800; 110.375000000000 1.051950796870 242.728603974000; 104.541000000000 0.785353820760 8827.390269874800; 100.090000000000 3.243437408610 11773.376811515400; 98.947000000000 4.845582947400 6681.242107051800; 98.946000000000 2.814811403710 6681.207599747400; 95.592000000000 0.539541811490 20043.674560198800; 86.931000000000 2.201867405230 11243.685846420800; 86.751000000000 1.020922215630 7079.373856807800; 84.187000000000 3.989707207300 4399.994356889000; 83.749000000000 3.202561309900 4690.479836358600; 75.034000000000 0.766434182520 6467.925757961600; 73.476000000000 2.184280125670 8429.241266466600; 72.091000000000 5.846721025250 5884.926846583200; 71.437000000000 2.803075500160 3185.192027265600; 68.984000000000 3.763997317880 6041.327567085600; 68.414000000000 2.738349144120 2288.344043511400; 66.706000000000 0.736306207660 3723.508958923000; 65.320000000000 2.681185975780 28.449187467800; 63.376000000000 0.912962407980 3553.911522137800; 63.314000000000 4.527714704700 426.598190876000; 61.683000000000 6.168315094190 2274.116949509800; 56.629000000000 5.062504102060 15.252471185000; 56.396000000000 1.687271503040 6872.673119511200; 55.909000000000 3.462608334950 263.083923372800; 55.488000000000 4.606254670200 4292.330832950400; 52.256000000000 0.899415313070 9623.688276691200; 51.678000000000 2.813074926820 3339.632105631600; 51.332000000000 4.148236365340 3341.592747768000; 48.542000000000 3.956704187190 4535.059436924400; 45.905000000000 0.287189814970 5614.729376209600; 45.829000000000 0.787842350620 1990.745017041000; 44.174000000000 3.195297367020 5628.956470211200; 41.939000000000 3.583264251150 8031.092263058400; 41.223000000000 6.020193299220 3894.181829542200; 40.671000000000 3.138326218290 9595.239089223400; 39.495000000000 5.632253921600 3097.883822725790; 38.790000000000 1.351984987950 10018.314161750400; 38.352000000000 5.828807074260 3191.049229565200; 38.206000000000 2.348359840630 162.466636132200; 38.107000000000 0.734019463200 10025.360398448400; 37.752000000000 4.154829552990 2803.807914604400; 37.135000000000 0.685081507740 2818.035008606000; 36.716000000000 2.637207751020 692.157601226800; 34.031000000000 2.595440825090 11769.853693166400; 33.626000000000 6.119924010520 6489.776587288000; 33.148000000000 1.140237700040 5.522924307400; 32.562000000000 0.484006593330 6681.292163702400; 32.561000000000 0.892503168880 6681.157543096800; 31.168000000000 3.981609129820 20.355319398800; 29.007000000000 2.427073856740 3319.837031207400; 28.686000000000 5.720554567340 7477.522860216000; 27.584000000000 1.596912030580 7210.915818494200; 27.540000000000 6.083899423370 6674.111306398800; 27.278000000000 4.556453281220 3361.387822192200; 26.357000000000 1.345326465740 3496.032826134000; 25.637000000000 0.249635234200 522.577418093800; 25.512000000000 3.432423528040 3443.705200918400; 25.380000000000 0.520931161120 10.636665349800; 24.554000000000 4.003231830880 11371.704689758200; 24.378000000000 0.969946964130 632.783739313200; 23.764000000000 1.840583772560 12832.758741704600; 23.079000000000 4.749902142230 3347.725973700600; 22.816000000000 3.526282121060 1648.446757197400; 22.662000000000 3.954463244170 4989.059183897200; 22.542000000000 5.648617034380 2388.894020449200; 22.274000000000 0.721061337210 266.607041721800; 21.530000000000 6.153887571770 3264.346355424200; 21.343000000000 4.282187578630 4032.770027926600; 21.202000000000 3.118244722840 2957.715894476600; 20.158000000000 3.671315049460 1758.653078416800; 20.093000000000 1.082474160650 7064.121385622800; 19.849000000000 2.376689207450 10713.994881326200; 17.709000000000 3.697423439740 3344.202855351600 ]; l1 = [ 334085627474.34200000000 0.00000000000 0.00000000000; 1458227.05100000000 3.60426053609 3340.61242669980; 164901.34300000000 3.92631250962 6681.22485339960; 19963.33800000000 4.26594061030 10021.83728009940; 3452.39900000000 4.73210386365 3.52311834900; 2485.48000000000 4.61277567318 13362.44970679920; 841.55100000000 4.45858256765 2281.23049651060; 537.56600000000 5.01589727492 398.14900340820; 521.04100000000 4.99422678175 3344.13554504880; 432.61400000000 2.56066402860 191.44826611160; 429.65600000000 5.31646162367 155.42039943420; 381.74700000000 3.53881289437 796.29800681640; 314.12900000000 4.96335266049 16703.06213349900; 282.80400000000 3.15967518204 2544.31441988340; 205.66400000000 4.56891455660 2146.16541647520; 168.80500000000 1.32894813366 3337.08930835080; 157.58700000000 4.18501035954 1751.53953141600; 133.68600000000 2.23325104196 0.98032106820; 133.56300000000 5.97421903927 1748.01641306700; 117.59100000000 6.02407213861 6151.53388830500; 116.56100000000 2.21347652545 1059.38193018920; 113.87600000000 2.12869455089 1194.44701022460; 113.59500000000 5.42803224317 3738.76143010800; 91.09800000000 1.09627836591 1349.86740965880; 85.34200000000 3.90854841008 553.56940284240; 83.30100000000 5.29636626272 6684.74797174860; 80.77600000000 4.42813405865 529.69096509460; 79.53100000000 2.24864266330 8962.45534991020; 72.94600000000 2.50189460554 951.71840625060; 72.50500000000 5.84208163240 242.72860397400; 71.48700000000 3.85636094435 2914.01423582380; 67.58200000000 5.02327686473 382.89653222320; 65.08900000000 1.01802439311 3340.59517304760; 65.08900000000 3.04879603978 3340.62968035200; 61.50800000000 4.15183159800 3149.16416058820; 56.52000000000 3.88813699320 4136.91043351620; 48.47700000000 4.87362121538 213.29909543800; 47.61300000000 1.18238046057 3333.49887969900; 46.58400000000 1.31452419914 3185.19202726560; 41.34300000000 0.71385375517 1592.59601363280; 40.27200000000 2.72542480614 7.11354700080; 40.05500000000 5.31611875491 20043.67456019880; 32.88600000000 5.41067411968 6283.07584999140; 28.24400000000 0.04534124888 9492.14631500480; 26.57900000000 3.88960724782 1221.84856632140; 26.55400000000 5.11271747607 2700.71514038580; 23.33500000000 6.16762213077 3532.06069281140; 22.79700000000 1.54504711003 2274.11694950980; 22.61200000000 0.83775884934 3097.88382272579; 22.43100000000 5.46592525433 20.35531939880; 22.29400000000 5.88516997273 3870.30339179440; 21.42500000000 4.97081508139 3340.67973700260; 21.41800000000 5.37934044204 3340.54511639700; 21.10400000000 3.52525428062 15.25247118500; 20.43100000000 2.36353950189 1589.07289528380; 20.18600000000 3.36375535766 5088.62883976680; 20.02900000000 4.73119428749 4690.47983635860; 19.96400000000 5.78652958398 7079.37385680780; 19.67500000000 2.57805423988 12303.06777661000; 19.46800000000 0.49216434489 6677.70173505060; 19.45500000000 2.53112676345 4399.99435688900; 18.50500000000 5.57863503922 1990.74501704100; 17.81100000000 6.12537931996 4292.33083295040; 16.59900000000 1.25519718278 3894.18182954220; 16.47200000000 2.60291845066 3341.59274776800; 15.38100000000 2.47009470350 4535.05943692440; 15.30700000000 2.26515985343 3723.50895892300; 15.00000000000 1.03464802434 2288.34404351140; 14.70500000000 3.36979890389 6681.24210705180; 14.70500000000 1.33902715586 6681.20759974740; 13.64400000000 1.97739547259 5614.72937620960; 13.53500000000 2.12334410410 5486.77784317500; 13.27500000000 3.42243595774 5621.84292321040; 13.01300000000 1.51424752315 5628.95647021120; 12.95000000000 5.61929676688 10025.36039844840; 12.68200000000 2.95022113262 3496.03282613400; 11.85400000000 5.47630686910 3553.91152213780; 11.85000000000 3.12701832949 426.59819087600; 11.76400000000 2.58551521265 8432.76438481560; 11.35300000000 6.23438193885 135.06508003540; 11.13200000000 5.84178807242 2803.80791460440; 10.95800000000 4.15771850822 2388.89402044920; 10.86700000000 5.28184140482 2818.03500860600; 10.47200000000 2.73581537999 2787.04302385740; 9.70800000000 4.52957217749 6489.77658728800; 8.84000000000 4.23294294197 7477.52286021600; 8.69500000000 4.43542512603 5092.15195811580; 8.65000000000 4.33256981793 3339.63210563160; 8.56200000000 3.16141186861 162.46663613220; 8.49000000000 1.91378007528 11773.37681151540; 8.43400000000 3.16292250873 3347.72597370060; 8.34400000000 2.18273563186 23.87843774780; 8.13300000000 1.61295625304 2957.71589447660; 8.03400000000 5.69983564288 6041.32756708560; 7.69600000000 5.71877332978 9623.68827669120; 7.37200000000 6.17831593269 3583.34103067380; 6.66400000000 5.07517838003 8031.09226305840 ]; l2 = [ 58015.79100000000 2.04979463279 3340.61242669980; 54187.64500000000 0.00000000000 0.00000000000; 13908.42600000000 2.45742359888 6681.22485339960; 2465.10400000000 2.80000020929 10021.83728009940; 398.37900000000 3.14118428289 13362.44970679920; 222.02200000000 3.19436080019 3.52311834900; 120.95700000000 0.54325292454 155.42039943420; 61.51700000000 3.48529427371 16703.06213349900; 53.63800000000 3.54191121461 3344.13554504880; 34.26800000000 6.00188499119 2281.23049651060; 31.66500000000 4.14015171788 191.44826611160; 29.83900000000 1.99870679845 796.29800681640; 23.16800000000 4.33403365928 242.72860397400; 21.65900000000 3.44532466378 398.14900340820; 20.37000000000 5.42191375400 553.56940284240; 16.22700000000 0.65678953303 0.98032106820; 16.04400000000 6.11000472441 2146.16541647520; 15.64800000000 1.22086121940 1748.01641306700; 14.92700000000 6.09541783564 3185.19202726560; 14.41600000000 4.01923812101 951.71840625060; 14.31700000000 2.61851897591 1349.86740965880; 13.35200000000 0.60189008414 1194.44701022460; 11.93400000000 3.86122163021 6684.74797174860; 11.26000000000 4.71822363671 2544.31441988340; 10.39600000000 0.25038714677 382.89653222320; 9.46800000000 0.68170713564 1059.38193018920; 9.22900000000 3.83209092321 20043.67456019880; 9.00500000000 3.88271826102 3738.76143010800; 7.50100000000 5.46498630412 1751.53953141600; 6.85900000000 2.57522504136 3149.16416058820; 6.68100000000 2.37843690339 4136.91043351620; 6.49700000000 5.47773072872 1592.59601363280; 6.31100000000 2.34104793674 3097.88382272579; 5.87000000000 1.14783576679 7.11354700080; 4.76400000000 2.89684755585 3333.49887969900; 4.64700000000 4.42957708526 6151.53388830500; 4.16600000000 3.68631477611 5614.72937620960; 4.04500000000 6.12493402657 5628.95647021120; 3.65300000000 4.06679068397 1990.74501704100; 3.61800000000 2.46868561769 529.69096509460; 3.27700000000 0.68101740787 8962.45534991020; 3.25300000000 2.79565340390 3894.18182954220; 3.09100000000 4.56861203364 3496.03282613400; 2.92100000000 5.41458945995 2914.01423582380; 2.92100000000 1.23050883841 2787.04302385740; 2.88800000000 3.41062353663 3337.08930835080; 2.78400000000 1.38911141844 4292.33083295040; 2.63000000000 4.67640929857 3583.34103067380; 2.62000000000 1.04061894134 3341.59274776800; 2.60200000000 2.64911714813 2388.89402044920; 2.59400000000 1.49510566123 3340.62968035200; 2.59300000000 5.74934234498 3340.59517304760; 2.41800000000 0.96341462666 4535.05943692440; 2.41600000000 1.04749173375 4399.99435688900; 2.38600000000 4.27072575550 7079.37385680780; 2.35700000000 4.84628239765 9492.14631500480; 2.34400000000 4.18104725028 10025.36039844840; 2.34400000000 0.01425578204 4690.47983635860; 2.19100000000 3.26449527357 213.29909543800; 2.18700000000 0.16036551231 6525.80445396540; 2.12600000000 0.48290227706 2700.71514038580; 1.83000000000 0.97181050149 1589.07289528380; 1.76300000000 2.51660121293 2810.92146160520; 1.75900000000 3.81170701376 3723.50895892300; 1.63300000000 1.10703599922 12303.06777661000; 1.62900000000 4.94267977718 1221.84856632140; 1.61700000000 4.95614491689 5088.62883976680; 1.51300000000 2.92614134711 640.87760738220; 1.50400000000 0.11031912519 2957.71589447660; 1.43100000000 2.97747408389 6489.77658728800; 1.40800000000 1.54395721611 3347.72597370060; 1.40100000000 3.85907867678 6283.07584999140; 1.39200000000 2.73498041122 7477.52286021600; 1.33800000000 5.29685392418 6677.70173505060; 1.23600000000 3.77245965590 2699.73481931760; 1.23400000000 1.88931735265 6681.24210705180; 1.23400000000 6.14168429036 6681.20759974740 ]; l3 = [ 1482.42300000000 0.44434694876 3340.61242669980; 662.09500000000 0.88469178686 6681.22485339960; 188.26800000000 1.28799982497 10021.83728009940; 41.47400000000 1.64850786997 13362.44970679920; 25.99400000000 0.00000000000 0.00000000000; 22.66100000000 2.05267665262 155.42039943420; 10.45400000000 1.58006906385 3.52311834900; 8.02400000000 1.99858757687 16703.06213349900; 4.90000000000 2.82452457966 242.72860397400; 3.78200000000 2.01914272515 3344.13554504880; 3.17600000000 4.59144897927 3185.19202726560; 3.13400000000 0.65044714325 553.56940284240; 1.68400000000 5.53835848782 951.71840625060; 1.51100000000 5.71795850828 191.44826611160; 1.44800000000 0.45869142895 796.29800681640; 1.44200000000 2.34368495577 20043.67456019880; 1.30200000000 5.36284013048 0.98032106820; 1.16900000000 4.14601161433 1349.86740965880; 1.13300000000 2.38180830662 6684.74797174860; 1.03700000000 1.76892750558 382.89653222320; 0.89400000000 5.33688328934 1194.44701022460; 0.80700000000 2.74798886181 1748.01641306700; 0.64700000000 3.17645475605 3583.34103067380; 0.64000000000 6.10665147849 3496.03282613400; 0.56700000000 5.85922384979 7.11354700080; 0.55800000000 1.85212342360 398.14900340820; 0.51900000000 4.93376176788 6525.80445396540; 0.50800000000 1.01139298015 3149.16416058820; 0.45200000000 5.98109989317 2787.04302385740; 0.40500000000 1.27295444059 2281.23049651060 ]; l4 = [ 113.96900000000 3.14159265359 0.00000000000; 28.72500000000 5.63662412043 6681.22485339960; 24.44700000000 5.13868481454 3340.61242669980; 11.18700000000 6.03161074431 10021.83728009940; 3.25200000000 0.13228350651 13362.44970679920; 3.19000000000 3.56267988299 155.42039943420; 0.78700000000 0.49340783377 16703.06213349900; 0.77600000000 1.31734531594 242.72860397400; 0.49400000000 3.06356214498 3185.19202726560; 0.37400000000 2.15785846355 553.56940284240; 0.33100000000 6.23159792887 3.52311834900; 0.19700000000 0.44350153983 3344.13554504880; 0.18100000000 0.81531283571 20043.67456019880; 0.16800000000 3.73509781785 3496.03282613400; 0.11500000000 1.66898531261 3583.34103067380; 0.09200000000 3.40530361815 6525.80445396540; 0.08600000000 0.79259553758 6684.74797174860; 0.06400000000 4.47443580658 2787.04302385740; 0.04500000000 5.17216217058 3097.88382272579; 0.04100000000 1.21875027733 23384.28698689860; 0.03600000000 5.53975653407 3149.16416058820 ]; l5 = [ 0.86800000000 3.14159265359 0.00000000000; 0.71000000000 4.04089996521 6681.22485339960; 0.51000000000 4.49214901625 10021.83728009940; 0.35700000000 5.07435505061 155.42039943420; 0.22300000000 3.51351884241 3340.61242669980 ]; .. latitude series b0 = [ 3197134.98600000000 3.76832042432 3340.61242669980; 298033.23400000000 4.10616996243 6681.22485339960; 289104.74200000000 0.00000000000 0.00000000000; 31365.53800000000 4.44651052853 10021.83728009940; 3484.10000000000 4.78812547889 13362.44970679920; 443.40100000000 5.02642620491 3344.13554504880; 442.99900000000 5.65233015876 3337.08930835080; 399.10900000000 5.13056814700 16703.06213349900; 292.50600000000 3.79290644595 2281.23049651060; 181.98200000000 6.13648011704 6151.53388830500; 163.15900000000 4.26399626634 529.69096509460; 159.67800000000 2.23194610246 1059.38193018920; 149.29700000000 2.16501209917 5621.84292321040; 142.68600000000 1.18215016110 3340.59517304760; 142.68500000000 3.21292180820 3340.62968035200; 139.32300000000 2.41796344238 8962.45534991020; 86.37700000000 5.74429648412 3738.76143010800; 83.27600000000 5.98866315739 6677.70173505060; 82.54400000000 5.36667872319 6684.74797174860; 73.64000000000 5.09187524843 398.14900340820; 72.66000000000 5.53775710437 6283.07584999140; 63.11100000000 0.73049113369 5884.92684658320; 62.33800000000 4.85071999184 2942.46342329160; 60.11600000000 3.67960808826 796.29800681640; 47.19900000000 4.52184736343 3149.16416058820; 46.95300000000 5.13486627234 3340.67973700260; 46.95100000000 5.54339723804 3340.54511639700; 46.63000000000 5.47361665459 20043.67456019880; 45.58800000000 2.13262507507 2810.92146160520; 41.26900000000 0.20003189001 9492.14631500480; 38.54000000000 4.08008443274 4136.91043351620; 33.06900000000 4.06581918329 1751.53953141600; 29.69400000000 5.92218297386 3532.06069281140 ]; b1 = [ 350068.84500000000 5.36847836211 3340.61242669980; 14116.03000000000 3.14159265359 0.00000000000; 9670.75500000000 5.47877786506 6681.22485339960; 1471.91800000000 3.20205766795 10021.83728009940; 425.86400000000 3.40843812875 13362.44970679920; 102.03900000000 0.77617286189 3337.08930835080; 78.84800000000 3.71768293865 16703.06213349900; 32.70800000000 3.45803723682 5621.84292321040; 26.17100000000 2.48293558065 2281.23049651060; 20.71200000000 1.44120802297 6151.53388830500; 18.29400000000 6.03102943125 529.69096509460; 16.97500000000 4.81115186866 3344.13554504880; 15.68000000000 3.93075566599 8962.45534991020; 15.62200000000 2.78241383265 3340.59517304760; 15.62200000000 4.81318636318 3340.62968035200; 14.26800000000 0.24640247719 2942.46342329160; 13.77100000000 1.67983063909 3532.06069281140; 13.06700000000 0.97324736181 6677.70173505060; 12.71100000000 4.04546734935 20043.67456019880; 12.49300000000 2.25620513522 5884.92684658320; 8.80000000000 0.34079528233 398.14900340820 ]; b2 = [ 16726.69000000000 0.60221392419 3340.61242669980; 4986.79900000000 3.14159265359 0.00000000000; 302.14100000000 5.55871276021 6681.22485339960; 25.76700000000 1.89662673499 13362.44970679920; 21.45200000000 0.91749968618 10021.83728009940; 11.82000000000 2.24240738700 3337.08930835080; 7.98500000000 2.24892866611 16703.06213349900; 2.96000000000 5.89425825808 3496.03282613400; 2.44500000000 5.18770525274 5621.84292321040; 1.77900000000 2.58759968520 20043.67456019880; 1.50100000000 3.18533003542 3532.06069281140; 1.42800000000 1.25238140580 2281.23049651060; 1.25900000000 4.80695172904 3185.19202726560; 1.10900000000 3.80982317372 5884.92684658320; 1.02900000000 2.35029907056 6677.70173505060 ]; b3 = [ 606.50600000000 1.98050633529 3340.61242669980; 42.61100000000 0.00000000000 0.00000000000; 13.65200000000 1.79588228800 6681.22485339960; 2.73000000000 3.45377082121 10021.83728009940; 0.92900000000 3.75226159072 3337.08930835080; 0.60700000000 0.10618486408 13362.44970679920; 0.61700000000 1.14471772765 3496.03282613400; 0.47900000000 0.70504966293 16703.06213349900; 0.18500000000 3.28778562029 3185.19202726560; 0.16900000000 0.29980532608 5621.84292321040 ]; b4 = [ 11.33400000000 3.45724352586 3340.61242669980; 13.36900000000 0.00000000000 0.00000000000; 0.74400000000 0.50445805257 6681.22485339960; 0.14800000000 1.05056602649 10021.83728009940; 0.10200000000 2.66185835593 3496.03282613400; 0.05300000000 5.27888218929 3337.08930835080 ]; b5 = [ 0.457 4.86794125358 3340.61242669980; 0.053 5.30547050586 6681.22485339960 ]; .. radius vector r0 = [ 153033488.27600000000 0.00000000000 0.00000000000; 14184953.15300000000 3.47971283519 3340.61242669980; 660776.35700000000 3.81783442097 6681.22485339960; 46179.11700000000 4.15595316284 10021.83728009940; 8109.73800000000 5.55958460165 2810.92146160520; 7485.31500000000 1.77238998069 5621.84292321040; 5523.19300000000 1.36436318880 2281.23049651060; 3825.16000000000 4.49407182408 13362.44970679920; 2484.38500000000 4.92545577893 2942.46342329160; 2306.53900000000 0.09081742493 2544.31441988340; 1999.39900000000 5.36059605227 3337.08930835080; 1960.19800000000 4.74249386323 3344.13554504880; 1167.11500000000 2.11261501155 5092.15195811580; 1102.82800000000 5.00908264160 398.14900340820; 992.25200000000 5.83862401067 6151.53388830500; 899.07700000000 4.40790433994 529.69096509460; 807.34800000000 2.10216647104 1059.38193018920; 797.91000000000 3.44839026172 796.29800681640; 740.98000000000 1.49906336892 2146.16541647520; 725.58300000000 1.24516913473 8432.76438481560; 692.34000000000 2.13378814785 8962.45534991020; 633.14400000000 0.89353285018 3340.59517304760; 633.14000000000 2.92430448169 3340.62968035200; 629.97600000000 1.28738135858 1751.53953141600; 574.35200000000 0.82896196337 2914.01423582380; 526.18700000000 5.38292276228 3738.76143010800; 472.77600000000 5.19850457873 3127.31333126180; 348.09500000000 4.83219198908 16703.06213349900; 283.70200000000 2.90692294913 3532.06069281140; 279.55200000000 5.25749247548 6283.07584999140; 275.50100000000 1.21767967781 6254.62666252360; 275.22400000000 2.90818883832 1748.01641306700; 269.89100000000 3.76394728622 5884.92684658320; 239.13300000000 2.03669896238 1194.44701022460; 233.82700000000 5.10546492529 5486.77784317500; 228.12800000000 3.25529020620 6872.67311951120; 223.19000000000 4.19861593779 3149.16416058820; 219.42800000000 5.58340248784 191.44826611160; 208.33600000000 4.84626442122 3340.67973700260; 208.33300000000 5.25476080773 3340.54511639700; 186.21300000000 5.69871555748 6677.70173505060; 182.68600000000 5.08062683355 6684.74797174860; 178.61300000000 4.18423025538 3333.49887969900; 175.99500000000 5.95341786369 3870.30339179440; 163.53400000000 3.79889068111 4136.91043351620; 144.28600000000 0.21296012258 5088.62883976680; 141.75900000000 2.47790321309 4562.46099302120; 133.12000000000 1.53910106710 7903.07341972100; 128.55500000000 5.49883294915 8827.39026987480; 118.78100000000 2.12178071222 1589.07289528380; 114.94100000000 4.31745088059 1349.86740965880; 111.53800000000 0.55339169625 11243.68584642080; 102.09600000000 6.18138550087 9492.14631500480; 86.65900000000 1.74988330093 2700.71514038580; 85.31200000000 1.61621097912 4690.47983635860; 84.47000000000 0.62274593110 1592.59601363280; 83.21200000000 0.61553380568 8429.24126646660; 82.49800000000 1.62227044590 11773.37681151540; 71.82600000000 2.47489899385 12303.06777661000; 68.59900000000 2.40197828418 4399.99435688900; 66.50900000000 2.21307705185 6041.32756708560; 63.64100000000 2.67334126661 426.59819087600; 62.01500000000 1.10065866221 1221.84856632140; 58.95900000000 3.26242666052 6681.24210705180; 58.95900000000 1.23165502899 6681.20759974740; 58.55900000000 4.72052787516 213.29909543800; 55.81100000000 1.23288325946 3185.19202726560; 55.68600000000 5.44686699242 3723.50895892300; 54.98900000000 5.72691385306 951.71840625060; 52.41800000000 3.02366828926 4292.33083295040; 51.56100000000 5.72326937712 7079.37385680780; 48.93900000000 5.61614696751 3553.91152213780; 45.41400000000 5.43290921705 6467.92575796160; 44.62900000000 2.01473640390 8031.09226305840; 44.29200000000 5.00341366850 5614.72937620960; 43.25600000000 1.03732072925 11769.85369316640; 42.44400000000 2.26551590902 155.42039943420; 42.19100000000 1.63253742760 5628.95647021120; 39.23700000000 1.24237122859 3339.63210563160; 38.95600000000 2.57760416009 3341.59274776800; 36.43500000000 4.43921812388 3894.18182954220; 35.98000000000 1.15966567007 2288.34404351140; 35.26500000000 5.49029710802 1990.74501704100; 33.62300000000 5.17029029766 20043.67456019880; 33.06500000000 0.85467740581 553.56940284240; 32.25900000000 2.38215172582 4535.05943692440; 31.97200000000 1.93970478412 382.89653222320; 31.94300000000 4.59258406791 2274.11694950980; 31.87000000000 4.37521442752 3.52311834900; 30.34500000000 2.44177670130 11371.70468975820; 29.35000000000 4.06034813442 3097.88382272579; 27.90400000000 4.25805969214 3191.04922956520; 27.54300000000 1.57668567401 9595.23908922340; 26.16600000000 5.58466944895 9623.68827669120; 25.15900000000 0.81355213242 10713.99488132620; 24.77200000000 5.38970742761 2818.03500860600; 24.73200000000 2.58034797703 2803.80791460440; 23.35900000000 6.01453778225 3496.03282613400; 22.07000000000 0.85747723964 3319.83703120740 ]; r1 = [ 1107433.34000000000 2.03250524950 3340.61242669980; 103175.88600000000 2.37071845682 6681.22485339960; 12877.20000000000 0.00000000000 0.00000000000; 10815.88000000000 2.70888093803 10021.83728009940; 1194.55000000000 3.04702182503 13362.44970679920; 438.57900000000 2.88835072628 2281.23049651060; 395.69800000000 3.42324611291 3344.13554504880; 182.57200000000 1.58428644001 2544.31441988340; 135.85000000000 3.38507017993 16703.06213349900; 128.36200000000 6.04343360441 3337.08930835080; 128.20400000000 0.62991220570 1059.38193018920; 127.06800000000 1.95389775740 796.29800681640; 118.44300000000 2.99761345074 2146.16541647520; 87.53700000000 3.42052758979 398.14900340820; 83.02600000000 3.85574986653 3738.76143010800; 75.59800000000 4.45101839349 6151.53388830500; 71.99900000000 2.76442180680 529.69096509460; 66.54200000000 2.54892602695 1751.53953141600; 66.43000000000 4.40597549957 1748.01641306700; 57.51800000000 0.54354327916 1194.44701022460; 54.31400000000 0.67750943459 8962.45534991020; 51.03500000000 3.72585409207 6684.74797174860; 49.42800000000 5.72959428364 3340.59517304760; 49.42400000000 1.47717922226 3340.62968035200; 48.31800000000 2.58061691301 3149.16416058820; 47.86300000000 2.28527896843 2914.01423582380; 38.95300000000 2.31900090554 4136.91043351620; 37.17600000000 5.81439911546 1349.86740965880; 36.38400000000 6.02728752344 3185.19202726560; 36.03600000000 5.89508336048 3333.49887969900; 31.11500000000 0.97832506960 191.44826611160; 27.24400000000 5.41367977087 1592.59601363280; 24.30000000000 3.75843924498 155.42039943420; 22.80400000000 1.74830773908 5088.62883976680; 22.32400000000 0.93932040730 951.71840625060; 21.70800000000 3.83571581352 6283.07584999140; 21.63100000000 4.56895741061 3532.06069281140; 21.30400000000 0.78049229782 1589.07289528380; 20.42800000000 3.13540712557 4690.47983635860; 18.23700000000 0.41328624131 5486.77784317500; 17.95600000000 4.21930481803 3870.30339179440; 16.85000000000 4.53690440252 4292.33083295040; 16.80300000000 5.54857987615 3097.88382272579; 16.52800000000 0.96752074938 4399.99435688900; 16.46300000000 3.53882915214 2700.71514038580; 16.25100000000 3.80760134974 3340.54511639700; 16.25100000000 3.39910907599 3340.67973700260; 16.17100000000 2.34870953554 553.56940284240; 15.75500000000 4.75736730681 9492.14631500480; 15.74600000000 3.72356090283 20043.67456019880; 14.69900000000 5.95325006816 3894.18182954220; 14.25900000000 3.99897353022 1990.74501704100; 13.16900000000 0.41461716663 5614.72937620960; 13.01000000000 5.14230107067 6677.70173505060; 12.49200000000 1.03211063742 3341.59274776800; 12.40800000000 6.23142869816 5628.95647021120; 11.27200000000 1.02375627844 12303.06777661000 ]; r2 = [ 44242.24700000000 0.47930603943 3340.61242669980; 8138.04200000000 0.86998398093 6681.22485339960; 1274.91500000000 1.22594050809 10021.83728009940; 187.38700000000 1.57298991982 13362.44970679920; 52.39600000000 3.14159265359 0.00000000000; 40.74400000000 1.97080175060 3344.13554504880; 26.61600000000 1.91665615762 16703.06213349900; 17.82500000000 4.43499505333 2281.23049651060; 11.71300000000 4.52510453730 3185.19202726560; 10.20900000000 5.39143469548 1059.38193018920; 9.95000000000 0.41870577185 796.29800681640; 9.23700000000 4.53579272961 2146.16541647520; 7.78500000000 5.93369079547 1748.01641306700; 7.29900000000 3.14218509183 2544.31441988340; 7.21700000000 2.29300859074 6684.74797174860; 6.80800000000 5.26702580055 155.42039943420; 6.74900000000 5.30194395749 1194.44701022460; 6.52800000000 2.30781369329 3738.76143010800; 5.84000000000 1.05191350362 1349.86740965880; 5.39100000000 1.00223256041 3149.16416058820; 4.69500000000 0.76880586144 3097.88382272579; 4.40600000000 2.45556303355 951.71840625060; 4.28600000000 3.89643520638 1592.59601363280 ]; r3 = [ 1113.10700000000 5.14987350142 3340.61242669980; 424.44600000000 5.61343766478 6681.22485339960; 100.04400000000 5.99726827028 10021.83728009940; 19.60600000000 0.07633062094 13362.44970679920; 4.69300000000 3.14159265359 0.00000000000; 3.47700000000 0.42951907576 16703.06213349900; 2.86900000000 0.44711842697 3344.13554504880; 2.42800000000 3.02115527957 3185.19202726560; 0.68800000000 0.80693359444 6684.74797174860; 0.57700000000 0.77853275120 20043.67456019880; 0.54000000000 3.86836515672 1059.38193018920; 0.48700000000 1.60862391345 3583.34103067380; 0.46800000000 4.52450786544 3496.03282613400; 0.39700000000 5.71967986581 3149.16416058820; 0.36200000000 4.42397903418 2787.04302385740 ]; r4 = [ 19.55200000000 3.58211650473 3340.61242669980; 16.32300000000 4.05116076923 6681.22485339960; 5.84800000000 4.46383962094 10021.83728009940; 1.53200000000 4.84374321619 13362.44970679920; 0.37500000000 1.50962233608 3185.19202726560; 0.33900000000 5.20684967613 16703.06213349900; 0.15100000000 5.16472931648 3344.13554504880; 0.14800000000 0.00000000000 0.00000000000; 0.12500000000 2.19233532803 3496.03282613400; 0.08700000000 0.10275067375 3583.34103067380 ]; r5 = [ 19.55200000000 2.47617204701 6681.22485339960; 16.32300000000 2.91510547706 10021.83728009940; 5.84800000000 1.76888962311 3340.61242669980; 1.53200000000 3.31378377179 13362.44970679920 ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); sr5 = zzterm(r5, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4 + sr5*t5)/100000000; return [lambda, beta, delta]; endfunction function hmercury(day) ## returns the heliocentric ecliptic latitude of Mercury given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## More terms than Meeus included as an experiment .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC l0 = [ 440250710.144 0.00000000000 0.0000000000; 40989414.976 1.48302034194 26087.9031415742; 5046294.199 4.47785489540 52175.8062831484; 855346.843 1.16520322351 78263.7094247225; 165590.362 4.11969163181 104351.6125662960; 34561.897 0.77930765817 130439.5157078700; 7583.476 3.71348400510 156527.4188494450; 3559.740 1.51202669419 1109.3785520934; 1726.012 0.35832239908 182615.3219910190; 1803.463 4.10333178410 5661.3320491522; 1364.682 4.59918318745 27197.2816936676; 1589.923 2.99510417815 25028.5212113850; 1017.332 0.88031439040 31749.2351907264; 714.182 1.54144865265 24978.5245894808; 643.759 5.30266110787 21535.9496445154; 404.200 3.28228847025 208703.2251325930; 352.441 5.24156297101 20426.5710924220; 343.313 5.76531885335 955.5997416086; 339.214 5.86327765000 25558.2121764796; 451.137 6.04989275289 51116.4243529592; 325.335 1.33674334780 53285.1848352418; 259.587 0.98732428184 4551.9534970588; 345.212 2.79211901539 15874.6175953632; 272.947 2.49451163975 529.6909650946; 234.830 0.26672118900 11322.6640983044; 238.793 0.11343953378 1059.3819301892; 264.336 3.91705094013 57837.1383323006; 216.645 0.65987207348 13521.7514415914; 183.359 2.62878670784 27043.5028831828; 175.965 4.53636829858 51066.4277310550; 181.629 2.43413502466 25661.3049506982; 208.995 2.09178234008 47623.8527860896; 172.643 2.45200164173 24498.8302462904; 142.316 3.36003948842 37410.5672398786; 137.942 0.29098447849 10213.2855462110; 118.233 2.78149786369 77204.3274945333; 96.860 6.20398202740 234791.1282741670; 125.219 3.72079804425 39609.6545831656; 86.819 2.64219349385 51646.1153180537 ]; l1 = [ 2608814706222.740 0.00000000000 0.0000000000; 1126007.832 6.21703970996 26087.9031415742; 303471.395 3.05565472363 52175.8062831484; 80538.452 6.10454743366 78263.7094247225; 21245.035 2.83531934452 104351.6125662960; 5592.094 5.82675673328 130439.5157078700; 1472.233 2.51845458395 156527.4188494450; 352.244 3.05238094403 1109.3785520934; 388.318 5.48039225891 182615.3219910190; 93.540 6.11791163931 27197.2816936676; 90.579 0.00045481669 24978.5245894808; 102.743 2.14879173777 208703.2251325930; 51.941 5.62107554052 5661.3320491522; 44.370 4.57348500464 25028.5212113850; 28.070 3.04195430989 51066.4277310550; 22.003 0.86475371243 955.5997416086; 27.295 5.09210138837 234791.1282741670; 20.425 3.71509622702 20426.5710924220 ]; l2 = [ 53049.845 0.00000000000 0.0000000000; 16903.658 4.69072300649 26087.9031415742; 7396.711 1.34735624669 52175.8062831484; 3018.297 4.45643539705 78263.7094247225; 1107.419 1.26226537554 104351.6125662960; 378.173 4.31998055900 130439.5157078700; 122.998 1.06868541052 156527.4188494450; 38.663 4.08011610182 182615.3219910190; 14.898 4.63343085810 1109.3785520934; 11.861 0.79187646439 208703.2251325930; 5.243 4.71799772791 24978.5245894808; 3.575 3.77317513032 234791.1282741670 ]; l3 = [ 188.077 0.03466830117 52175.8062831484; 142.152 3.12505452600 26087.9031415742; 96.877 3.00378171915 78263.7094247225; 43.669 6.01867965826 104351.6125662960; 35.395 0.00000000000 0.0000000000; 18.045 2.77538373991 130439.5157078700; 6.971 5.81808665742 156527.4188494450; 2.556 2.57014364454 182615.3219910190; 0.900 5.59308888939 208703.2251325930 ]; l4 = [ 114.078 3.14159265359 0.0000000000; 3.247 2.02848007619 26087.9031415742; 1.914 1.41731803758 78263.7094247225; 1.727 4.50137643801 52175.8062831484; 1.237 4.49970181057 104351.6125662960; 0.645 1.26591776986 130439.5157078700; 0.298 4.30600984981 156527.4188494450 ]; l5 = [ 0.877 3.14159265359 0.0000000000; 0.059 3.37513289692 52175.8062831484 ]; .. latitude series b0 = [ 11737528.962 1.98357498767 26087.9031415742; 2388076.996 5.03738959685 52175.8062831484; 1222839.532 3.14159265359 0.0000000000; 543251.810 1.79644363963 78263.7094247225; 129778.770 4.83232503961 104351.6125662960; 31866.927 1.58088495667 130439.5157078700; 7963.301 4.60972126348 156527.4188494450; 2014.189 1.35324164694 182615.3219910190; 513.953 4.37835409309 208703.2251325930; 207.674 4.91772564073 27197.2816936676; 208.584 2.02020294153 24978.5245894808; 132.013 1.11908492283 234791.1282741670; 100.454 5.65684734206 20426.5710924220; 121.395 1.81271752059 53285.1848352418; 91.566 2.28163128692 25028.5212113850; 99.214 0.09391887097 51116.4243529592 ]; b1 = [ 429151.362 3.50169780393 26087.9031415742; 146233.668 3.14159265359 0.0000000000; 22675.295 0.01515366880 52175.8062831484; 10894.981 0.48540174006 78263.7094247225; 6353.462 3.42943919982 104351.6125662960; 2495.743 0.16051210665 130439.5157078700; 859.585 3.18452433647 156527.4188494450; 277.503 6.21020774184 182615.3219910190; 86.233 2.95244391822 208703.2251325930; 26.133 5.97708962692 234791.1282741670; 27.696 0.29068938889 27197.2816936676; 12.831 3.37744320558 53285.1848352418; 12.720 0.53792661684 24978.5245894808; 7.781 2.71768609268 260879.0314157410 ]; b2 = [ 11830.934 4.79065585784 26087.9031415742; 1913.516 0.00000000000 0.0000000000; 1044.801 1.21216540536 52175.8062831484; 266.213 4.43418336532 78263.7094247225; 170.280 1.62255638714 104351.6125662960; 96.300 4.80023692017 130439.5157078700; 44.692 1.60758267772 156527.4188494450; 18.316 4.66904655377 182615.3219910190; 6.927 1.43404888930 208703.2251325930; 2.479 4.47495202955 234791.1282741670; 1.739 1.83080039600 27197.2816936676; 0.852 1.22749255198 260879.0314157410; 0.641 4.87358642253 53285.1848352418 ]; b3 = [ 235.423 0.35387524604 26087.9031415742; 160.537 0.00000000000 0.0000000000; 18.904 4.36275460261 52175.8062831484; 6.376 2.50715381439 78263.7094247225; 4.580 6.14257817571 104351.6125662960; 3.061 3.12497552681 130439.5157078700; 1.732 6.26642412058 156527.4188494450; 0.857 3.07673166705 182615.3219910190; 0.384 6.14815319932 208703.2251325930; 0.159 2.92437378320 234791.1282741670 ]; b4 = [ 4.276 1.74579932115 26087.9031415742; 1.023 3.14159265359 0.0000000000; 0.425 4.03419509143 52175.8062831484 ]; b5 = [ 0.106 3.94555784256 26087.90314157420 ]; .. radius vector r0 = [ 39528271.652 0.00000000000 0.0000000000; 7834131.817 6.19233722599 26087.9031415742; 795525.557 2.95989690096 52175.8062831484; 121281.763 6.01064153805 78263.7094247225; 21921.969 2.77820093975 104351.6125662960; 4354.065 5.82894543257 130439.5157078700; 918.228 2.59650562598 156527.4188494450; 260.033 3.02817753482 27197.2816936676; 289.955 1.42441936951 25028.5212113850; 201.855 5.64725040350 182615.3219910190; 201.499 5.59227724202 31749.2351907264; 141.980 6.25264202645 24978.5245894808; 100.144 3.73435608689 21535.9496445154; 77.561 3.66972526976 20426.5710924220; 63.277 4.29905918105 25558.2121764796; 62.951 4.76588899933 1059.3819301892; 66.754 2.52520309182 5661.3320491522 ]; r1 = [ 217347.739 4.65617158663 26087.9031415742; 44141.826 1.42385543975 52175.8062831484; 10094.479 4.47466326316 78263.7094247225; 2432.804 1.24226083435 104351.6125662960; 1624.367 0.00000000000 0.0000000000; 603.996 4.29303116561 130439.5157078700; 152.851 1.06060779810 156527.4188494450; 39.202 4.11136751416 182615.3219910190; 17.760 4.54424653085 27197.2816936676; 17.999 4.71193725810 24978.5245894808; 10.154 0.87893548494 208703.2251325930 ]; r2 = [ 3117.867 3.08231840296 26087.9031415742; 1245.396 6.15183317423 52175.8062831484; 424.822 2.92583352960 78263.7094247225; 136.130 5.97983925842 104351.6125662960; 42.175 2.74936980629 130439.5157078700; 21.759 3.14159265359 0.0000000000; 12.793 5.80143162209 156527.4188494450; 3.825 2.56993599584 182615.3219910190; 1.042 3.14648120079 24978.5245894808; 1.131 5.62142196970 208703.2251325930; 0.483 6.14307654520 27197.2816936676 ]; r3 = [ 32.676 1.67971635359 26087.9031415742; 24.166 4.63403168997 52175.8062831484; 12.133 1.38983781545 78263.7094247225; 5.140 4.43915386930 104351.6125662960 ]; r4 = [ 0.394 0.36735403840 26087.9031415742 ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4)/100000000; return [lambda, beta, delta]; endfunction function hsaturn(day) ## returns the heliocentric ecliptic latitude of Saturn given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## More terms than Meeus included as an experiment .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC to a resolution .. of 1 arcsec as predicted using Meeus truncation formula l0 = [ 87401354.029 0 0.0000000000; 11107659.780 3.96205090194 213.2990954380; 1414150.958 4.58581515873 7.1135470008; 398379.386 0.52112025957 206.1855484372; 350769.223 3.30329903015 426.5981908760; 206816.296 0.24658366938 103.0927742186; 79271.288 3.84007078530 220.4126424388; 23990.338 4.66976934860 110.2063212194; 16573.583 0.43719123541 419.4846438752; 14906.995 5.76903283845 316.3918696566; 15820.300 0.93808953760 632.7837393132; 14609.562 1.56518573691 3.9321532631; 13160.308 4.44891180176 14.2270940016; 15053.509 2.71670027883 639.8972863140; 13005.305 5.98119067061 11.0457002639; 10725.066 3.12939596466 202.2533951741; 5863.207 0.23657028777 529.6909650946; 5227.771 4.20783162380 3.1813937377; 6126.308 1.76328499656 277.0349937414; 5019.658 3.17787919533 433.7117378768; 4592.541 0.61976424374 199.0720014364; 4005.862 2.24479893937 63.7358983034; 2953.815 0.98280385206 95.9792272178; 3873.696 3.22282692566 138.5174968707; 2461.172 2.03163631205 735.8765135318; 3269.490 0.77491895787 949.1756089698; 1758.143 3.26580514774 522.5774180938; 1640.183 5.50504966218 846.0828347512; 1391.336 4.02331978116 323.5054166574; 1580.641 4.37266314120 309.2783226558; 1123.515 2.83726793572 415.5524906121; 1017.258 3.71698151814 227.5261894396; 848.643 3.19149825839 209.3669421749; 1087.237 4.18343232481 2.4476805548; 956.752 0.50740889886 1265.5674786264; 789.205 5.00745123149 0.9632078465; 686.965 1.74714407827 1052.2683831884; 654.470 1.59889331515 0.0481841098; 748.811 2.14398149298 853.1963817520; 633.980 2.29889903023 412.3710968744; 743.584 5.25276954625 224.3447957019; 852.677 3.42141350697 175.1660598002; 579.857 3.09259007048 74.7815985673; 624.904 0.97046831256 210.1177017003; 529.861 4.44938897119 117.3198682202; 542.643 1.51824320514 9.5612275556; 474.279 5.47527185987 742.9900605326; 448.542 1.28990416161 127.4717966068; 546.358 2.12678554211 350.3321196004; 478.054 2.96488054338 137.0330241624; 354.944 3.01286483030 838.9692877504; 451.827 1.04436664241 490.3340891794; 347.413 1.53928227764 340.7708920448; 343.475 0.24604039134 0.5212648618; 309.001 3.49486734909 216.4804891757; 322.185 0.96137456104 203.7378678824; 372.308 2.27819108625 217.2312487011; 321.543 2.57182354537 647.0108333148; 330.196 0.24715617844 1581.9593482830; 249.116 1.47010534421 1368.6602528450; 286.688 2.37043745859 351.8165923087; 220.225 4.20422424873 200.7689224658; 277.775 0.40020408926 211.8146227297; 204.500 6.01082206600 265.9892934775; 207.663 0.48349820488 1162.4747044078; 208.655 1.34516255304 625.6701923124; 182.454 5.49122292426 2.9207613068; 226.609 4.91003163138 12.5301729722; 207.659 1.28302218900 39.3568759152; 173.914 1.86305806814 0.7507595254; 184.690 3.50344404958 149.5631971346; 183.511 0.97254952728 4.1927856940; 146.068 6.23102544071 195.1398481733; 164.541 0.44005517520 5.4166259714; 147.526 1.53529320509 5.6290742925; 139.666 4.29450260069 21.3406410024; 131.283 4.06828961903 10.2949407385; 117.283 2.67920400584 1155.3611574070; 149.299 5.73594349789 52.6901980395; 122.373 1.97588777199 4.6658664460; 113.747 5.59427544714 1059.3819301892; 102.702 1.19748124058 1685.0521225016; 118.156 5.34072933900 554.0699874828; 109.275 3.43812715686 536.8045120954; 110.399 0.16604024090 1.4844727083; 124.969 6.27737805832 1898.3512179396; 89.949 5.80392934702 114.1384744825; 103.956 2.19210363069 88.8656802170; 112.437 1.10502663534 191.2076949102; 106.570 4.01156608514 956.2891559706; 91.430 1.87521577510 38.1330356378; 83.791 5.48810655641 0.1118745846; 83.461 2.28972767279 628.8515860501; 96.987 4.53666595763 302.1647756550; 100.631 4.96513666539 269.9214467406; 75.491 2.18045274099 728.7629665310; 96.330 2.83319189210 275.5505210331; 82.363 3.05469876064 440.8252848776; 73.888 5.08914205084 1375.7737998458; 71.633 5.10940743430 65.2203710117; 70.409 4.86846451411 0.2124483211; 69.760 3.71029022489 14.9778535270; 88.772 3.86334563977 278.5194664497; 68.090 0.73415460990 1478.8665740644; 66.501 0.02677580336 70.8494453042; 65.682 2.02165559602 142.4496501338; 75.765 1.61410487792 284.1485407422; 63.153 3.49493353034 479.2883889155; 62.539 2.58713611532 422.6660376129; 69.313 3.43979731402 515.4638710930; 79.021 4.45154941586 35.4247226521; 63.664 3.31749528708 62.2514255951; 52.939 5.51392725227 0.2606324309; 53.011 3.18480701697 8.0767548473; 54.492 2.45674090515 22.0914005278; 50.514 4.26749346978 99.1606209555; 55.170 0.96797446150 942.0620619690; 49.288 2.38641424063 1471.7530270636; 47.199 2.02515248245 312.1990839626; 61.080 1.50295092063 210.8514148832; 45.126 0.93109376473 2001.4439921582; 60.556 2.68715551585 388.4651552382; 43.452 2.52602011714 288.0806940053; 42.544 3.81793980322 330.6189636582; 39.915 5.71378652900 408.4389436113; 50.145 6.03164759907 2214.7430875962; 45.860 0.54229721801 212.3358875915; 54.165 0.78154835399 191.9584544356; 47.016 4.59934671151 437.6438911399; 42.362 1.90070070955 430.5303441391; 39.722 1.63259419913 1066.4954771900; 36.345 0.84756992711 213.3472795478; 35.468 4.18603772925 215.7467759928; 36.344 3.93295730315 213.2509113282; 38.005 0.31313803095 423.4167971383; 44.746 1.12488341174 6.1503391543; 37.902 1.19795851115 2.7083129857; 43.402 1.37363944007 563.6312150384; 43.764 3.93043802956 525.4981794006; 34.825 1.01566605408 203.0041546995; 31.755 1.69273634405 0.1600586944; 30.880 6.13525703832 417.0369633204; 36.388 6.00586032647 18.1592472647; 29.032 1.19660544505 404.5067903482; 32.812 0.53649479713 107.0249274817; 30.433 0.72335287989 222.8603229936; 32.644 0.81204701486 1795.2584437210; 37.769 3.69666903716 1272.6810256272; 27.679 1.45663979401 7.1617311106; 27.187 1.89731951902 1045.1548361876; 37.699 4.51997049537 24.3790223882; 34.885 4.46095761791 214.2623032845; 32.650 0.66372395761 692.5874843535; 30.324 5.30369950147 33.9402499438; 27.480 6.22702216249 1.2720243872; 26.657 4.56713198392 7.0653628910; 31.745 5.49798599565 56.6223513026; 28.050 5.64447420566 128.9562693151; 24.277 3.93966553574 414.0680179038; 32.017 5.22260660455 92.0470739547; 26.976 0.06705123981 205.2223405907; 22.974 3.65817751770 207.6700211455; 31.775 5.59198119173 6069.7767545534; 23.153 2.10054506119 1788.1448967202; 31.025 0.37190053329 703.6331846174; 29.376 0.14742155778 131.4039498699; 22.562 5.24009182383 212.7778305762; 26.185 5.41311252822 140.0019695790; 25.673 4.36038885283 32.2433289144; 20.392 2.82413909260 429.7795846137; 20.659 0.67091805084 2317.8358618148; 24.397 3.08740396398 145.6310438715; 23.735 2.54365387567 76.2660712756; 20.157 5.06708675157 617.8058857862; 23.307 3.97357729211 483.2205421786; 22.878 6.10452832642 177.8743727859; 22.978 3.20140795404 208.6332289920; 20.638 5.22128727027 6.5922821390; 21.446 0.72034565528 1258.4539316256; 18.034 6.11382719947 210.3783341312 ]; l1 = [ 21354295595.986 0.00000000000 0.0000000000; 1296855.005 1.82820544701 213.2990954380; 564347.566 2.88500136429 7.1135470008; 98323.030 1.08070061328 426.5981908760; 107678.770 2.27769911872 206.1855484372; 40254.586 2.04128257090 220.4126424388; 19941.734 1.27954662736 103.0927742186; 10511.706 2.74880392800 14.2270940016; 6939.233 0.40493079985 639.8972863140; 4803.325 2.44194097666 419.4846438752; 4056.325 2.92166618776 110.2063212194; 3768.630 3.64965631460 3.9321532631; 3384.684 2.41694251653 3.1813937377; 3302.200 1.26256486715 433.7117378768; 3071.382 2.32739317750 199.0720014364; 1953.036 3.56394683300 11.0457002639; 1249.348 2.62803737519 95.9792272178; 921.683 1.96089834250 227.5261894396; 705.587 4.41689249330 529.6909650946; 649.654 6.17418093659 202.2533951741; 627.603 6.11088227167 309.2783226558; 486.843 6.03998200305 853.1963817520; 468.377 4.61707843907 63.7358983034; 478.501 4.98776987984 522.5774180938; 417.010 2.11708169277 323.5054166574; 407.630 1.29949556676 209.3669421749; 343.826 3.95854178574 412.3710968744; 339.724 3.63396398752 316.3918696566; 335.936 3.77173072712 735.8765135318; 331.933 2.86077699882 210.1177017003; 352.489 2.31707079463 632.7837393132; 289.429 2.73263080235 117.3198682202; 265.801 0.54344631312 647.0108333148; 230.493 1.64428879621 216.4804891757; 280.911 5.74398845416 2.4476805548; 191.667 2.96512946582 224.3447957019; 172.891 4.07695221044 846.0828347512; 167.131 2.59745202658 21.3406410024; 136.328 2.28580246629 10.2949407385; 131.364 3.44108355646 742.9900605326; 127.838 4.09533471247 217.2312487011; 108.862 6.16141072262 415.5524906121; 93.909 3.48397279899 1052.2683831884; 92.482 3.94755499926 88.8656802170; 97.584 4.72845436677 838.9692877504; 86.600 1.21951325061 440.8252848776; 83.463 3.11269504725 625.6701923124; 77.588 6.24408938835 302.1647756550; 61.557 1.82789612597 195.1398481733; 61.900 4.29344363385 127.4717966068; 67.106 0.28961738595 4.6658664460; 56.919 5.01889578112 137.0330241624; 54.160 5.12628572382 490.3340891794; 54.585 0.28356341456 74.7815985673; 51.425 1.45766406064 536.8045120954; 65.843 5.64757042732 9.5612275556; 57.780 2.47630552035 191.9584544356; 44.444 2.70873627665 5.4166259714; 46.799 1.17721211050 149.5631971346; 40.380 3.88870105683 728.7629665310; 37.768 2.53379013859 12.5301729722; 46.649 5.14818326902 515.4638710930; 45.891 2.23198878761 956.2891559706; 40.400 0.41281520440 269.9214467406; 37.191 3.78239026411 2.9207613068; 33.778 3.21070688046 1368.6602528450; 37.969 0.64665967180 422.6660376129; 32.857 0.30063884563 351.8165923087; 33.050 5.43038091186 1066.4954771900; 30.276 2.84067004928 203.0041546995; 35.116 6.08421794089 5.6290742925; 29.667 3.39052569135 1059.3819301892; 33.217 4.64063092111 277.0349937414; 31.876 4.38622923770 1155.3611574070; 28.913 2.02614760507 330.6189636582; 28.264 2.74178953996 265.9892934775; 30.089 6.18684614308 284.1485407422; 31.329 2.43455855525 52.6901980395; 26.493 4.51214170121 340.7708920448; 21.983 5.14437352579 4.1927856940; 22.230 1.96481952451 203.7378678824; 20.824 6.16048095923 860.3099287528; 21.690 2.67578768862 942.0620619690; 22.552 5.88579123000 210.8514148832; 19.807 2.31345263487 437.6438911399; 19.447 4.76573277668 70.8494453042; 19.310 4.10209060369 18.1592472647; 22.662 4.13732273379 191.2076949102; 18.209 0.90310796389 429.7795846137; 17.667 1.84954766042 234.6397364404; 17.547 2.44735118493 423.4167971383; 15.428 4.23790088205 1162.4747044078; 14.608 3.59713247857 1045.1548361876; 14.111 2.94262468353 1685.0521225016; 16.328 4.05665272725 949.1756089698; 13.348 6.24509592240 38.1330356378; 15.918 1.06434204938 56.6223513026; 14.059 1.43503954068 408.4389436113; 13.093 5.75815864257 138.5174968707; 15.772 5.59350835225 6.1503391543; 14.962 5.77192239389 22.0914005278; 16.024 1.93900586533 1272.6810256272; 16.751 5.96673627422 628.8515860501; 12.843 4.24658666814 405.2575498736; 13.628 4.09892958087 1471.7530270636; 15.067 0.74142807591 200.7689224658; 10.961 1.55022573283 223.5940361765; 11.695 1.81237511034 124.4334152210; 10.346 3.46814088412 1375.7737998458; 12.056 1.85655834555 131.4039498699; 10.123 2.38221133049 107.0249274817; 9.855 3.95166998848 430.5303441391; 9.803 2.55389483994 99.9113804809; 10.614 5.36692189034 215.7467759928; 12.080 4.84549317054 831.8557407496; 10.210 6.07692961370 32.2433289144; 9.245 3.65417467270 142.4496501338; 8.984 1.23808405498 106.2741679563; 9.336 5.81062768434 7.1617311106; 9.717 1.38703872827 145.6310438715; 8.394 4.42341211111 703.6331846174; 8.370 5.64015188458 62.2514255951; 8.244 2.42225929772 1258.4539316256; 7.784 0.52562994711 654.1243803156; 7.626 3.75258725596 312.1990839626; 7.222 0.28429555677 0.7507595254; 8.236 6.22250515902 14.9778535270; 7.054 0.53177810740 388.4651552382; 6.567 3.48657341701 35.4247226521; 9.011 4.94919626910 208.6332289920; 8.980 0.08138173719 288.0806940053; 6.421 3.32905264657 1361.5467058442; 6.489 2.89389587598 114.1384744825; 6.244 0.54973852782 65.2203710117; 6.154 2.67885860584 2001.4439921582; 6.742 0.23586769279 8.0767548473; 7.297 4.85321224483 222.8603229936; 6.302 3.80651124694 1788.1448967202; 5.824 4.39327457448 81.7521332162; 6.102 0.88585782895 92.0470739547; 6.914 2.04631426723 99.1606209555; 5.363 5.47995103139 563.6312150384; 5.172 2.11968421583 214.2623032845; 5.117 5.76987684107 565.1156877467; 6.197 1.62553688800 1589.0728952838; 4.970 0.41949366126 76.2660712756; 6.640 5.82582210639 483.2205421786; 5.277 4.57975789757 134.5853436076; 4.974 4.20243895902 404.5067903482; 5.150 4.67582673243 212.3358875915; 4.764 4.59303997414 554.0699874828; 4.573 3.24875415786 231.4583427027; 4.811 0.46206327592 362.8622925726; 5.148 3.33570646174 1.4844727083; 4.654 5.80233066659 217.9649618840; 4.509 5.37581684215 497.4476361802; 4.443 0.11349392292 295.0512286542; 4.943 3.78020789259 1265.5674786264; 4.211 4.88306021960 98.8999885246; 4.252 5.00120115113 213.3472795478; 4.774 4.53259894142 1148.2476104062; 3.911 0.58582192963 750.1036075334; 5.069 2.20305668335 207.8824694666; 3.553 0.35374030841 333.6573450440; 3.771 0.98542435766 24.3790223882; 3.458 1.84990273999 225.8292684102; 3.401 5.31342401626 347.8844390456; 3.347 0.21414641376 635.9651330509; 3.637 1.61315058382 245.5424243524; 3.416 2.19551489078 1574.8458012822; 3.655 0.80544245690 343.2185725996; 4.260 1.80258750109 213.2509113282; 3.110 3.03815175282 1677.9385755008; 3.052 1.33858964447 543.9180590962; 3.694 0.81606028298 344.7030453079; 3.016 3.36219319026 7.8643065262; 2.937 4.86927342776 144.1465711632; 2.768 2.42707131609 2317.8358618148; 3.059 4.30820099442 6062.6632075526; 3.650 5.12802531219 218.9281697305; 2.963 3.53480751374 2104.5367663768; 3.230 2.88057019783 216.2198567448; 2.984 2.52971310583 1692.1656695024; 2.897 5.73256482240 9992.8729037722; 2.591 3.79880285744 17.2654753874; 3.495 5.29902525443 350.3321196004; 2.859 3.72804950659 6076.8903015542; 2.775 0.23549396237 357.4456666012; 2.976 2.48769315964 46.4704229160; 2.487 4.37868078530 217.4918811320; 2.711 5.15376840150 10007.0999977738; 3.127 1.92343235583 17.4084877393; 3.181 1.72419900322 1169.5882514086; 2.348 0.77373103004 414.0680179038; 2.606 3.42836913440 31.0194886370; 2.556 0.91735028377 479.2883889155; 2.399 4.82440545738 1279.7945726280; 2.245 3.76323995584 425.1137181677; 3.020 0.25310250109 120.3582496060; 2.503 2.10679832121 168.0525127994; 2.564 1.63158205055 182.2796068010 ]; l2 = [ 116441.181 1.17987850633 7.1135470008; 91920.844 0.07425261094 213.2990954380; 90592.251 0.00000000000 0.0000000000; 15276.909 4.06492007503 206.1855484372; 10631.396 0.25778277414 220.4126424388; 10604.979 5.40963595885 426.5981908760; 4265.368 1.04595556630 14.2270940016; 1215.527 2.91860042123 103.0927742186; 1164.684 4.60942128971 639.8972863140; 1081.967 5.69130351670 433.7117378768; 1020.079 0.63369182642 3.1813937377; 1044.754 4.04206453611 199.0720014364; 633.582 4.38825410036 419.4846438752; 549.329 5.57303134242 3.9321532631; 456.914 1.26840971349 110.2063212194; 425.100 0.20935499279 227.5261894396; 273.739 4.28841011784 95.9792272178; 161.571 1.38139149420 11.0457002639; 129.494 1.56586884170 309.2783226558; 117.008 3.88120915956 853.1963817520; 105.415 4.90003203599 647.0108333148; 100.967 0.89270493100 21.3406410024; 95.227 5.62561150598 412.3710968744; 81.948 1.02477558315 117.3198682202; 74.857 4.76178468163 210.1177017003; 82.727 6.05030934786 216.4804891757; 95.659 2.91093561539 316.3918696566; 63.696 0.35179804917 323.5054166574; 84.860 5.73472777961 209.3669421749; 60.647 4.87517850190 632.7837393132; 66.459 0.48297940601 10.2949407385; 67.184 0.45648612616 522.5774180938; 53.281 2.74730541387 529.6909650946; 45.827 5.69296621745 440.8252848776; 45.293 1.66856699796 202.2533951741; 42.330 5.70768187703 88.8656802170; 32.140 0.07050050346 63.7358983034; 31.573 1.67190022213 302.1647756550; 31.150 4.16379537691 191.9584544356; 24.631 5.65564728570 735.8765135318; 26.558 0.83256214407 224.3447957019; 20.108 5.94364609981 217.2312487011; 17.511 4.90014736798 625.6701923124; 17.130 1.62593421274 742.9900605326; 13.744 3.76497167300 195.1398481733; 12.236 4.71789723976 203.0041546995; 11.940 0.12620714199 234.6397364404; 16.040 0.57886320845 515.4638710930; 11.154 5.92216844780 536.8045120954; 14.068 0.20675293700 838.9692877504; 11.013 5.60207982774 728.7629665310; 11.718 3.12098483554 846.0828347512; 9.962 4.15472049127 860.3099287528; 10.601 3.20327613035 1066.4954771900; 10.072 0.25709351996 330.6189636582; 9.490 0.46379969328 956.2891559706; 10.240 4.98736656070 422.6660376129; 8.287 2.13990364272 269.9214467406; 7.238 5.39724715258 1052.2683831884; 7.730 5.24602742309 429.7795846137; 6.353 4.46211130731 284.1485407422; 5.935 5.40967847103 149.5631971346; 7.550 4.03401153929 9.5612275556; 5.779 4.29380891110 415.5524906121; 6.082 5.93416924841 405.2575498736; 5.711 0.01824076994 124.4334152210; 5.676 6.02235682150 223.5940361765; 4.757 4.92804854717 654.1243803156; 4.727 2.27461984667 18.1592472647; 4.509 4.40688707557 942.0620619690; 5.621 0.29694719379 127.4717966068; 5.453 5.53868222772 949.1756089698; 4.130 4.68673560379 74.7815985673; 4.098 5.30851262200 1045.1548361876; 4.223 2.89014939299 56.6223513026; 4.887 3.20022991216 277.0349937414; 3.905 3.30270187305 490.3340891794; 3.923 6.09732996823 81.7521332162; 3.755 4.93065184796 52.6901980395; 4.602 6.13908576681 1155.3611574070; 3.714 0.40648076787 137.0330241624; 3.407 4.28514461015 99.9113804809; 3.579 0.20402442077 1272.6810256272; 3.946 0.36500928968 12.5301729722; 3.246 1.56761884227 1059.3819301892; 4.063 0.29084229143 831.8557407496; 3.688 0.15467406177 437.6438911399; 2.895 3.13473183482 70.8494453042; 2.800 0.32727938074 191.2076949102; 2.672 1.87612402267 295.0512286542; 3.454 4.77197610696 423.4167971383; 2.623 5.15237415384 1368.6602528450; 2.457 3.89612890177 210.8514148832; 2.461 1.58522876760 32.2433289144; 2.595 3.59007068361 131.4039498699; 2.289 4.76825865118 351.8165923087; 2.357 5.83099000562 106.2741679563; 2.221 5.98277491515 6062.6632075526; 2.221 2.05930402282 6076.8903015542; 2.183 5.94985336393 145.6310438715; 2.718 3.37801252354 408.4389436113; 2.288 3.14000619320 22.0914005278; 2.090 1.12304173562 9992.8729037722; 2.089 3.48276230686 10007.0999977738; 2.570 5.12167203704 265.9892934775; 1.835 4.15379879659 1258.4539316256; 1.820 5.05340615445 1361.5467058442; 1.760 4.13532689228 107.0249274817; 1.921 4.51790997496 138.5174968707; 1.707 1.35864593280 231.4583427027; 1.956 5.87006093798 1471.7530270636; 2.133 5.23409848720 1265.5674786264; 1.595 5.61962698786 447.9388318784; 1.609 3.74893709671 628.8515860501; 1.490 0.48352404940 340.7708920448; 1.560 5.97095003614 430.5303441391; 1.352 0.71405348653 28.4541880032; 1.355 2.91219493604 215.7467759928; 1.298 5.84254169775 543.9180590962; 1.664 6.23834873469 1148.2476104062; 1.205 2.83373725021 200.7689224658; 1.192 3.52219428945 497.4476361802; 1.122 2.60571030270 1279.7945726280; 1.217 6.23528359211 1589.0728952838; 1.420 0.85079202155 6069.7767545534; 1.120 4.95656566453 1685.0521225016; 1.010 3.39689646619 1073.6090241908; 1.352 2.27575429523 9999.9864507730; 0.979 1.58571463442 1375.7737998458; 1.159 0.71823181781 508.3503240922; 1.014 2.40759054741 703.6331846174; 0.956 2.66256831556 134.5853436076; 1.110 1.19713920197 618.5566453116; 0.945 4.68155456977 362.8622925726; 0.953 4.20749172571 288.0806940053; 1.033 1.08781255146 184.8449074348; 0.942 2.43465223460 222.8603229936; 0.909 4.51769385360 38.1330356378; 1.002 1.38543153271 483.2205421786 ]; l3 = [ 16038.734 5.73945377424 7.1135470008; 4249.793 4.58539675603 213.2990954380; 1906.524 4.76082050205 220.4126424388; 1465.687 5.91326678323 206.1855484372; 1162.041 5.61973132428 14.2270940016; 1066.581 3.60816533142 426.5981908760; 239.377 3.86088273439 433.7117378768; 236.975 5.76826451465 199.0720014364; 165.641 5.11641150216 3.1813937377; 131.409 4.74327544615 227.5261894396; 151.352 2.73594641861 639.8972863140; 61.630 4.74287052463 103.0927742186; 63.365 0.22850089497 419.4846438752; 40.437 5.47298059144 21.3406410024; 40.205 5.96420266720 95.9792272178; 38.746 5.83386199529 110.2063212194; 28.025 3.01235311514 647.0108333148; 25.029 0.98808170740 3.9321532631; 18.101 1.02506397063 412.3710968744; 17.879 3.31913418974 309.2783226558; 16.208 3.89825272754 440.8252848776; 15.763 5.61667809625 117.3198682202; 19.014 1.91614237463 853.1963817520; 18.262 4.96738415934 10.2949407385; 12.947 1.18068953942 88.8656802170; 17.919 4.20376505349 216.4804891757; 11.453 5.57520615096 11.0457002639; 10.548 5.92906266269 191.9584544356; 10.389 3.94838736947 209.3669421749; 8.650 3.39335369698 302.1647756550; 7.580 4.87736913157 323.5054166574; 6.697 0.38198725552 632.7837393132; 5.864 1.05621157685 210.1177017003; 5.449 4.64268475485 234.6397364404; 6.327 2.25492722762 522.5774180938; 3.602 2.30677010956 515.4638710930; 3.229 2.20309400066 860.3099287528; 3.701 3.14159265359 0.0000000000; 2.583 4.93447677059 224.3447957019; 2.543 0.42393884183 625.6701923124; 2.213 3.19814958289 202.2533951741; 2.421 4.76621391814 330.6189636582; 2.850 0.58604395010 529.6909650946; 1.965 4.39525359412 124.4334152210; 2.154 1.35488209144 405.2575498736; 2.296 3.34809165905 429.7795846137; 2.018 3.06693569701 654.1243803156; 1.979 1.02981005658 728.7629665310; 1.868 3.09383546177 422.6660376129; 1.846 4.15225985450 536.8045120954; 2.194 1.18918501013 1066.4954771900; 2.090 4.15631351317 223.5940361765; 1.481 0.37916705169 316.3918696566; 1.720 5.82865773356 195.1398481733; 1.460 1.57663426355 81.7521332162; 1.623 6.03706764648 742.9900605326; 1.286 1.66154726117 63.7358983034; 1.304 5.02409881054 956.2891559706; 1.446 2.10575519127 838.9692877504; 1.245 3.88109752770 269.9214467406; 1.018 3.72599601656 295.0512286542; 1.323 1.38492882986 735.8765135318; 1.318 2.33460998999 217.2312487011; 0.943 2.75813531246 284.1485407422; 0.906 0.71155526266 846.0828347512; 0.886 3.83754799777 447.9388318784; 0.943 3.31480217015 18.1592472647; 0.800 4.71386673963 56.6223513026; 0.908 2.02119147951 831.8557407496; 0.787 0.80410269937 1045.1548361876; 0.709 4.27064410504 437.6438911399; 0.651 6.17565900032 942.0620619690; 0.785 2.40767785311 203.0041546995; 0.702 1.64585301418 423.4167971383; 0.543 2.86326941725 184.8449074348; 0.532 6.25762144463 1059.3819301892; 0.521 3.43013038466 149.5631971346; 0.484 4.88366060720 1272.6810256272; 0.437 5.40220619672 408.4389436113; 0.388 2.57589594168 508.3503240922; 0.421 4.05836524024 543.9180590962; 0.375 1.22747948298 2324.9494088156; 0.347 0.59237194522 22.0914005278; 0.433 1.69090148012 1155.3611574070; 0.389 1.46170367972 1073.6090241908; 0.307 1.82185086955 628.8515860501; 0.409 1.21858750514 1052.2683831884; 0.309 0.33610530663 6076.8903015542; 0.309 1.42279282226 6062.6632075526; 0.340 1.83325770310 1141.1340634054; 0.303 2.41584747330 127.4717966068; 0.305 5.34154702988 131.4039498699; 0.298 2.28594631393 635.9651330509; 0.372 1.03723911390 313.2104759189; 0.338 0.69100012338 1361.5467058442; 0.325 1.78816356937 1148.2476104062; 0.322 1.18628805010 721.6494195302 ]; l4 = [ 1661.894 3.99826248978 7.1135470008; 257.107 2.98436499013 220.4126424388; 236.344 3.90241428075 14.2270940016; 149.418 2.74110824208 213.2990954380; 109.598 1.51515739251 206.1855484372; 113.953 3.14159265359 0.0000000000; 68.390 1.72120953337 426.5981908760; 37.699 1.23795458356 199.0720014364; 40.060 2.04644897412 433.7117378768; 31.219 3.01094184090 227.5261894396; 15.111 0.82897064529 639.8972863140; 9.444 3.71485300868 21.3406410024; 5.690 2.41995290633 419.4846438752; 4.470 1.45120818748 95.9792272178; 5.608 1.15607095740 647.0108333148; 4.463 2.11783225176 440.8252848776; 3.229 4.09278077834 110.2063212194; 2.871 2.77203153866 412.3710968744; 2.796 3.00730249564 88.8656802170; 2.638 0.00255721254 853.1963817520; 2.574 0.39246854091 103.0927742186; 1.862 5.07955457727 309.2783226558; 2.225 3.77689198137 117.3198682202; 1.769 5.19176876406 302.1647756550; 1.921 2.82884328662 234.6397364404; 1.805 2.23816036743 216.4804891757; 1.211 1.54685246534 191.9584544356; 0.765 3.44501766503 323.5054166574; 0.763 4.83197222448 210.1177017003; 0.613 4.19052656353 515.4638710930; 0.648 2.28591710303 209.3669421749; 0.616 4.03194472161 522.5774180938; 0.630 2.37952532019 632.7837393132; 0.639 0.29772678242 860.3099287528; 0.559 2.17110060530 124.4334152210; 0.442 2.23500083592 447.9388318784; 0.407 5.44515970990 1066.4954771900; 0.469 1.26889429317 654.1243803156; 0.488 3.20329778617 405.2575498736; 0.415 3.12435410343 330.6189636582; 0.442 3.38933498625 81.7521332162; 0.332 4.12464206608 838.9692877504; 0.320 3.18332026736 529.6909650946; 0.312 1.40962796637 429.7795846137; 0.291 3.18885372262 1464.6394800628; 0.333 2.94355912397 728.7629665310; 0.235 3.67049647573 1148.2476104062; 0.286 2.57895004576 1045.1548361876; 0.223 3.57980034401 1155.3611574070; 0.261 2.04564143519 1677.9385755008; 0.218 2.61967125327 536.8045120954; 0.262 2.48322150677 625.6701923124; 0.191 4.39064160974 1574.8458012822; 0.176 1.26161895188 422.6660376129; 0.190 2.32693171200 223.5940361765; 0.185 1.08713469614 742.9900605326; 0.168 0.69946458053 824.7421937488 ]; l5 = [ 123.615 2.25923345732 7.1135470008; 34.190 2.16250652689 14.2270940016; 27.546 1.19868150215 220.4126424388; 5.818 1.21584270184 227.5261894396; 5.318 0.23550400093 433.7117378768; 3.677 6.22669694355 426.5981908760; 3.057 2.97372046322 199.0720014364; 2.861 4.28710932685 206.1855484372; 1.617 6.25265362286 213.2990954380; 1.279 5.27612561266 639.8972863140; 0.932 5.56741549127 647.0108333148; 0.756 6.17716234487 191.9584544356; 0.760 0.69475544472 302.1647756550; 1.038 0.23516951637 440.8252848776; 1.007 3.14159265359 0.0000000000; 0.549 4.87733288264 88.8656802170; 0.504 4.77955496203 419.4846438752; 0.346 4.31847547394 853.1963817520; 0.392 5.69922389094 654.1243803156 ]; .. latitude series b0 = [ 4330678.040 3.60284428399 213.2990954380; 240348.303 2.85238489390 426.5981908760; 84745.939 0.00000000000 0.0000000000; 30863.357 3.48441504465 220.4126424388; 34116.063 0.57297307844 206.1855484372; 14734.070 2.11846597870 639.8972863140; 9916.668 5.79003189405 419.4846438752; 6993.564 4.73604689179 7.1135470008; 4807.587 5.43305315602 316.3918696566; 4788.392 4.96512927420 110.2063212194; 3432.125 2.73255752123 433.7117378768; 1506.129 6.01304536144 103.0927742186; 1060.298 5.63099292414 529.6909650946; 969.071 5.20434966103 632.7837393132; 942.050 1.39646678088 853.1963817520; 707.645 3.80302329547 323.5054166574; 552.313 5.13149109045 202.2533951741; 399.675 3.35891413961 227.5261894396; 316.063 1.99716764199 647.0108333148; 319.380 3.62571550980 209.3669421749; 284.494 4.88648481625 224.3447957019; 314.225 0.46510272410 217.2312487011; 236.442 2.13887472281 11.0457002639; 215.354 5.94982610103 846.0828347512; 208.522 2.12003893769 415.5524906121; 178.958 2.95361514672 63.7358983034; 207.213 0.73021462851 199.0720014364; 139.140 1.99821990940 735.8765135318; 134.884 5.24500819605 742.9900605326; 140.585 0.64417620299 490.3340891794; 121.669 3.11537140876 522.5774180938; 139.240 4.59535168021 14.2270940016; 115.524 3.10891547171 216.4804891757; 114.218 0.96261442133 210.1177017003; 96.376 4.48164339766 117.3198682202; 80.593 1.31692750150 277.0349937414; 72.952 3.05988482370 536.8045120954; 69.261 4.92378633635 309.2783226558; 74.302 2.89376539620 149.5631971346; 68.040 2.18002263974 351.8165923087; 61.734 0.67728106562 1066.4954771900; 56.598 2.60963391288 440.8252848776; 48.864 5.78725874107 95.9792272178; 48.243 2.18211837430 74.7815985673; 38.304 5.29151303843 1059.3819301892; 36.323 1.63348365121 628.8515860501; 35.055 1.71279210041 1052.2683831884; 34.270 2.45740470599 422.6660376129; 34.313 5.97994514798 412.3710968744; 33.787 1.14073392951 949.1756089698; 31.633 4.14722153007 437.6438911399; 36.833 6.27769966148 1162.4747044078; 26.980 1.27154816810 860.3099287528; 23.516 2.74936525342 838.9692877504; 23.460 0.98962849901 210.8514148832; 23.600 4.11386961467 3.9321532631; 23.631 3.07427204313 215.7467759928; 20.813 3.51084686918 330.6189636582; 19.509 2.81857577372 127.4717966068; 17.103 3.89784279922 214.2623032845; 17.635 6.19715516746 703.6331846174; 17.824 2.28524493886 388.4651552382; 20.935 0.14356167048 430.5303441391; 16.551 1.66649120724 38.1330356378; 19.100 2.97699096081 137.0330241624; 15.517 4.54798410406 956.2891559706; 17.065 0.16611115812 212.3358875915; 14.169 0.48937283445 213.3472795478; 19.027 6.27326062836 423.4167971383 ]; b1 = [ 397554.998 5.33289992556 213.2990954380; 49478.641 3.14159265359 0.0000000000; 18571.607 6.09919206378 426.5981908760; 14800.587 2.30586060520 206.1855484372; 9643.981 1.69674660120 220.4126424388; 3757.161 1.25429514018 419.4846438752; 2716.647 5.91166664787 639.8972863140; 1455.309 0.85161616532 433.7117378768; 1290.595 2.91770857090 7.1135470008; 852.630 0.43572078997 316.3918696566; 284.386 1.61881754773 227.5261894396; 292.185 5.31574251270 853.1963817520; 275.090 3.88864137336 103.0927742186; 297.726 0.91909206723 632.7837393132; 172.359 0.05215146556 647.0108333148; 127.731 1.20711452525 529.6909650946; 166.237 2.44351613165 199.0720014364; 158.220 5.20850125766 110.2063212194; 109.839 2.45695551627 217.2312487011; 81.759 2.75839171353 210.1177017003; 81.010 2.86038377187 14.2270940016; 68.658 1.65537623146 202.2533951741; 59.281 1.82410768234 323.5054166574; 65.161 1.25527521313 216.4804891757; 61.024 1.25273412095 209.3669421749; 46.386 0.81534705304 440.8252848776; 36.163 1.81851057689 224.3447957019; 34.041 2.83971297997 117.3198682202; 32.164 1.18676132343 846.0828347512; 33.114 1.30557080010 412.3710968744; 27.282 4.64744847591 1066.4954771900; 22.805 4.12923703368 415.5524906121; 27.128 4.44228739187 11.0457002639; 18.100 5.56392353608 860.3099287528; 20.851 1.40999273740 309.2783226558; 14.947 1.34302610607 95.9792272178; 15.316 1.22393617996 63.7358983034; 14.601 1.00753704970 536.8045120954; 12.842 2.27059911053 742.9900605326; 12.832 4.88898877901 522.5774180938; 13.137 2.45991904379 490.3340891794; 11.883 1.87308666696 423.4167971383; 13.027 3.21731634178 277.0349937414; 9.946 3.11650057543 625.6701923124; 12.710 0.29501589197 422.6660376129; 9.644 1.74586356703 330.6189636582; 8.079 2.41931187953 430.5303441391; 8.245 4.68121931659 215.7467759928; 8.958 0.46482448501 429.7795846137; 6.547 3.01351967549 949.1756089698; 7.251 5.97098186912 149.5631971346; 6.056 1.49115011100 234.6397364404; 5.791 5.36720639912 735.8765135318; 5.994 0.02442871989 654.1243803156; 6.647 3.90879134581 351.8165923087; 6.824 1.52456408861 437.6438911399; 5.134 3.81149834833 74.7815985673; 3.959 5.63505813057 210.8514148832; 3.811 2.63992803111 3.1813937377; 3.643 1.73267151007 1059.3819301892; 3.554 4.98621474362 3.9321532631; 4.568 4.33599514584 628.8515860501; 3.145 2.51404811765 1162.4747044078; 3.522 1.16093567319 223.5940361765; 2.933 2.06057834252 956.2891559706 ]; b2 = [ 20629.977 0.50482422817 213.2990954380; 3719.555 3.99833475829 206.1855484372; 1627.158 6.18189939500 220.4126424388; 1346.067 0.00000000000 0.0000000000; 705.842 3.03914308836 419.4846438752; 365.042 5.09928680706 426.5981908760; 329.632 5.27899210039 433.7117378768; 219.335 3.82841533795 639.8972863140; 139.393 1.04272623499 7.1135470008; 103.980 6.15730992966 227.5261894396; 92.961 1.97994412845 316.3918696566; 71.242 4.14754353431 199.0720014364; 51.927 2.88364833898 632.7837393132; 48.961 4.43390206741 647.0108333148; 41.373 3.15927770079 853.1963817520; 28.602 4.52978327558 210.1177017003; 23.969 1.11595912146 14.2270940016; 20.511 4.35095844197 217.2312487011; 19.532 5.30779711223 440.8252848776; 18.263 0.85391476786 110.2063212194; 15.742 4.25767226302 103.0927742186; 16.840 5.68112084135 216.4804891757; 13.613 2.99904334066 412.3710968744; 11.567 2.52679928410 529.6909650946; 7.963 3.31512423920 202.2533951741; 6.599 0.28766025146 323.5054166574; 6.312 1.16121321336 117.3198682202; 5.891 3.58260177246 309.2783226558; 6.648 5.55714129949 209.3669421749; 5.590 2.47783944511 1066.4954771900; 6.192 3.61231886519 860.3099287528; 4.231 3.02212363572 846.0828347512; 3.612 4.79935735435 625.6701923124; 3.398 3.76732731354 423.4167971383; 3.387 6.04222745633 234.6397364404; 2.578 5.63610668746 735.8765135318; 2.831 4.81642822334 429.7795846137; 2.817 4.47516563908 654.1243803156; 2.573 0.22467245054 522.5774180938; 2.610 3.29126967191 95.9792272178; 2.419 0.02986335489 415.5524906121; 2.112 4.55964179603 422.6660376129; 2.304 6.25081073546 330.6189636582; 1.758 5.53430456858 536.8045120954; 1.814 5.05675881426 277.0349937414; 1.550 5.60375604692 223.5940361765; 1.457 4.47767649852 430.5303441391; 1.607 5.53599550100 224.3447957019; 1.172 4.71017775994 203.0041546995; 1.231 0.25115931880 3.9321532631; 1.105 1.01595427676 21.3406410024; 0.868 4.84623483952 949.1756089698; 0.939 1.35429452093 742.9900605326; 0.693 6.03599130692 124.4334152210; 0.712 4.45550701473 191.9584544356; 0.690 5.44243765037 437.6438911399; 0.810 0.46198177342 515.4638710930; 0.694 5.23748122403 447.9388318784; 0.604 2.95749705544 88.8656802170 ]; b3 = [ 666.252 1.99006340181 213.2990954380; 632.350 5.69778316807 206.1855484372; 398.051 0.00000000000 0.0000000000; 187.838 4.33779804809 220.4126424388; 91.884 4.84104208217 419.4846438752; 42.369 2.38073239056 426.5981908760; 51.548 3.42149490328 433.7117378768; 25.661 4.40167213109 227.5261894396; 20.551 5.85313509872 199.0720014364; 18.081 1.99321433229 639.8972863140; 10.874 5.37344546547 7.1135470008; 9.590 2.54901825866 647.0108333148; 7.085 3.45518372721 316.3918696566; 6.002 4.80055225135 632.7837393132; 5.778 0.01680378777 210.1177017003; 4.881 5.63719730884 14.2270940016; 4.501 1.22424419010 853.1963817520; 5.542 3.51756747774 440.8252848776; 3.548 4.71299370890 412.3710968744; 2.851 0.62679207578 103.0927742186; 2.173 3.71982274459 216.4804891757; 1.991 6.10867071657 217.2312487011; 1.435 1.69177141453 860.3099287528; 1.217 4.30778838827 234.6397364404; 1.157 5.75027789902 309.2783226558; 0.795 5.69026441157 117.3198682202; 0.733 0.59842720676 1066.4954771900; 0.713 0.21700311697 625.6701923124; 0.773 5.48361981990 202.2533951741; 0.897 2.65577866867 654.1243803156; 0.509 2.86079833766 429.7795846137; 0.462 4.17742567173 529.6909650946; 0.390 6.11288036049 191.9584544356; 0.505 4.51905764563 323.5054166574; 0.379 3.74436004151 223.5940361765; 0.332 5.49370890570 21.3406410024; 0.377 5.25624813434 95.9792272178; 0.384 4.48187414769 330.6189636582; 0.367 5.03190929680 846.0828347512; 0.281 1.14133888637 735.8765135318; 0.245 5.81618253250 423.4167971383; 0.241 1.70335120180 522.5774180938; 0.258 3.69110118716 447.9388318784 ]; b4 = [ 80.384 1.11918414679 206.1855484372; 31.660 3.12218745098 213.2990954380; 17.143 2.48073200414 220.4126424388; 11.844 3.14159265359 0.0000000000; 9.005 0.38441424927 419.4846438752; 6.164 1.56186379537 433.7117378768; 4.660 1.28235639570 199.0720014364; 4.775 2.63498295487 227.5261894396; 1.487 1.43096671616 426.5981908760; 1.424 0.66988083613 647.0108333148; 1.075 6.18092274059 639.8972863140; 1.145 1.72041928134 440.8252848776; 0.682 3.84841098180 14.2270940016; 0.655 3.49486258327 7.1135470008; 0.456 0.47338193402 632.7837393132; 0.509 0.31432285584 412.3710968744; 0.343 5.86413875355 853.1963817520; 0.270 2.50125594913 234.6397364404; 0.197 5.39156324804 316.3918696566; 0.236 2.11084590211 210.1177017003 ]; b5 = [ 7.895 2.81927558645 206.1855484372; 1.014 0.51187210270 220.4126424388; 0.772 2.99484124049 199.0720014364; 0.967 3.14159265359 0.0000000000; 0.583 5.96456944075 433.7117378768; 0.588 0.78008666397 227.5261894396 ]; .. radius vector r0 = [ 955758135.801 0.00000000000 0.0000000000; 52921382.465 2.39226219733 213.2990954380; 1873679.934 5.23549605091 206.1855484372; 1464663.959 1.64763045468 426.5981908760; 821891.059 5.93520025371 316.3918696566; 547506.899 5.01532628454 103.0927742186; 371684.449 2.27114833428 220.4126424388; 361778.433 3.13904303264 7.1135470008; 140617.548 5.70406652991 632.7837393132; 108974.737 3.29313595577 110.2063212194; 69007.015 5.94099622447 419.4846438752; 61053.350 0.94037761156 639.8972863140; 48913.044 1.55733388472 202.2533951741; 34143.794 0.19518550682 277.0349937414; 32401.718 5.47084606947 949.1756089698; 20936.573 0.46349163993 735.8765135318; 20839.118 1.52102590640 433.7117378768; 20746.678 5.33255667599 199.0720014364; 15298.457 3.05943652881 529.6909650946; 14296.479 2.60433537909 323.5054166574; 11993.314 5.98051421881 846.0828347512; 11380.261 1.73105746566 522.5774180938; 12884.128 1.64892310393 138.5174968707; 7752.769 5.85191318903 95.9792272178; 9796.061 5.20475863996 1265.5674786264; 6465.967 0.17733160145 1052.2683831884; 6770.621 3.00433479284 14.2270940016; 5850.443 1.45519636076 415.5524906121; 5307.481 0.59737534050 63.7358983034; 4695.746 2.14919036956 227.5261894396; 4043.988 1.64010323863 209.3669421749; 3688.132 0.78016133170 412.3710968744; 3376.457 3.69528478828 224.3447957019; 2885.348 1.38764077631 838.9692877504; 2976.033 5.68467931117 210.1177017003; 3419.551 4.94549148887 1581.9593482830; 3460.943 1.85088802878 175.1660598002; 3400.616 0.55386747515 350.3321196004; 2507.630 3.53851863255 742.9900605326; 2448.325 6.18412386316 1368.6602528450; 2406.138 2.96559220267 117.3198682202; 2881.181 0.17960757891 853.1963817520; 2173.959 0.01508587396 340.7708920448; 2024.483 5.05411271271 11.0457002639; 1740.254 2.34657043464 309.2783226558; 1861.397 5.93361638244 625.6701923124; 1888.436 0.02968443389 3.9321532631; 1610.859 1.17302463549 74.7815985673; 1462.631 1.92588134017 216.4804891757; 1474.547 5.67670461130 203.7378678824; 1395.109 5.93669404929 127.4717966068; 1781.165 0.76314388077 217.2312487011; 1817.186 5.77713225779 490.3340891794; 1472.392 1.40064915651 137.0330241624; 1304.089 0.77235613966 647.0108333148; 1149.773 5.74021249703 1162.4747044078; 1126.667 4.46707803791 265.9892934775; 1277.489 2.98412586423 1059.3819301892; 1207.053 0.75285933160 351.8165923087; 1071.399 1.13567265104 1155.3611574070; 1020.922 5.91233512844 1685.0521225016; 1315.042 5.11202572637 211.8146227297; 1295.553 4.69184139933 1898.3512179396; 1099.037 1.81765118601 149.5631971346; 998.462 2.63131596867 200.7689224658; 985.869 2.25992849742 956.2891559706; 932.434 3.66980793184 554.0699874828; 664.481 0.60297724821 728.7629665310; 659.850 4.66635439533 195.1398481733; 617.740 5.62092000007 942.0620619690; 626.382 5.94208232590 1478.8665740644; 482.230 1.84070179496 479.2883889155; 487.689 2.79373616806 3.1813937377; 470.086 0.83847755040 1471.7530270636; 451.817 5.64468459871 2001.4439921582; 553.128 3.41088600844 269.9214467406; 534.397 1.26443331367 275.5505210331; 472.572 1.88198584660 515.4638710930; 405.434 1.64001413521 536.8045120954; 517.196 4.44310450526 2214.7430875962; 452.848 3.00349117198 302.1647756550; 494.340 2.28626675074 278.5194664497; 489.825 5.80631420383 191.2076949102; 427.459 0.05741344372 284.1485407422; 339.763 1.40198657693 440.8252848776; 340.627 0.89091104306 628.8515860501; 385.974 1.99700402508 1272.6810256272; 288.298 1.12160250272 422.6660376129; 294.444 0.42577061903 312.1990839626 ]; r1 = [ 6182981.282 0.25843515034 213.2990954380; 506577.574 0.71114650941 206.1855484372; 341394.136 5.79635773960 426.5981908760; 188491.375 0.47215719444 220.4126424388; 186261.540 3.14159265359 0.0000000000; 143891.176 1.40744864239 7.1135470008; 49621.111 6.01744469580 103.0927742186; 20928.189 5.09245654470 639.8972863140; 19952.612 1.17560125007 419.4846438752; 18839.639 1.60819563173 110.2063212194; 12892.827 5.94330258435 433.7117378768; 13876.565 0.75886204364 199.0720014364; 5396.699 1.28852405908 14.2270940016; 4869.308 0.86793894213 323.5054166574; 4247.455 0.39299384543 227.5261894396; 3252.084 1.25853470491 95.9792272178; 2856.006 2.16731405366 735.8765135318; 2909.411 4.60679154788 202.2533951741; 3081.408 3.43662557418 522.5774180938; 1987.689 2.45054204795 412.3710968744; 1941.309 6.02393385142 209.3669421749; 1581.446 1.29191789712 210.1177017003; 1339.511 4.30801821806 853.1963817520; 1315.590 1.25296446023 117.3198682202; 1203.085 1.86654673794 316.3918696566; 1091.088 0.07527246854 216.4804891757; 954.403 5.15173410519 647.0108333148; 966.012 0.47991379141 632.7837393132; 881.827 1.88471724478 1052.2683831884; 874.215 1.40224683864 224.3447957019; 897.512 0.98343776092 529.6909650946; 784.866 3.06377517461 838.9692877504; 739.892 1.38225356694 625.6701923124; 612.961 3.03307306767 63.7358983034; 658.210 4.14362930980 309.2783226558; 649.600 1.72489486160 742.9900605326; 599.236 2.54924174765 217.2312487011; 502.886 2.12958819475 3.9321532631; 413.017 4.59334402271 415.5524906121; 356.117 2.30312127651 728.7629665310; 344.777 5.88787577835 440.8252848776; 395.004 0.53349091102 956.2891559706; 335.526 1.61614647174 1368.6602528450; 362.772 4.70691652867 302.1647756550; 321.611 0.97931764923 3.1813937377; 277.783 0.26007031431 195.1398481733; 291.173 2.83129427918 1155.3611574070; 264.971 2.42670902733 88.8656802170; 264.864 5.82860588985 149.5631971346; 316.777 3.58395655749 515.4638710930; 294.324 2.81632778983 11.0457002639; 244.864 1.04493438899 942.0620619690; 215.368 3.56535574833 490.3340891794; 264.047 1.28547685567 1059.3819301892; 246.245 0.90730313861 191.9584544356; 222.077 5.13193212050 269.9214467406; 194.973 4.56665009915 846.0828347512; 182.802 2.67913220473 127.4717966068; 181.645 4.93431600689 74.7815985673; 174.651 3.44560172182 137.0330241624; 165.515 5.99775895715 536.8045120954; 154.809 1.19720845085 265.9892934775; 169.743 4.63464467495 284.1485407422; 151.526 0.52928231044 330.6189636582; 152.461 5.43886711695 422.6660376129; 157.687 2.99559914619 340.7708920448; 140.630 2.02069760726 1045.1548361876; 139.834 1.35282959390 1685.0521225016; 140.977 1.27099900689 203.0041546995; 136.013 5.01678984678 351.8165923087; 153.391 0.26968607873 1272.6810256272; 129.476 1.14344730612 21.3406410024; 127.831 2.53876158952 1471.7530270636; 126.538 3.00310970076 277.0349937414; 100.277 3.61360169153 1066.4954771900; 103.169 0.38175114761 203.7378678824; 107.527 4.31870663477 210.8514148832 ]; r2 = [ 436902.464 4.78671673044 213.2990954380; 71922.760 2.50069994874 206.1855484372; 49766.792 4.97168150870 220.4126424388; 43220.894 3.86940443794 426.5981908760; 29645.554 5.96310264282 7.1135470008; 4141.650 4.10670940823 433.7117378768; 4720.909 2.47527992423 199.0720014364; 3789.370 3.09771025067 639.8972863140; 2963.990 1.37206248846 103.0927742186; 2556.363 2.85065721526 419.4846438752; 2208.457 6.27588858707 110.2063212194; 2187.621 5.85545832218 14.2270940016; 1956.896 4.92448618045 227.5261894396; 2326.801 0.00000000000 0.0000000000; 923.840 5.46392422737 323.5054166574; 705.936 2.97081280098 95.9792272178; 546.115 4.12854181522 412.3710968744; 373.838 5.83435991809 117.3198682202; 360.882 3.27703082368 647.0108333148; 356.350 3.19152043942 210.1177017003; 390.627 4.48106176893 216.4804891757; 431.485 5.17825414612 522.5774180938; 325.598 2.26867601656 853.1963817520; 405.018 4.17294157872 209.3669421749; 204.494 0.08774848590 202.2533951741; 206.854 4.02188336738 735.8765135318; 178.474 4.09716541453 440.8252848776; 180.143 3.59704903955 632.7837393132; 153.656 3.13470530382 625.6701923124; 147.779 0.13614300541 302.1647756550; 123.189 4.18895309647 88.8656802170; 133.076 2.59350469420 191.9584544356; 100.367 5.46056190585 3.1813937377; 131.975 5.93293968941 309.2783226558; 97.235 4.01832604356 728.7629665310; 110.709 4.77853798276 838.9692877504; 119.053 5.55385105975 224.3447957019; 93.852 4.38395529912 217.2312487011; 108.701 5.29310899841 515.4638710930; 78.609 5.72525447528 21.3406410024; 81.468 5.10897365253 956.2891559706; 96.412 6.25859229567 742.9900605326; 69.228 4.04901237761 3.9321532631; 65.168 3.77713343518 1052.2683831884; 64.088 5.81235002453 529.6909650946; 62.541 2.18445116349 195.1398481733; 56.987 3.14666549033 203.0041546995; 55.979 4.84108422860 234.6397364404; 52.940 5.07780548444 330.6189636582; 50.635 2.77318570728 942.0620619690; 41.649 4.79014211005 63.7358983034; 44.858 0.56460613593 269.9214467406; 41.357 3.73496404402 316.3918696566; 52.847 3.92623831484 949.1756089698; 38.398 3.73966157784 1045.1548361876; 37.583 4.18924633757 536.8045120954; 35.285 2.90795856092 284.1485407422; 33.576 3.80465978802 149.5631971346; 41.073 4.57870454147 1155.3611574070; 30.412 2.48140171991 860.3099287528; 31.373 4.84075951849 1272.6810256272; 30.218 4.35186294470 405.2575498736; 39.430 3.50858482049 422.6660376129; 29.658 1.58886982096 1066.4954771900; 35.202 5.94478241578 1059.3819301892 ]; r3 = [ 20315.005 3.02186626038 213.2990954380; 8923.581 3.19144205755 220.4126424388; 6908.677 4.35174889353 206.1855484372; 4087.129 4.22406927376 7.1135470008; 3879.041 2.01056445995 426.5981908760; 1070.788 4.20360341236 199.0720014364; 907.332 2.28344368029 433.7117378768; 606.121 3.17458570534 227.5261894396; 596.639 4.13455753351 14.2270940016; 483.181 1.17345973258 639.8972863140; 393.174 0.00000000000 0.0000000000; 229.472 4.69838526383 419.4846438752; 188.250 4.59003889007 110.2063212194; 149.508 3.20199444400 103.0927742186; 121.442 3.76831374104 323.5054166574; 101.215 5.81884137755 412.3710968744; 102.146 4.70974422803 95.9792272178; 93.078 1.43531270909 647.0108333148; 72.601 4.15395598507 117.3198682202; 84.347 2.63462379693 216.4804891757; 62.198 2.31239345505 440.8252848776; 45.145 4.37317047297 191.9584544356; 49.536 2.38854232908 209.3669421749; 54.829 0.30526468471 853.1963817520; 40.498 1.83836569765 302.1647756550; 38.089 5.94455115525 88.8656802170; 32.243 4.01146349387 21.3406410024; 40.671 0.68845183210 522.5774180938; 28.209 5.77193013961 210.1177017003; 24.976 3.06249709014 234.6397364404; 20.824 4.92570695678 625.6701923124; 25.070 0.73137425284 515.4638710930; 17.485 5.73135068691 728.7629665310; 18.009 1.45593152612 309.2783226558; 16.927 3.52771580455 3.1813937377; 13.437 3.36479898106 330.6189636582; 11.090 3.37212682914 224.3447957019; 11.082 3.41719974793 956.2891559706; 9.978 1.58791582772 202.2533951741; 11.551 5.99093726182 735.8765135318; 10.500 6.06911092266 405.2575498736; 9.144 2.93557421591 124.4334152210; 8.737 4.65432480769 632.7837393132; 10.023 0.58247011625 860.3099287528; 7.482 4.50669216436 942.0620619690; 10.091 0.28268774007 838.9692877504; 9.243 2.57034547708 223.5940361765; 8.652 1.75808100881 429.7795846137; 7.564 1.45635107202 654.1243803156 ]; r4 = [ 1202.050 1.41499446465 220.4126424388; 707.796 1.16153570102 213.2990954380; 516.121 6.23973568330 206.1855484372; 426.664 2.46924890293 7.1135470008; 267.736 0.18659206741 426.5981908760; 170.171 5.95926972384 199.0720014364; 145.113 1.44211060143 227.5261894396; 150.339 0.47970167140 433.7117378768; 121.033 2.40527320817 14.2270940016; 47.332 5.56857488676 639.8972863140; 15.745 2.90112466278 110.2063212194; 16.668 0.52920774279 440.8252848776; 18.954 5.85626429118 647.0108333148; 14.074 1.30343550656 412.3710968744; 12.708 2.09349305926 323.5054166574; 14.724 0.29905316786 419.4846438752; 11.133 2.46304825990 117.3198682202; 11.320 0.21785507019 95.9792272178; 9.233 2.28127318068 21.3406410024; 9.246 1.56496312830 88.8656802170; 8.970 0.68301278041 216.4804891757; 7.674 3.59367715368 302.1647756550; 7.823 4.48688804175 853.1963817520; 8.360 1.27239488455 234.6397364404; 9.552 3.14159265359 0.0000000000; 4.834 2.58836294602 515.4638710930; 6.059 5.16774448740 103.0927742186; 4.410 0.02211643085 191.9584544356; 4.364 1.59622746023 330.6189636582; 3.676 3.29899839673 210.1177017003; 4.364 5.97349927933 654.1243803156; 4.447 4.97415112184 860.3099287528; 3.220 2.72684237392 522.5774180938; 4.005 1.59858435636 405.2575498736; 3.099 0.75235436533 209.3669421749; 2.464 1.19167306488 124.4334152210; 3.088 1.32258934286 728.7629665310; 2.220 3.28087994088 203.0041546995; 2.127 6.14648095022 429.7795846137; 2.110 0.75462855247 295.0512286542; 2.020 3.89394929749 1066.4954771900; 2.248 0.49319150178 447.9388318784; 2.180 0.72761059998 625.6701923124; 1.809 0.09057839517 942.0620619690; 1.672 1.39635398184 224.3447957019; 1.641 3.02468307550 184.8449074348; 1.772 0.81879250825 223.5940361765 ]; r5 = [ 128.612 5.91282565136 220.4126424388; 32.273 0.69256228602 7.1135470008; 26.698 5.91428528629 227.5261894396; 19.923 0.67370653385 14.2270940016; 20.223 4.95136801768 433.7117378768; 13.537 1.45669521408 199.0720014364; 14.097 2.67074280191 206.1855484372; 13.364 4.58826996370 426.5981908760; 7.257 4.62966127155 213.2990954380; 4.876 3.61448275002 639.8972863140; 3.136 4.65661021909 191.9584544356; 2.917 0.48665273315 323.5054166574; 3.759 4.89624165044 440.8252848776; 3.303 4.07190859545 647.0108333148; 2.883 3.18003019204 419.4846438752; 2.338 3.69553554327 88.8656802170; 1.950 5.32729247780 302.1647756550 ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); sr5 = zzterm(r5, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4 + sr5*t5)/100000000; return [lambda, beta, delta]; endfunction function huranus(day) ## returns the heliocentric ecliptic latitude of Uranus given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## More terms than Meeus included as an experiment .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC l0 = [ ]; l1 = [ ]; l2 = [ ]; l3 = [ ]; l4 = [ ]; l5 = [ ]; .. latitude series b0 = [ ]; b1 = [ ]; b2 = [ ]; b3 = [ ]; b4 = [ ]; b5 = [ ]; .. radius vector r0 = [ ]; r1 = [ ]; r2 = [ ]; r3 = [ ]; r4 = [ ]; r5 = [ ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); sr5 = zzterm(r5, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4 + sr5*t5)/100000000; return [lambda, beta, delta]; endfunction function hneptune(day) ## returns the heliocentric ecliptic latitude of Neptune given ## the UT instant. Mean coordinates referred to equinox of date ## vector returned gives [lambda, beta, delta (au) ] ## See chapter 31 of Meeus for method - coefficients from NASA ADC ## More terms than Meeus included as an experiment .. Read in the coefficients for the series, these have been .. recopied from the VSOP82 series from NASA ADC l0 = [ ]; l1 = [ ]; l2 = [ ]; l3 = [ ]; l4 = [ ]; l5 = [ ]; .. latitude series b0 = [ ]; b1 = [ ]; b2 = [ ]; b3 = [ ]; b4 = [ ]; b5 = [ ]; .. radius vector r0 = [ ]; r1 = [ ]; r2 = [ ]; r3 = [ ]; r4 = [ ]; r5 = [ ]; t = day/365250; .. note, julian millenia not centuries t2 = t*t; t3 = t2*t; t4 = t2*t2; t5 = t4 * t; tpi = 2*pi(); sl0 = zzterm(l0, t); sl1 = zzterm(l1, t); sl2 = zzterm(l2, t); sl3 = zzterm(l3, t); sl4 = zzterm(l4, t); sl5 = zzterm(l5, t); lambda = (sl0 + sl1*t + sl2*t2 + sl3*t3 + sl4*t4 + sl5 * t5)/100000000; lambda = mod(360/tpi * lambda, 360); if lambda < 0; lambda = lambda + 360; endif; sb0 = zzterm(b0, t); sb1 = zzterm(b1, t); sb2 = zzterm(b2, t); sb3 = zzterm(b3, t); sb4 = zzterm(b4, t); sb5 = zzterm(b5, t); beta = (sb0 + sb1*t + sb2*t2 + sb3*t3 + sb4*t4 + sb5*t5)/100000000; beta = 360/tpi * beta; sr0 = zzterm(r0, t); sr1 = zzterm(r1, t); sr2 = zzterm(r2, t); sr3 = zzterm(r3, t); sr4 = zzterm(r4, t); sr5 = zzterm(r5, t); delta = (sr0 + sr1*t + sr2*t2 + sr3*t3 + sr4*t4 + sr5*t5)/100000000; return [lambda, beta, delta]; endfunction function moon(day) ## returns apparent geocentric equatorial coordinates of Moon given ## the UT instant day. .. find dphi and deps nut = nutation(day); .. find mean ecliptic coords of Moon meanmoon = gmoon(day); .. apparent longitude of Moon l = meanmoon[1] + nut[1]; b = meanmoon[2]; r = meanmoon[3]; e = obliquity(day) + nut[2]; alpha = datan2(dsin(l) *dcos(e) - dtan(b) * dsin(e), dcos(l)); if alpha < 0; alpha = alpha + 360; endif; delta = dasin(dsin(b) * dcos(e) + dcos(b) * dsin(e) * dsin(l)); return [alpha, delta, r]; endfunction function equatorial(day, ecliptic, e) ## given: the UT instant in day, a vector containing the ecliptic ## cooridnates and the obliquity of the ecliptic ## in e. The geocentric distance r is 'passed through'. ## returns: the equatorial coordinates as ra (degrees) and dec and r. ## note: obliquity argument allows choice of apparent, mean or ## J2000.0 equator. Function obiquity(day) returns the mean ## obliquity, add nutation[2] for apparent. l = ecliptic[1]; b = ecliptic[2]; r = ecliptic[3]; alpha = datan2(dsin(l) *dcos(e) - dtan(b) * dsin(e), dcos(l)); if alpha < 0; alpha = alpha + 360; endif; delta = dasin(dsin(b) * dcos(e) + dcos(b) * dsin(e) * dsin(l)); return [alpha, delta, r]; endfunction function apparent(day, ecliptic) ## given: the UT instant in day and a vector containing the mean ## ecliptic coordinates. ## returns: the apparent equatorial coordinates as ra (degrees) ## dec and r in a.u. referred to the equinox and true ecliptic ## of date nut = nutation(day); e = obliquity(day) + nut[2]; l = ecliptic[1] + nut[1]; b = ecliptic[2]; r = ecliptic[3]; alpha = datan2(dsin(l) *dcos(e) - dtan(b) * dsin(e), dcos(l)); if alpha < 0; alpha = alpha + 360; endif; delta = dasin(dsin(b) * dcos(e) + dcos(b) * dsin(e) * dsin(l)); return [alpha, delta, r]; endfunction function obliquity(day) ## returns: mean obliquity of ecliptic ## given: TD Instant as days since J2000.0 in 'day' t = day/ 36525; e = 84381.4 - 46.8150 * t - 0.00059 * t^2 + 0.001813 * t^3; e = e/3600; return e; endfunction function raltaz(day, station, equatorial) ## returns: altitude and azimuth of object ## given: 'day' - TD instant ## 'station' - vector containing geographical longitude, latitude ## height and air temperature and pressure of observer. ## (west, south negative, decimal degrees, metres asl, degrees C ## and millibars) ## note: for the Moon, use topocentric equatorial coords from ## tmoon - for other objects use 'apparent' coordinates ## refraction correction applied as in Meeus ch 15, p102 ## function altaz has no refraction correction glong = station[1]; glat = station[2]; height = station[3]; temp = station[4]; pressure = station[5]; ra = equatorial[1]; dec = equatorial[2]; lst = mod(gst(day) + glong, 360); if lst < 0; lst = lst + 360; endif; ha = mod(lst - ra, 360); if ha < 0; ha = ha + 360; endif; salt = dsin(dec)*dsin(glat) + dcos(dec)*dcos(glat)*dcos(ha); alt = dasin(salt); y = -dcos(dec)*dcos(glat)*dsin(ha); x = dsin(dec) - dsin(glat) * salt; az = datan2(y, x); .. refraction correction using Saemundsson's formula (see Meeus ch15) refrac = 1.02 / (dtan(alt + 10.3/(alt + 5.11))); refrac = refrac * (pressure /1010 * 283/(273 + temp)) / 60; alt = alt + refrac; return [az, alt, equatorial[3]]; endfunction function altaz(day, station, equatorial) ## returns: altitude and azimuth of object ## given: 'day' - TD instant ## 'station' - vector containing geographical longitude, latitude ## height and air temperature and pressure of observer. ## (west, south negative, decimal degrees, metres asl, degrees C ## and millibars) ## 'equatorial' - vector of equatorial coordinates of object ## note: for the Moon, use topocentric equatorial coords from ## tmoon - for other objects use 'apparent' coordinates ## This function does NOT correct for refraction - see raltaz glong = station[1]; glat = station[2]; height = station[3]; temp = station[4]; pressure = station[5]; ra = equatorial[1]; dec = equatorial[2]; lst = mod(gst(day) + glong, 360); if lst < 0; lst = lst + 360; endif; ha = mod(lst - ra, 360); if ha < 0; ha = ha + 360; endif; salt = dsin(dec)*dsin(glat) + dcos(dec)*dcos(glat)*dcos(ha); alt = dasin(salt); y = -dcos(dec)*dcos(glat)*dsin(ha); x = dsin(dec) - dsin(glat) * salt; az = datan2(y, x); return [az, alt, equatorial[3]]; endfunction function cart(sph) ## returns: cartesian coordinates of object in vector ## given: vector with [ra/long, dec/lat, r] of object ## note: assumes decimal degrees for angles r = sph[3]; l = sph[1]; b = sph[2]; x = r*dcos(b)*dcos(l); y = r*dcos(b)*dsin(l); z = r*dsin(b); return [x, y, z]; endfunction function sph(cart) ## returns: spherical coordinates of object in vector ## given: vector with cartesian coordinates of object ## note: returns decimal degrees for angles r = sqrt(cart.cart'); l = datan2(cart[2], cart[1]); b = datan(cart[3] / sqrt(cart[1]^2 + cart[2]^2)); return [l, b, r]; endfunction function sun(day) ## returns: apparent equatorial coordinates of the Sun (geocentric) ## given: TD instant in day ## note: coordinates returned as vector [ra (degs), dec, r (au)] ## based on Meeus truncation of VSOP87 - he claims 1" earth = hearth(day); nut = nutation(day); ob = obliquity(day) + nut[2]; b = -1 * earth[2]; r = earth[3]; abb = (-20.4898 / r)/3600; l = earth[1] + 180 + abb + nut[1]; out = equatorial(day, [l, b, r], ob); return out; endfunction function mean(day, ecliptic) ## given: the TD instant in day and a vector containing the mean ## ecliptic geocentric coordinates. ## returns: the mean equatorial coordinates as ra (degrees) ## dec and r in a.u. referred to the equinox and mean ecliptic ## of date ## note: no nutation or aberration correction at all nut = nutation(day); e = obliquity(day) ; l = ecliptic[1] ; b = ecliptic[2]; r = ecliptic[3]; alpha = datan2(dsin(l) *dcos(e) - dtan(b) * dsin(e), dcos(l)); if alpha < 0; alpha = alpha + 360; endif; delta = dasin(dsin(b) * dcos(e) + dcos(b) * dsin(e) * dsin(l)); return [alpha, delta, r]; endfunction function gmer(day) ## given: the TD instant in day ## returns: the geometric equatorial coordinates of Mercury ## note: no correction for light travel time, abberation or nutation p = cart(hmercury(day)); e = cart(hearth(day)); ec = sph(p - e); return mean(day, ec); endfunction function gjup(day) ## given: the TD instant in day ## returns: the geometric equatorial coordinates of Jupiter ## note: no correction for light travel time, abberation or nutation p = cart(hjupiter(day)); e = cart(hearth(day)); ec = sph(p - e); return mean(day, ec); endfunction function gven(day) ## given: the TD instant in day ## returns: the geometric equatorial coordinates of Venus ## note: no correction for light travel time, abberation or nutation p = cart(hvenus(day)); e = cart(hearth(day)); ec = sph(p - e); return mean(day, ec); endfunction function gmar(day) ## given: the TD instant in day ## returns: the geometric equatorial coordinates of Mars ## note: no correction for light travel time, abberation or nutation p = cart(hmars(day)); e = cart(hearth(day)); ec = sph(p - e); return mean(day, ec); endfunction function amar(day) ## given: the TD instant in day ## returns: the astrometric equatorial coordinates of Mars ## note: corrected for light travel time and aberration e = cart(hearth(day)); day1 = day; r1 = 0; lp = 0; repeat lp = lp + 1 p = cart(hmars(day1)); gr = p - e; r2 = r1; r1 = sqrt(gr.gr'); day1 = day - 0.0057755183 * r1; if abs(r1 - r2) < 10^-6 || lp == 6; break; endif; end; ec = sph(gr); return mean(day, ec); endfunction function venus(day) ## given: the TD instant in day ## returns: the apparent equatorial coordinates of Venus ## note: corrected for light travel time, aberration ## and nutation out = zzaplanet("hvenus", day); return out; endfunction function mercury(day) ## given: the TD instant in day ## returns: the apparent equatorial coordinates of Mercury ## note: corrected for light travel time, aberration ## and nutation out = zzaplanet("hmercury", day); return out; endfunction function jupiter(day) ## given: the TD instant in day ## returns: the apparent equatorial coordinates of Jupiter ## note: corrected for light travel time, aberration ## and nutation out = zzaplanet("hjupiter", day); return out; endfunction function mars(day) ## given: the TD instant in day ## returns: the apparent equatorial coordinates of Mars ## note: corrected for light travel time, aberration ## and nutation out = zzaplanet("hmars", day); return out; endfunction function saturn(day) ## given: the TD instant in day ## returns: the apparent equatorial coordinates of Saturn ## note: corrected for light travel time, aberration ## and nutation out = zzaplanet("hsaturn", day); return out; endfunction function zzaplanet(planet, day) ## given: the TD instant in day and heliocentric coordinate function ## in string 'planet' ## returns: the apparent equatorial coordinates of planet ## note: corrected for light travel time, aberration ## and nutation ## this function is not normally used interactively .. iterative light travel time calculation se = hearth(day); e = cart(se); day1 = day; r1 = 0; lp = 0; repeat lp = lp + 1; dummy = planet(day1); p = cart(dummy); gr = p - e; r2 = r1; r1 = sqrt(gr.gr'); day1 = day - 0.0057755183 * r1; if abs(r1 - r2) < 10^-6 || lp == 6; break; endif; end; ec = sph(gr); .. correction for aberration due to motion of Earth t = day/ 36525; t2 = t * t; ecc = 0.016708617 - 0.000042037*t - 0.0000001236 * t2; epi = 102.93735 + 1.71953 * t + 0.00046 *t2; sunl = se[1] + 180; k = -20.49552 /3600; dl = (k*dcos(sunl - ec[1]) + ecc*k*dcos(epi - ec[1])) / dcos(ec[2]); db = k*dsin(ec[2])* (sin(sunl - ec[1]) - ecc* dsin(epi - sunl)); ec[1] = ec[1] + dl; ec[2] = ec[2] +db; return apparent(day, ec); endfunction function topocentric(day, station, pos) ## returns: topcentric equatorial coordinates of body ## given: function 'pos' to obtain apparent coords of body ## TD instant in 'day' ## station - lat, long, height, temp, pressure of observing ## location .. get constants rho sin (phi') and rho cos(phi') .. Meeus ch 10 geo = pos(day); f1 = 0.99664719; phi = station[2]; h = station[3]; u = datan(f1 * dtan(phi)); rhosin = f1 * dsin(u) + h / 6378140 * dsin(phi); rhocos = dcos(u) + h/ 6378140 * dcos(phi); .. apply the differential formulas for topcentric ha and dec .. find if this is the Moon or not and get parallax if geo[3] > 1000; sinpar = 6378.14 / geo[3]; else; sinpar = 8.794 / (geo[3] * 3600); endif; .. find LST and hence geocentric hour angle lst = gst(day) + station[1]; ha = lst - geo[1]; gdec = geo[2]; a = dcos(gdec) * dsin(ha); b = dcos(gdec) * dcos(ha) - rhocos * sinpar; c = dsin(gdec) - rhosin * sinpar; q = sqrt(a*a + b*b + c*c); tha = datan2(a, b); tdec = dasin(c/q); ra = lst - tha; if ra < 0; ra = ra + 360; endif; r = q* geo[3]; return [ra, tdec, r ]; endfunction function brum() ## returns: a vector with the longitude, latitude, height, temperature ## and pressure typical to Birmingham UK ## note: modify temperature and pressure if accurate refraction ## adjustments needed. return [-1.91667, 52.5, 120, 10, 1012 ]; endfunction function settle() ## returns: a vector with the longitude, latitude, height, temperature ## and pressure typical to Settle, near Skipton, Yorkshire UK ## note: modify temperature and pressure if accurate refraction ## adjustments needed. return [-2 + 18/60, 54 + 5/60, 200, 10, 1012 ]; endfunction function reekie() ## returns: a vector with the longitude, latitude, height, temperature ## and pressure typical to Edinburgh, Scotland ## note: modify temperature and pressure if accurate refraction ## adjustments needed. return [-3 + 12/60, 55 + 57/60, 50, 10, 1012 ]; endfunction function tmoon(day, station) ## returns: topcentric equatorial coordinates of Moon ## given: TD instant in 'day' ## 'station' - vector lat, long, height (m), temp (C), ## and pressure (mB) of observing location return topocentric(day, station, "moon"); endfunction function librate(day) ## returns: selenographic longitude and latitude of the sub earth point ## position angle of the Moon's rotation axis ## given: TD instant in days since J2000.0 ## note: Geocentric librations as in Meeus Ch 51 .. arguments (put these in a separate function eventually) t = day/36525; t2 = t*t; t3 = t2*t; t4 = t2*t2; .. Mean longitude including light travel time and referred to equinox of date l1 = mod(218.3164591 + 481267.88134236 *t - 0.0013268 *t2 + t3/538841 - t4/65194000, 360); .. Mean elongation d = mod(297.8502042 + 445267.1115168 *t - 0.0016300 *t2 + t3/545868 - t4/113065000, 360); .. Sun's mean anomaly m = mod(357.5291092 + 35999.0502909 *t - 0.0001536 *t2 + t3/24490000, 360); .. Moon's mean anomaly m1 = mod(134.9634114 + 477198.8676313 *t + 0.0089970 *t2 + t3/69699 - t4/14712000, 360); ..Moon's argument of latitude (mean distance from ascending node) f = mod(93.2720993 + 483202.0175273 *t - 0.0034029 *t2 - t3/3526000 + t4/863310000, 360); if f < 0; f = f + 360; endif; ..Moon's longitude of mean ascending node om = mod(125.0445550 - 1934.1361849 * t + 0.0020762 * t2 + t3 / 467410 - t4 / 60616000, 360); if om < 0; om = om + 360; endif; ..eccentricity of Earth's orbit .. Eccentricity of earth's orbit round Sun (affects terms with M or 2M) e = 1 - 0.002516 * t - 0.0000074 *t2; .. Optical librations i = 1 + 32/60 + 32.7 /3600; mm = gmoon(day); am = amoon(day); lambda = mm[1]; beta = am[2]; w = lambda - om; y = dsin(w) * dcos(beta) * dcos(i) - dsin(beta) * dsin(i); x = dcos(w) * dcos(beta); a = datan2(y , x); la = a - f; ba = dasin(-dsin(w) * dcos(beta) * dsin(i) - dsin(beta)* dcos(i)); .. Physical libration calculation - see Meeus ch51 p 343 k1 = 119.75 + 131.849 * t; k2 = 72.56 + 20.186 * t; rho = -0.02752* dcos(m1); rho = rho - 0.02245 * dsin(f); rho = rho + 0.00684 * dcos(m1 - 2*f); rho = rho - 0.00293 * dcos(2*f); rho = rho - 0.00085 * dcos(2*f - 2*d); rho = rho - 0.00054 * dcos(m1 - 2 * d); rho = rho - 0.00020 * dsin(m1 + f); rho = rho - 0.00020 * dcos(m1 + 2*f); rho = rho - 0.00020 * dcos(m1 - f); rho = rho + 0.00014 * dcos(m1 + 2*f - 2*d); sigma = - 0.02816 * dsin(m1); sigma = sigma + 0.02244 * dcos(f); sigma = sigma - 0.00682 * dsin(m1 - 2*f); sigma = sigma - 0.00279 * dsin(2*f); sigma = sigma - 0.00083 * dsin(2*f - 2*d); sigma = sigma + 0.00069 * dsin(m1 - 2*d); sigma = sigma + 0.00040 * dcos(m1 + f); sigma = sigma - 0.00025 * dsin(2*m1); sigma = sigma - 0.00023 * dsin(m1 + 2*f); sigma = sigma + 0.00020 * dcos(m1 - f); sigma = sigma + 0.00019 * dsin(m1 - f); sigma = sigma + 0.00013 * dsin(m1 + 2*f - 2*d); sigma = sigma - 0.00010 * dcos(m1 - 3*f); tau = + 0.02520 * e * dsin(m); tau = tau + 0.00473 * dsin(2*m1 - 2*f); tau = tau - 0.00467 * dsin(m1); tau = tau + 0.00396 * dsin(k1); tau = tau + 0.00276 * dsin(2*m1 - 2*d); tau = tau + 0.00196 * dsin(om); tau = tau - 0.00183 * dcos(m1 - f); tau = tau + 0.00115 * dsin(m1 - 2*d); tau = tau - 0.00096 * dsin(m1 - d); tau = tau + 0.00046 * dsin(2*f - 2*d); tau = tau - 0.00039 * dsin(m1 - f); tau = tau - 0.00032 * dsin(m1 - m - d); tau = tau + 0.00027 * dsin(2*m1 - m - 2*d); tau = tau + 0.00023 * dsin(k2); tau = tau - 0.00014 * dsin(2*d); tau = tau + 0.00014 * dcos(2*m1 - 2*f); tau = tau - 0.00012 * dsin(m1 - 2*f); tau = tau - 0.00012 * dsin(2*m1); tau = tau + 0.00011 * dsin(2*m1 - 2*m - 2*d); laa = -tau + ( rho * dcos(a) + sigma * dsin(a)) * dtan(ba); baa = sigma * dcos(a) - rho * dsin(a); ..total libration l0 = la + laa; b0 = ba + baa; ..position angle of Moon's rotation axis measured from ..celestial north pole nut = nutation(day); epsilon = obliquity(day) + nut[2]; apparent = moon(day); alpha = apparent[1]; v = om + nut[1] + sigma / dsin(i); x = dsin(i + rho) * dsin(v); y = dsin(i + rho) * dcos(v) * dcos(epsilon) - dcos(i + rho) * dsin(epsilon); w2 = datan2(x, y); p = dasin(sqrt(x*x + y*y) * dcos(alpha - w2) / dcos(b0)); return [l0, b0, p]; endfunction euler-1.61.0/progs/vplot.e0000644000175000001440000000312107417015640014221 0ustar ericuserscomment Vertical grid ticks. endcomment function xgrid1(xx,ss,f=1,grid=1,ticks=1,color=3) ## xgrid([x0,x1,...]) draws vertical grid lines on the plot window at ## x0,x1,... ## xgrid([x0,x1,...],f) additionally writes x0/f to the axis. ## The ticks have name ss. c=plot(); n=cols(xx); s=scaling(0); h=holding(1); w=window(); st=linestyle("."); color(color); ht=textheight(); loop 1 to n; x=xx[index()]; s=ss[index()]; if (x<=c[2])&&(x>=c[1]); if grid; plot([x,x],[c[3],c[4]]); endif; if ticks; col=w[1]+(x-c[1])/(c[2]-c[1])*(w[3]-w[1]); ctext(niceform(s/f),[col,w[4]+0.2*ht]); endif; endif; end; if ticks && !(f~=1); ctext("* "|printscale(f),[(w[1]+w[3])/2,w[4]+1.5*ht]); endif; linestyle(st); color(1); holding(h); scaling(s); return 0; endfunction function ygrid1(yy,ss,f=1,grid=1,ticks=1,color=3) ## ygrid([x0,x1,...]) draws horizontal grid lines on the plot window at ## x0,x1,... ## ygrid([x0,x1,...],f) additionally writes x0/f to the axis. global vertical c=plot(); n=cols(yy); s=scaling(0); h=holding(1); st=linestyle("."); color(color); w=window(); wd=textwidth(); ht=textheight(); loop 1 to n; y=yy[index()]; s=ss[index()]; if (y>=c[3])&&(y<=c[4]); if ticks; row=w[4]-(y-c[3])/(c[4]-c[3])*(w[4]-w[2]); if vertical; vcutext(niceform(s,f),[w[1]-0.2*ht,row]); else rtext(niceform(s/f),[w[1]-wd/2,row-ht/2]); endif; endif; if grid; plot([c[1],c[2]],[y,y]); endif; endif; end; if ticks && !(f~=1); text("* "|printscale(f),[w[1]-6*wd,0]); endif; linestyle(st); color(1); holding(h); scaling(s); return 0; endfunction euler-1.61.0/progs/kepler.e0000644000175000001440000000202207417015640014336 0ustar ericusers.. Demonstrates planet movements reset; function force (x,y) ## simple force of a single body at (0,0) r=x*x+y*y; r=r*sqrt(r); return {-x/r,-y/r} endfunction function dgl (t,p) {fx,fy}=force(p{1},p{2}); return [p{3},p{4},fx,fy]; endfunction function showcurve ## solves the one body problem. t=linspace(0,4,100); clg; setplot(-1.5,1.5,-1.5,1.5); xplot(); hold on; s=heun("dgl",t,[1,0,0,1]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.9]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.8]); plot(s[1],s[2]); s=heun("dgl",t,[1,0,0,0.7]); plot(s[1],s[2]); hold off; return plot(); endfunction "showcurve defined." function showpotential ## demonstrates the Newton potential and a kepler elipse drawn on it. {x,y}=field(linspace(-0.9,1.1,23),linspace(-1,1,23)); p=max((-1)/sqrt(x*x+y*y),-10)+0.5; view(3,4,0.5,1.2); solid(x,y,p); hold on; t=linspace(0,3.5,150); s=heun("dgl",t,[1,0,0,0.7]); ps=-1/sqrt(s[1]*s[1]+s[2]*s[2])+0.5; color(2); wire(s[1],s[2],ps); hold off; return 0; endfunction "showpotential defined." .. EOF euler-1.61.0/progs/rendite.e0000644000175000001440000000755207417015640014523 0ustar ericusers.. Berechnet die Rendite eines Wertpapieres function rendite (x) ## berechnet die Rendite von Zahlungen x zu Perioden 0,1,2,3,... if sum(x)<0; error("Rendite negativ?"); endif; q=polydif(x); c=1; repeat cnew=c-polyval(x,c)/polyval(q,c); if c~=cnew; break; endif; c=cnew; end; return (1/cnew-1)*100; endfunction function rendite2 (x,n) ## berechnet die Rendite von Zahlungen x zu gebrochenen Perioden n. if sum(x)<0; error("Rendite negativ?"); endif; k2=x*n; n2=n-1; k2=k2[2:length(x)]; n2=n2[2:length(x)]; c=1; repeat cnew=c-sum(x*c^n)/sum(k2*c^n2); if c~=cnew; break; endif; c=cnew; end; return (1/cnew-1)*100; endfunction function anlageformel (f,k0,r,k1,n,i0,i1) return k0*f^n+r*f^i1*(f^(n-i0-i1+1)-1)/(f-1)+k1 endfunction function anlage1 (kapital,rate,endkapital,laufzeit,start,halten) f=bisect("anlageformel",1.0000001,2,kapital,rate, .. endkapital,laufzeit,start,halten); return (f-1)*100; endfunction function anlage (kapital,rate,endkapital,laufzeit,start=1,halten=1) ## Berechnet die Rendite einer Anlage oder eines Darlehens in %. ## kapital : Zahlung zu Beginn ## rate : Zahlung zu Beginn von Periode "start" ## bis Beginn Periode "laufzeit"-"halten" ## endkapital : Auszahlung bzw. Endkapital nach laufzeit ## Zahlung müssen negativ eingegeben werden ! ## Die Rendite muá zwischen 0 und 100 % liegen. ## Beispiel: anlage(-104,8.75,100,8) return map("anlage1",kapital,rate,endkapital,laufzeit,start,halten); endfunction function effzins (kurs,laufzeit,zins) ## berechnet den effektiven Zins eines Wertpapieres. ## kurs und zins in %, laufzeit in Zinsperioden. ## z.B. effzins(104,8,8.75). return anlage(-kurs,zins,100,laufzeit,1,0); endfunction function rate (darlehen,laufzeit,zins,rest=0,faellig=1) ## Berechnet die Rate für ein Darlehen mit Restschuld. ## Der Zins wird in % angegeben. ## Die erste Zahlung wird nach der faellig-sten Zinsperiode f„llig. ## Die letzte Rate wird nach der n-ten Zinsperiode f„llig. ## Die Restschuld ist die Schuld nach der n-ten Periode. f=1+zins/100; return (darlehen*f^laufzeit-rest)*(f-1)/(f^(laufzeit-faellig+1)-1); endfunction function darlzins (darlehen,laufzeit,rate,rest=0,faellig=1) ## Berechnet den Zinssatz eines Darlehens in %. ## Die anderen Parameter sind wie bei "rate". return anlage(darlehen,-rate,-rest,laufzeit,faellig,0); endfunction function restschuld (darlehen,laufzeit,zins,rate,faellig=1) ## Berechnet die Restschuld. ## Die Parameter sind wie bei "rate". f=1+zins/100; return darlehen*f^laufzeit-rate*(f^(laufzeit-faellig+1)-1)/(f-1); endfunction function restschulden (darlehen,laufzeit,zins,rate,faellig=1) ## Berechnet einen Vektor mit Restschulden. ## Die Parameter sind wie bei "rate". ## Die Funktion kann nicht mit Vektoren aufgerufen werden. r=dup(darlehen,laufzeit+1)'; f=1+zins/100; if faellig==0; r[1]=r[1]-rate; endif; loop 2 to laufzeit+1; r[#]=r[#-1]*f; if #>faellig; r[#]=r[#]-rate; endif; end; return r; endfunction function sparzins (rate,laufzeit,endkapital) ## Berechnet den effektiven Zins eines Sparvertrages. return darlehen(0,-rate,endkapital,laufzeit,0,1); endfunction function endkap (rate,laufzeit,zins) ## Berechnet das Endkapital eines Sparvertrages. p=1+zins/100; return p*rate*(p^laufzeit-1)/(p-1); endfunction "rendite(zahlungen) definiert." "rendite2(zeiten,zahlungen) definiert." "anlage(startkapital,rate,endkapital,laufzeit,start,halten) definiert" "effzins(kurs%,laufzeit,zins%) definiert." "rate(darlehen,laufzeit,zins%,rest=0,faellig=1) definiert." "darlzins(darlehen,laufzeit,rate,rest=0,faellig=1) definiert." "restschuld(darlehen,laufzeit,rate,faellig=1) definiert." "restschulden(darlehen,laufzeit,rate,faellig=1) definiert." "sparzins(rate,laufzeit,endkapital) definiert." "endkap(rate,laufzeit,zins%) definiert." "Benutzen Sie help ... für weitere Informationen." euler-1.61.0/progs/kette.dat0000644000175000001440000000170207417015640014520 0ustar ericusers-1.1633965964109541 0.9788732394366197 -1.1135847134919850 0.7394366197183099 -1.0606595878905805 0.4812206572769953 -1.0015079769243047 0.2417840375586854 -0.9485828513229001 0.0727699530516432 -0.8676385415795754 -0.1760563380281690 -0.7742412611065085 -0.4107981220657277 -0.6870704659983127 -0.5892018779342723 -0.5781069721130679 -0.7676056338028169 -0.4317845660385963 -0.9366197183098591 -0.2854621599641248 -1.0446009389671362 -0.1453662392545243 -1.0962441314553990 0.0134091375496896 -1.0774647887323943 0.1877507277660812 -0.9788732394366197 0.3278466484756815 -0.8474178403755869 0.4492631130906686 -0.6690140845070423 0.5208676947866866 -0.5281690140845070 0.6329444313543671 -0.2887323943661972 0.7107754984152560 -0.0680751173708920 0.7792668374288385 0.1525821596244132 0.8415316910775498 0.3873239436619718 0.8944568166789545 0.6126760563380281 0.9442686995979236 0.8474178403755869 0.9878540971520215 1.0774647887323943 euler-1.61.0/progs/splines.e0000644000175000001440000000201707417015640014535 0ustar ericuserscomment Natural cubic and linear splines endcomment .. ### Natural spline ### function spline (x,y) ## spline(x,y) defines the natural Spline at points x(i) with ## values y(i). It returns the second derivatives at these points. n=cols(x); h=x[2:n]-x[1:n-1]; s=h[2:n-1]+h[1:n-2]; l=h[2:n-1]/s; A=diag([n,n],0,2); A=setdiag(A,1,0|l); A=setdiag(A,-1,1-l|0); b=6/s*((y[3:n]-y[2:n-1])/h[2:n-1]-(y[2:n-1]-y[1:n-2])/h[1:n-2]); return (A\(0|b|0)')'; endfunction function splineval (x,y,h,t) ## splineval(x,y,h,t) evaluates the cubic interpolation spline for ## (x(i),y(i)) with second derivatives h(i) at t. p1=find(x,t); p2=p1+1; y1=y[p1]; y2=y[p2]; x1=x[p1]; x2=x[p2]; f=(x2-x1)^2; h1=h[p1]*f; h2=h[p2]*f; b=h1/2; c=(h2-h1)/6; a=y2-y1-b-c; d=(t-x1)/(x2-x1); return y1+d*(a+d*(b+c*d)); endfunction function linsplineval (x,y,t) ## sval(x,y,t) evaluates the linear interpolating spline for ## (x(i),y(i)) at t. p1=find(x,t); p2=p1+1; y1=y[p1]; y2=y[p2]; x1=x[p1]; x2=x[p2]; return y1+(t-x1)*(y2-y1)/(x2-x1); endfunction euler-1.61.0/progs/randwalk.en0000644000175000001440000000360207417015640015042 0ustar ericusers% In this notebook, we demonstrate a random walk. We will also % do a Monte Carlo simulation to evaluate a certain probability. % % First we fix the length of the walk and the probability to go % upward +1 in each step (in the other steps you go downward -1). >n=500; p=0.48; % The next statement generates a random walk. First the random % number is tested against p. Then we have rescale the (0,1) to % (-1,1) and finally we take the cumulative sum. >A=cumsum(2*(random(1,n)<=p)-1); % We can plot this walk easily. >setplot(0,n-1,-4*sqrt(n),4*sqrt(n)); >xplot(0:n-1,A); wait(20); % The last value is binomially distributed with the following % mean value. >m=n*p-n*(1-p) % And this standard deviation. >d=sqrt(n*p*(1-p)) % Here is a 99 percent confidence interval. >h=invnormaldis(0.995)*d; [m-h,m+h] % We now write a function to repeat this procedure m times and % test, wether the random walk ever exceeds a certain limit. This % could be done in a single statement, but it would need more % memory. >function test (n,p,m,lim=20) $c=0; $loop 1 to m; $c=c+any(cumsum(2*(random(1,n)<=p)-1)>=lim); $end $return c/m; $endfunction % Set the following value to something lower, if you have a slow % machine (less than Pentium). >m=1000; % First we test a random walk of length 500 against exceeding % the default limit 20. We repeat the test m times and get a chance % of about 13 percent. >test(500,0.48,m) % We can compute the true probability with the following function. % % By numerical reasons, this function will become inaccurate for % large n and may even yield 0 instead of 1 then. >function prob (n,p,l) $nu=n/2+l/2:n; $a=sum(bin(n,nu)*p^nu*(1-p)^(n-nu)); $nu=n/2+l/2+1:n; $return sum(bin(n,nu)*p^(n+l-nu)*(1-p)^(nu-l))+a $endfunction >prob(500,0.48,20) % Here is another example with the probability of a true random % walk (p=0.5) to exceed 20 in a path of length 500. >test(500,0.5,m,20) >prob(500,0.5,20) > euler-1.61.0/progs/flower.e0000644000175000001440000000104607417015640014357 0ustar ericusers.. recursive flower function flower (x=0,y=0,a=90,l=1,dl=0.8,n=5,d=10,t=0.98) r=random([1,5]); if n==0 || r[5]>t; style("m<>"); mark([x],[y]); else a1=a-(1+r[1]/2)*d; l1=l*(1+r[2]/2); x1=x+cos(a1*pi/180)*l1; y1=y+sin(a1*pi/180)*l1; plot([x,x1],[y,y1]); flower(x1,y1,a1,dl*l,dl,n-1,d); a1=a+(1+r[3]/2)*d; l1=l*(1+r[4]/2); x1=x+cos(a1*pi/180)*l1; y1=y+sin(a1*pi/180)*l1; plot([x,x1],[y,y1]); flower(x1,y1,a1,dl*l,dl,n-1,d); endif; return ""; endfunction setplot(-3,3,-1,5); clg; hold on; flower(); hold off; wait(180); euler-1.61.0/progs/choleski.e0000644000175000001440000000200207417015640014653 0ustar ericuserscomment Choleski decomposition and LGS solver. Eigenvalue iteration using Choleski decomposition choleski(A) lsolve(L,b) choleigen(A) endcomment function choleski (A) ## Decompose a real matrix A, such that A=L.L'. Returns L. ## A must be a positive definite symmetric and at least 2x2 matrix. n=cols(A); L=zeros(size(A)); L[1,1]=sqrt(A[1,1]); L[2,1]=A[1,2]/L[1,1]; L[2,2]=sqrt(A[2,2]-L[2,1]^2); loop 3 to n; c=flipy(lusolve(flipx(flipy(L[1:#-1,1:#-1])),flipy(A[1:#-1,#]))); L[#,1:#-1]=c'; L[#,#]=sqrt(A[#,#]-c'.c); end; return L; endfunction function lsolve (L,b) ## Solve L.L'=b return lusolve(L',flipy(lusolve(flipx(flipy(L)),flipy(b)))); endfunction function choleigen (A) ## Iterates the Choleski-iteration, until the diagonal converges. ## A must be positive definite symmetric and at least 2x2. if isvar("eps"); localepsilon(eps); endif; L=choleski(A); B=L'.L; d=diag(B,0); repeat L=choleski(B); B=L'.L; dnew=diag(B,0); if dnew~=d; break; endif; d=dnew; end; return dnew; endfunction euler-1.61.0/progs/3body.e0000644000175000001440000000260507417015640014103 0ustar ericuserscomment Three body problem (demonstration). >test will run a test program >setplanets lets you define places and initial vectors endcomment function norm (v) return sqrt(sum(v*v)) endfunction function f3body (x,y) y1=y[1,1:2]; y2=y[1,3:4]; y3=y[1,5:6]; d21=(y2-y1)/norm(y2-y1)^3; d31=(y3-y1)/norm(y3-y1)^3; d32=(y3-y2)/norm(y3-y2)^3; return y[7:12]|(d21+d31)|(-d21+d32)|(-d31-d32); endfunction function test3body (y1) y=y1; x=0; h=0.01; setplot(-3,3,-3,3); clg; hold off; xplot(); frame(); title("Any key stops the movement"); repeat; ynew=runge2("f3body",x,x+h,y,0.0001,h); H=(y_ynew)'; hold on; color(4); plot(H[1],H[2]); color(5); plot(H[3],H[4]); color(6); plot(H[5],H[6]); hold off; y=ynew; x=x+h; if (any(abs(y[1:6])>4)); "One body left definition area!", break; endif; if testkey; break; endif; end; return x endfunction function test return test3body([-2,0,2,0,0,2,0.1,-0.2,0,0.2,0.1,0]); endfunction function setplanets "Set the places and vectors for all three bodies", "Press return now", wait(20); y=zeros(1,12); setplot(-3,3,-3,3); hold off; clg; xplot(); frame(); loop 1 to 3; m=mouse; style("m[]"); hold on; mark(m[1],m[2]); hold off; y[2*#-1:2*#]=m; m1=mouse; style("->"); color(3+#); hold on; plot([m[1],m1[1]],[m[2],m1[2]]); hold off; color(1); style(""); y[6+2*#-1:6+2*#]=(m1-m)/10; end; return test3body(y); endfunction euler-1.61.0/progs/autodemo.en0000644000175000001440000000017407430445321015053 0ustar ericusers% launch a loop to demonstrate euler graphical capabilities % just look ... % press "Esc" to stop the loop >load autodemo > euler-1.61.0/progs/lorenz.e0000644000175000001440000000056607417015640014400 0ustar ericusersfunction lorenz (t,x) return [-3*(x[1]-x[2]),-x[1]*x[3]+26.5*x[1]-x[2],x[1]*x[2]-x[3]] endfunction function lorenza t=0:0.02:40; s=adaptiverunge("lorenz",t,[0,1,0],0.001); v=view(4,2,0.5,0.5); framedwire(s[1]/20,s[2]/20,s[3]/20-1); title("The Lorenz attractor"); wait(180); view(v); return s endfunction "The computation takes a while, please wait!", lorenza(); euler-1.61.0/progs/broyden.e0000644000175000001440000000312007417015640014516 0ustar ericuserscomment Broyden algorithm endcomment .. ### Broyden ### function broyden (ffunction,xstart,A=0) ## broyden("f",x) or broyden("f",x,A;...) finds a zero of f. ## x is the starting value and A is a approximation of the jacobian. ## ... is passed to f(x,...) ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x=xstart; n=cols(x); delta=sqrt(epsilon()); if A==0; A=zeros([n n]); y=ffunction(x,args()); loop 1 to n; x0=x; x0[#]=x0[#]+delta; x1=x; x1[#]=x1[#]-delta; A[:,#]=(ffunction(x0,args())-ffunction(x1,args()))'/(2*delta); end; endif; y=ffunction(x,args()); repeat d=-A\y'; x=x+d'; y1=ffunction(x,args()); q=y1-y; A=A+((q'-A.d).d')/(d'.d); if d~=0; break; endif; y=y1; end; return x; endfunction function nbroyden (ffunction,xstart,nmax,A=0) ## broyden("f",x,n) or broyden("f",x,n,A;...) does n steps of the ## Broyden algorithm. ## x is the starting value and a is a approximation of the jacobian. ## if A is 0, it is neglected. ## ... is passed to f(x,...) ## You can specify an epsilon eps with eps=... as last parameter. if (isvar("eps")); localepsilon(eps); endif; x=xstart; n=cols(x); r=x; delta=epsilon(); if A==0; A=zeros([n n]); y=ffunction(x,args()); loop 1 to n; x0=x; x0[#]=x0[#]+delta; A[:,#]=(ffunction(x0,args())-y)'/delta; end; endif; y=ffunction(x,args()); count=0; repeat count=count+1; d=-A\y'; xn=x+d'; if xn~=x || count>nmax; r=r_xn; break; endif; x=xn; y1=ffunction(x,args()); q=y1-y; A=A+((q'-A.d).d')/(d'.d); y=y1; r=r_xn; end; return r; endfunction euler-1.61.0/progs/ieigen.en0000644000175000001440000000231307417015640014475 0ustar ericusers% Let us demonstrate the use of interval methods for the % inclusion of a Eigenvalue. % % We first generate a random postive definite matrix. >A=random(20,20); A=A'.A; % Then we compute its Eigenvalues in the usual way. >l=sort(re(eigenvalues(A))); % We take the first Eigenvalue. >longformat; l=l[1] 0.003318934192275 >{l,x}=xeigenvalue(A,l); l, 0.003318934192276 % We normalize it in a special way. >x=x/x[1]; % We now set up the function (l,x2,...,xn) -> Ax-lx with % x1=1. >function f(x,A) $n=cols(x); return ((A-x[1]*id(n)).(1|x[2:n])')'; $endfunction % This is the start of our algorithm. >lx=l_x[2:cols(A)]; % We could use the Broyden method to determine the zero % of this function. >yb=broyden("f",lx';A); yb[1], 0.003318934192276 % We set up the derivative of f. >function f1(x,A) $n=cols(x); B=A-x[1]*id(n); B[:,1]=-(1|x[2:n])'; return B; $endfunction % We expand lx, so that it probably contains a solution % of f(x)=0. >ilx=expand(~lx~,1000000000); % The interval Newton method now proves a guaranteed % inclusion of the Eigenvalue. >{y,v}=inewton2("f","f1",ilx';A); y[1] ~0.003318934192235,0.003318934192317~ % v=1 means, that the inclusion is verified. >v 1 > > euler-1.61.0/progs/child.e0000644000175000001440000000344307417015640014147 0ustar ericuserscomment Two problems: - Child and toy problem. - Man and dog problem. Load the child notebook for a demonstration. endcomment function childsin (t) ## Child moves along a circle return {[t,sin(t)],[1,cos(t)]} endfunction function childcircle (t) ## Child moves along a circle return {[cos(t),sin(t)],[-sin(t),cos(t)]} endfunction function fchild (t,x,fff) ## ODE to be solved {xc,vc}=fff(t); w=x-xc; w=w/sqrt(sum(w*w)); return (vc.w')*w; endfunction function child (fff,start=[2,0],dur=10,n=200) ## A child walks along a curve described by fff from time 0 to dur. ## It holds a toy on a stick, which is initially at start. ## The function displays the paths of the child and the toy. t=linspace(0,dur,n); x=zeros(n+1,2); loop 1 to n+1; x[#]=fff(t[#];fff,args()); end; x=x'; keepsquare(1); y=heun("fchild",t,start;fff,args()); setplot(plotarea(x[1]_y[1],x[2]_y[2])); color(2); plot(x[1],x[2]); color(1); hold on; plot(y[1],y[2]); hold off; xplot(); keepsquare(0); return "" endfunction function dogcircle (t) return [cos(t),sin(t)]; endfunction function dogline (t) return [t,0]; endfunction function fdog (t,x,fff,speed) ## ODE to be solved xc=fff(t); w=xc-x; w=w/sqrt(sum(w*w)); return speed*w; endfunction function dog (fff,start=[2,0],dur=10,speed=1,n=200) ## A child walks along a curve described by fff from time 0 to dur. ## It holds a toy on a stick, which is initially at start. ## The function displays the paths of the child and the toy. t=linspace(0,dur,n); t=linspace(0,dur,n); x=zeros(n+1,2); loop 1 to n+1; x[#]=fff(t[#];fff,args()); end; x=x'; keepsquare(1); y=heun("fdog",t,start;fff,speed,args()); setplot(plotarea(x[1]_y[1],x[2]_y[2])); color(2); plot(x[1],x[2]); color(1); hold on; plot(y[1],y[2]); hold off; xplot(); keepsquare(0); return "" endfunction euler-1.61.0/progs/3dplot.e0000644000175000001440000000545007417015640014271 0ustar ericuserscomment Nicer 3D plots endcomment function f3d (ffunction,n=10) ## f3d("f") or f3d("f",n;...) ## Draw a function defined on [-1,1]^2 with x-, y- and z-axis. ## 2n is the spacing. x=-1:1/n:1; y=x; {X,Y}=field(x,y); if isfunction(ffunction); Z=ffunction(X,Y,args()); else; Z=expreval(ffunction,X,y=Y); endif; view(6,3,0.4,0.2); z1=totalmin(Z); z2=totalmax(Z); h=(z2+z1)/2; Z=Z-h; i=n+1:2*n+1; j=1:n+1; hold off; solid(X[i,j],Y[i,j],Z[i,j]); hold on; linewidth(3); wire([0,0],[0,0],[-1.5,1.5]); wire([-1.5,0],[0,0],[-h,-h]); wire([0,0],[0,1.5],[-h,-h]); linewidth(1); solid(X[i,i],Y[i,i],Z[i,i]); solid(X[j,j],Y[j,j],Z[j,j]); linewidth(3); wire([0,1.5],[0,0],[-h,-h]); wire([0,0],[-1.5,0],[-h,-h]); linewidth(1); solid(X[j,i],Y[j,i],Z[j,i]); hold off; return "" endfunction function fcd (ffunction,n=10,xmin=-1,xmax=1,ymin=-1,ymax=1,nc=20) ## plots a function of two variables or expression of x and y ## with density and contour. x=linspace(xmin,xmax,n); y=linspace(ymin,ymax,n); {X,Y}=field(x,y); if isfunction(ffunction); Z=ffunction(X,Y,args()); else; Z=expreval(ffunction,X,y=Y); endif; z1=totalmin(Z); z2=totalmax(Z); density(Z,1); h=holding(1); contour(Z,linspace(z1,z2,nc)); holding(h); setplot(xmin,xmax,ymin,ymax); return "" endfunction function fcontour (ffunction,n=10,xmin=-1,xmax=1,ymin=-1,ymax=1,nc=20) ## Draw contour lines of a function or expression in x and y. ## 2n is the spacing. x=linspace(xmin,xmax,n); y=linspace(ymin,ymax,n); {X,Y}=field(x,y); if isfunction(ffunction); Z=ffunction(X,Y,args()); else; Z=expreval(ffunction,X,y=Y); endif; z1=totalmin(Z); z2=totalmax(Z); contour(Z,linspace(z1,z2,nc)); setplot(xmin,xmax,ymin,ymax); return "" endfunction function f3dpolar (ffunction,n=10) ## f3dpolar("f") or f3dpolar("f",n;...) ## Draw a function defined on [-1,1]^2 with x-, y- and z-axis. ## 2n is the spacing. r=0:1/n:1; p=linspace(0,2*pi,8*n); {P,R}=field(p,r); X=R*cos(P); Y=R*sin(P); if isfunction(ffunction); Z=ffunction(X,Y,args()); else; Z=expreval(ffunction,X,y=Y); endif; view(6,3,0.4,0.2); z1=totalmin(Z); z2=totalmax(Z); h=(z2+z1)/2; Z=Z-h; i=1:n+1; j=2*n:4*n+1; solid(X[i,j],Y[i,j],Z[i,j]); hold on; linewidth(3); wire([0,0],[0,0],[-1.5,1.5]); wire([-1.5,0],[0,0],[-h,-h]); wire([0,0],[0,1.5],[-h,-h]); linewidth(1); j=1:2*n+1; solid(X[i,j],Y[i,j],Z[i,j]); j=4*n:6*n+1; solid(X[i,j],Y[i,j],Z[i,j]); linewidth(3); wire([0,1.5],[0,0],[-h,-h]); wire([0,0],[-1.5,0],[-h,-h]); linewidth(1); j=6*n:8*n+1; solid(X[i,j],Y[i,j],Z[i,j]); hold off; return "" endfunction function upperwindow (title="") ## select the upper window for plot window(150,860,75,500); title(title); return title endfunction function lowerwindow (title="") ## select the upper window for plot window(150,860,575,1010); ctext(title,512,510); return title endfunction .. eof euler-1.61.0/progs/ipoldemo.e0000644000175000001440000000071207417015640014670 0ustar ericuserscomment demo of xpolyval This file computes the correct values of a badly conditioned polynomial, after showing that the normal values are completely wrong. endcomment comments off load "x.e" p=[-945804881,1753426039,-1083557822,223200658]; t=linspace(1.61801916,1.61801917,100); s=polyval(p,t); xplot(t-1.61801916,s); title("Incorrect polynomial values"); wait(180); s=xpolyval(p,t); xplot(t-1.61801916,s); title("Correct polynomial values"); wait(180); euler-1.61.0/progs/logplot.en0000644000175000001440000000010607521223451014710 0ustar ericusers>v=10^linspace(-2,1,100);r=0.5*v^2; >shrinkwindow();xylogplot(v,r); > euler-1.61.0/progs/Makefile0000644000175000001440000003610410331246762014356 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # progs/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = .. pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu subdir = progs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(progsdir)" progsDATA_INSTALL = $(INSTALL_DATA) DATA = $(progs_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = SUBDIRS = user progsdir = $(prefix)/share/euler/progs progs_DATA = \ *.e\ *.en\ *.dat EXTRA_DIST = $(progs_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu progs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu progs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-progsDATA: $(progs_DATA) @$(NORMAL_INSTALL) test -z "$(progsdir)" || $(mkdir_p) "$(DESTDIR)$(progsdir)" @list='$(progs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(progsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(progsdir)/$$f'"; \ $(progsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(progsdir)/$$f"; \ done uninstall-progsDATA: @$(NORMAL_UNINSTALL) @list='$(progs_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(progsdir)/$$f'"; \ rm -f "$(DESTDIR)$(progsdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(progsdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-progsDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-progsDATA uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-progsDATA install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-info-am \ uninstall-progsDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/progs/astro.en0000644000175000001440000000441710125000570014356 0ustar ericusersThis is EULER, Version 2.0. Type help(Return) for help. Enter command: (8388608 Bytes free.) Processing configuration file. Done. >load astro ----------------------------------------------------- Astronomical functions 1999-08-19 Type 'help astro(RETURN)' for list of functions ----------------------------------------------------- >help astro function astro () ## Astronomical functions taken from ## Jean Meeus - 'Astronomical Algorithms' ## Montenbruck and Pfleger - 'Astronomy on the Personal Computer' ## Duffett-Smith - 'Practical astronomy with your calculator' ## other sources. ## For information on a function named fred, type 'help fred'. ## ## Report any problems or errors in these functions to ## Keith Burnett (keith@xylem.demon.co.uk) ## Latest version of this package is available from ## http://www.xylem.demon.co.uk/kepler/euler.html ## ## day jday gst nutation ## hmercury hvenus hearth hmars hjupiter hsaturn ## mercury venus sun mars jupiter saturn ## gmer gven gmar gjup ## gmoon amoon moon tmoon librate ## equatorial apparent mean altaz raltaz ## cart sph ## table ## ddegrees dsin dcos dtan dasin dacos datan datan2 ## brum reekie settle ## >help tmoon function tmoon (day,station) ## returns: topcentric equatorial coordinates of Moon ## given: TD instant in 'day' ## 'station' - vector lat, long, height (m), temp (C), ## and pressure (mB) of observing location >now = day(1999, 8, 11, 10, 17) -143.072 >psun = sun(now) 140.754 15.3374 1.01358 >gmoon = moon(now) 140.429 15.9114 373195 >here = [-1.9167, 52.5, 120, 17, 1011 ] -1.9167 52.5 120 17 1011 >pmoon = tmoon(now, here) 140.729 15.3036 368556 >pmoon - gmoon 0.300715 -0.60774 -4639.18 >psun - pmoon 0.0243673 0.0337465 -368555 >sunbrum = altaz(now, here, psun) 137.411 46.3381 1.01358 >moonbrum = altaz(now, here, pmoon) 137.463 46.3176 368556 >sunbrum-moonbrum -0.0516406 0.0204827 -368555 > euler-1.61.0/progs/ballistics.en0000644000175000001440000001661710260732725015402 0ustar ericusers% We want to demonstrate here the use of numerical analysis with % Euler for real world problems. % % The problem is to shoot a canon ball with speed v and angle % a. This can, of course, be computed exactly. But we restrict % ourselfs to numerical solutions only. % % We fix the speed v=10 m/s and approximate gravity with g=10 % m/s^2. >v=10; g=10; % Now we plot a specific ballistic curve for a canon ball fired % to 45° with the well known formulas for the curve neglecting % friction. % % Time runs from 0 s to 2 s. >t=0:0.1:2; % The movement in x-direction (height) is cos(a)*v*t, but we must % take care to compute 45° in radians first. % % The movement in y-direction is sin(a)*v*t minus the falling % of g*t^2/2. >xplot(cos(45°)*v*t,sin(45°)*v*t-g*t^2/2); % We notice that we are not interested in the negative y-values % and clip the plot to the postive quadrant. % % To copy the previous input, one can use the clipboard or recall % the previous command with Alt-CursorUp. >setplot(0,10,0,10); xplot(cos(45°)*v*t,sin(45°)*v*t-g*t^2/2); % We now compute, when the ball has its heighest altitude. There % is the funciton fmax, which computes the maximum of another % function or expression in a given range. >tmax=fmax("sin(45°)*v*x-g*x^2/2",0,2) 0.707107 % How high is the maximal height? >x=tmax; sin(45°)*v*x-g*x^2/2 2.5 % To make things a little bit more comfortable, we introduce two % functions computing the point (sx,sy) at time t. % % We take v and g fromt he global values, but add a as a parameter % to these functions. >function sx (t,a) $global v; $return cos(a)*v*t; $endfunction >function sy (t,a) $global v,g; $return sin(a)*v*t-g*t^2/2; $endfunction % This makes computing the maximal height more comfortable. >a=45°; sy(fmax("sy(x,a)",0,2),a) 2.5 % We wish to compare several angles. Thus we generate a vector % of angles from 5° to 85° and generate all curves for all these % angles simultanously. % % To do so, we need a as a column vektor and t as a row vector. % Combining both yields a matrix, with a curve in each row for % each angle. >a=(5:5:85)°; a=a'; >xplot(sx(t,a),sy(t,a)); >setplot(0,10,0,10); xplot(sx(t,a),sy(t,a)); % This gave a nice picture. % % Lets us now compute the distance of the contact of the ball % with the ground. We use the simplest of methods, the bijection % method. Since 0 is already a solution of sy=0, we start a little % bit off. % % We see the zero of vy. The additional parameter a (after the % semicolon) is passed from bisect to sy. % % Note: Our function impact will only work for scalar a, not for % vectors a. >function distance (a) $return sx(bisect("sy",0.00001,2;a),a); $endfunction % What happens, if we tage 50°? >distance(50°) 9.84808 % We get about 9.85m far. % % Let us plot the impact distance with varying angles. >a=(1:1:89)°; % To compute the impact function to all angles, we use "map". >xplot(deg(a),map("distance",a)); % We can also compute the optimal angle and its distance. >amax=fmax("distance",1°,89°); deg(amax), distance(amax), 45 10 % Of course, it is easy to invert the function sx, i.e., compute % the time t for the value x. We do not need to do that numerically. % % So we write a function that computes the height of the ball % at distance x, if the angle is a. >function height (x,a) $global v; $return sy(x/(cos(a)*v),a); $endfunction % Test ist with 45° from 0 to 10. >fplot("height",0,10;45°); % We now want to get as high as possible in 5m distance. Again, % we use fmax, but the argument x is now the second parameter % to height, the angle. >degprint(fmax("height(5,x)",1°,89°)) 63°26'5.82'' % We have to shoot about 63° (not 45° as expected). % % Now, we make a function that computes the angles that yields % the maximal heights for given distances. >function heighestangle (xx) $global v; $return fmax("height(xx,x)",1°,89°); $endfunction % Compute various maximal heights and plot them together with % some shots. >x=0.2:0.1:10; y=map("heighestangle",x); >setplot(0,10,0,10); xplot(x,height(x,y)); >a=(5°:5°:85°)'; hold on; xplot(sx(t,a),sy(t,a)); hold off; % It the curve of maximal heights a parabola? % % Yes it is. To demosntrate, we compute the interpolation polynomial % of second degree through the know values at -10, 0 and 10. >d=interp([-10,0,10],[0,5,0]); % Then we plot the polynomial over the current view in color 13. % Indeed, we get the same curve. >hold on; color(13); fplot("interpval([-10,0,10],d,x)",0,10); color(1); hold off; % Next, we ask how to reach the point x=2, y=2. There seem to % be two solutions. We get both by searching the angle below and % the angle above the one with maximal height. >a=heighestangle(2); degprint(a) 78°41'24.24'' >a1=bisect("height(2,x)-2",0,a); degprint(a1) 51°31'33.49'' >a2=bisect("height(2,x)-2",a,pi/2); degprint(a2) 83°28'26.51'' % Let's plot both solutions to one plot. >t=0:0.01:2; >setplot(0,5,0,5); xplot(sx(t,a1),sy(t,a1)); >hold on; xplot(sx(t,a2),sy(t,a2)); hold off; % Assume we shoot a ball in 80° and another one in 40°. Can we % hit the first with the secon in the air? % % For a start, we plot the two paths. >fplot("height(x,80°)",0,4); hold; fplot("height(x,40°)",0,4); hold; % Now we compute the point, where both paths meet and compute % the time difference. >xd=bisect("height(x,80°)-height(x,40°)",0.001,5) 3.07202 >xd/(v*cos(80°))-xd/(v*cos(40°)) 1.36808 % Now we introduce friction. We assume the friction force is proprotional % to c*v^2, where v is the speed. % % We need to solve a differential equation, using the "runge" % function. The state x of the ball at any time t is 4-dimensional % and contains two point coordinates and two speed coordinates. % We need a function to compute x'=f(t,x). % % We set x=[sx,sy,sx',sy']. >function f(t,x,c=0.005) $global g; $v=sqrt(x[3]*x[3]+x[4]*x[4]); rho=c*v; $return [x[3],x[4],-rho*x[3],-g-rho*x[4]] $endfunction % We need to pass a vector of times t, where x will be computed. % "runge" returns a matrix s, with one value for s in each column. % We may plot the path of the ball from the first two rows of % s. >t=0:0.01:2; s=runge("f",t,[0,0,cos(45°)*v,sin(45°)*v]); >setplot(0,10,0,10); xplot(s[1],s[2]); >hold on; xplot(sx(t,45°),sy(t,45°)); hold off; % Clearly, we do not get as far as before. % % Now we look at the speed over a larger time. The speed will % tend to some value, where friction is equal to gravity. >t=0:0.01:20; s=runge("f",t,[0,0,cos(45°)*v,sin(45°)*v]); >xplot(t,sqrt(s[3]^2+s[4]^2)); % We wish to compute the angle of maximal width for this problem. % It will no longer be exactly 45°. % % First we define a function returning the height at time t. >function height (t,a) $global v; $s=runge("f",[0,t],[0,0,cos(a)*v,sin(a)*v],20); $return s[2,2]; $endfunction >fplot("height",0,2;45°); % Then we seek the time when the height is 0 for any angle a, % and return the width at that time. >function width (a) $t=bisect("height",0.001,2;a); $global v; $s=runge("f",[0,t],[0,0,cos(a)*v,sin(a)*v],20); $return s[1,2]; $endfunction >width(45°) 9.62578 % Now we maximize the width over the angles. % % This computation takes some time (approx. 3 seconds on my modern % Notebook) % % We find that the optimal angle is slightly less than 45°. >amax=fmax("width",30°,60°); degprint(amax) 44°42'25.31'' > > euler-1.61.0/progs/bahnen.e0000644000175000001440000000032210003475506014304 0ustar ericusersfunction bahn (x,u,dt,n) res=[x]; loop 1 to n; ax=x; x=x+u*dt+ax*dt^2/2; u=u+ax*dt; res=res_[x]; end; return res; endfunction n=100; res=bahn(1,0,1/n,n)'; xplot(1:n+1,res); res[n+1], cosh(1) euler-1.61.0/progs/boundaryvalue.en0000644000175000001440000000300307613452520016112 0ustar ericusers% Let us solve a boundary value problem. The differential equation % is y''=x*y. We rewrite that in two dimensions and get y1'=y2, % y2'=x*y1 (y1=y). We want the boundary values y(0)=1, y(1)=1. % % We plug this into a function. >function f(x,y) $return [y[2],x*y[1]]; $endfunction % We then use the Heun method to solve this equation. >help heun function heun (ffunction,t,y0) ## y=heun("f",x,y0;...) solves the differential equation y'=f(x,y). ## f(x,y;...) must be a function. ## y0 is the starting value. ## ffunction may be an expression in x and y. % So the method accepts the function f(x,y), the step values x=0..1 % and the intial condition. We choose y(0)=1, y'(0)=1. % % Press escape to see the solution. >t=0:0.05:1; y=heun("f",t,[1,0]); xplot(y[1]); y[1,cols(y)] 1.1723 % An alternative method is the adaptive Runge method. Is is far % more accurate. We do not need intermediate steps here. >y=adaptiverunge("f",[0,1],[1,0]); y[1,2] 1.1723 % The next step is to set up a function, which has a zero in the % solution. We do that by taking y'(0) as a parameter and y(1)-1 % as the function value. >function g(a) $t=0:0.001:1; $y=adaptiverunge("f",[0,1],[1,a]); $return y[1,2]-1; $endfunction % We know already g(0)>0, and we see g(-2)<0. >g(0), g(-2), 0.1723 -1.99838 % Thus the secant method yields the desired value for y'(0). >a=secant("g",-2,2) -0.158752 % A final plot of the answer. >t=0:0.05:1; y=adaptiverunge("f",t,[1,a]); xplot(t,y[1]); > euler-1.61.0/progs/contfrac.e0000644000175000001440000000144007771050340014655 0ustar ericuserscomment contfrac, contfracval, contfracbest defined endcomment function contfrac (x,n=10) ## Compute the continued fraction of x. ## returns [a,b,c,...] with ## x = a + 1 / (b + 1 / (c + 1/(... s=x; r=floor(s); loop 1 to n s=1/(s-floor(s)); r=r|floor(s); end return r; endfunction function contfracval (r) ## Evaluate the continued fraction ## x = a + 1 / (b + 1 / (c + 1/(... ## with r = [a,b,c,...] ## Return an Interval {x1,x2} n=cols(r); x1=r[n]; x2=r[n]+1; loop 1 to n-1 x1=1/x1+r[n-#]; x2=1/x2+r[n-#]; end; return {x1,x2}; endfunction function contfracbest (x,n=3) ## Return the best rational ## approximation to x {x1,x2}=contfracval(contfrac(x,n)); x, if (abs(x-x1)v=1; vr=4; b=100; % We take an angle a to the river coast. Let us first write a % function that computes the time it takes to cross the river. % % We access the global variables b,v and vr directly. An alternative % is to pass these values as parameters. >function t(a) $global b,v; $return b/(sin(a)*v); $endfunction % Then we write a function that computes the drift for angle a. % This is the length that the river floats while we are crossing % it, minus the work we do upstream during that time. >function drift(a) $global b,v,vr; $t=t(a); $return t*vr-cos(a)*v*t; $endfunction % We can compute the drift for various angles. >fplot("drift(rad(x))",1,90); >fplot("drift(rad(x))",40,90); % There is an optimal angle. >deg(fmin("drift",5°,90°)) 75.5225 % If the river is slower, we get a different optimal angle. >vr=2; deg(fmin("drift",5°,90°)) 60 % Let us write a function to compute the optimal angle for any % river speed. >function opt (x) $global vr; $vr=x; $return fmin("drift",5°,90°)); $endfunction % And a variant returning the optimal angle in degrees. >function optdeg (x) $return deg(opt(x)) $endfunction % Plot this function. % % If the river speed goes to infinity, we must take the 90° angle, % since it is important to cross as fast as possible. If the river % moves as slow as the swimmer, we need to go towards 0°, essentially % swimming upstream. The drift then goes to 0. % % If the river flows slower than the swimmer, we can reach any % point on the opposite river bank. >fplot("optdeg",1,20); % To study the dependence of the optimal angle on v, vr or b, % we define the following function. >function opt3 (v1,vr1,b1) $global v,vr,b; v=v1; vr=vr1; b=b1; $return fmin("drift",1°,90°)); $endfunction % It is quite clear that the angle would not depend on b. Thus % it does not help to change the angle during the crossover. >deg(opt3(1,4,100)), deg(opt3(1,4,200)), 75.5225 75.5225 % The following plot does not help very much. >v1=1:0.1:2; vr1=2:0.2:4; zoom(3); framedsolid(v1,vr1',map("opt3",v1,vr1',b),1); % It's better to think a little bit and due to scaling, the angle % will not change if the v/vr is the same as before. >deg(opt3(1,4,100)), deg(opt3(2,8,100)), 75.5225 75.5225 % We now compute opt(x) with Yacas. This requires some handwork, % since Yacas is not as mighty as Maple or other systems. Especially, % the solve function does not work so well. >yacas("(vr-Cos(a)*v)*b/(Sin(a)*v)") ((vr-Cos(a)*v)*b)/(Sin(a)*v) % We differentiate to find the minimum. >yacas("D(a) %") (b*(Sin(a)*v)^2-(vr-Cos(a)*v)*b*Cos(a)*v)/(Sin(a)*v)^2 % To solve for a, we substitute t=Sin(a). >yacas("Subst(Sin(a),t) Subst(Cos(a),Sqrt(1-t^2)) %") (b*(t*v)^2-(vr-Sqrt(1-t^2)*v)*b*Sqrt(1-t^2)*v)/(t*v)^2 % Taking the numinator. >yacas("Simplify(%*(t*v)^2)") v*b*(t^2*v+v*(1-t^2)-vr*Sqrt(1-t^2)) % Dividing off constants. >yacas("Simplify(%/(v*b))") v-vr*Sqrt(1-t^2) % We now see the solution t=sqrt(1-(v/vr)^2). This is indeed, % what we got numerically. >fplot("deg(asin(sqrt(1-(v/x)^2)))",2,20); % Now to another problem. % % Assume we want to reach a point on the other side by walking % with speed vd=2 after we climb out of the water. What is the % optimal time for this? % % We first reset our variables. >v=1; vr=4; b=100; % Then we write a function, computing the total time it takes % to cross the river. That is the swimmming plus the walking time. % The point, we want to reach is d meters from the point of the % exact other side downstream. % % This time, we do not access global variables, but pass the location % d and the walking speed vd as parameters. >function totaltime(a,d,vd) $return t(a)+abs(drift(a)-d)/vd $endfunction % Lets us minimize this time choosing an optimal angle. We assume % the point is 100m downstream. >fplot("totaltime(rad(x),100,2),",1,179); >fplot("totaltime(rad(x),100,2),",45,120); >amin=fmin("totaltime",1°,179°;100,2); deg(amin) 80.4059 >drift(amin) 388.771 % Thus we have to swim, land 388m down the river, and walk back % about 288m to our point of interest. % % Surprisingly the angle does not change with d for a long time. >deg(fmin("totaltime",1°,179°;200,2)) 80.4059 >deg(fmin("totaltime",1°,179°;300,2)) 80.4059 % The reason is the following: As long as we have to walk back, % different distances d change the time only by a constant not % depending on the angle of swimming. Thus, d does not matter % for the optimal angle. % % However, it is not optimal to choose the angle for minimal drift % and then walk back. Instead, we must choose an angle that would % be optimal for drift for a river with speed vr+vd. To see this, % we would need to study the formula for the total time. >deg(asin(sqrt(1-(v/(vr+2))^2))) 80.4059 % When d becomes largen than 388.771m, it is better to swim directly % to the target. >deg(fmin("totaltime",1°,179°;400,2)) 90 >amin=fmin("totaltime",1°,179°;500,2); deg(amin) 117.019 % It seems, we now directly swim to the destination. >drift(amin) 500 % If d tends to infinity, the angle will tend to 180°. >amin=fmin("totaltime",1°,179°;800,2); deg(amin) 143.13 >drift(amin) 800 >amin=fmin("totaltime",1°,179°;8000,2); deg(amin) 176.418 >drift(amin) 8000 % To investigate this, we write a function totalmin, that computes % the minimal time for a distance d. >function totalmin (d,vd) $return totaltime(fmin("totaltime",1°,179°;d,vd),d,vd); $endfunction % Let us plot this function, using xplot. totalmin does not work % for vectors. So we must use "map" to evaluate it for a vector % d. >d=0:10:1000; t=map("totalmin",d;2); xplot(d,t); % It looks, as if the function consists of two almost linear parts. % % A closer plot confirms this. >d=300:1:600; t=map("totalmin",d;2); xplot(d,t); % Since our angle is larger than 90°, it will not help to swim % slower. >v=1; totalmin(500,2) 112.251 >v=0.9; totalmin(500,2) 116.857 > euler-1.61.0/progs/temperament.en0000644000175000001440000000252607437635222015572 0ustar ericusers% This notebook tests pure versus equal tempered harmonics. Of % course, creating a sine wave is not real life. >load sound % Create the time values for 4 seconds of sound. >t=soundsec(4); % Let 440 Hz be our basic frequency. >f=440; % New listen to a 220 Hz sound. >s=sin(f*t/2); >savewave("test.wav",s); playwave("test.wav"); % This is a pure quint. >s=sin(f*t)+sin(f*3/2*t); >savewave("test.wav",s); playwave("test.wav"); % Now we add the lower octave and vary the quint in pitch. First % the pure quint. >s=sin(f*t)+sin(f*3/2*t)+sin(f*t/2); >savewave("test.wav",s); playwave("test.wav"); % Now the equal tempered quint. The difference is small. >s=sin(f*t)+sin(f*2^(7/12)*t)+sin(f*t/2); >savewave("test.wav",s); playwave("test.wav"); % Now a quint wich is too much off. >s=sin(f*t)+sin(f*1.49*t)+sin(f*t/2); >savewave("test.wav",s); playwave("test.wav"); % Here are the corresponing numbers >3/2, 2^(7/12), 1.49 1.5 1.49831 1.49 % Repeat the same with the major terz. >s=sin(f*t)+sin(f*5/4*t)+sin(f*t/4); >savewave("test.wav",s); playwave("test.wav"); >s=sin(f*t)+sin(f*2^(4/12)*t)+sin(f*t/4); >savewave("test.wav",s); playwave("test.wav"); >s=sin(f*t)+sin(f*1.27*t)+sin(f*t/4); >savewave("test.wav",s); playwave("test.wav"); >5/4, 2^(4/12), 1.24 1.25 1.25992 1.24 > euler-1.61.0/progs/weltseil.en0000644000175000001440000001054107436475622015102 0ustar ericusers% Dieses Notebook beschäftigt sich mit verschiedenen geometrischen % Aufgaben im Zusammenhang mit der Erdkugel. Zunächst wird also % eine Näherung für den Erdumfang und den Erdradius angegeben. >u=40008000; r=u/(2*pi); % Die erste Aufgabe besteht einfach darin, den ERdumfang um 1m % zu verlängern. Um wieviel würde sich dann der Erdradius verlängern % müssen? % % Die Antwort ist unabhängig vom Radius, weil der Umfang linear % vom Radius abhängt. Es sind ca 16 cm. >1/(2*pi) 0.1591549430919 % Als nächstes Fagen wir, um wieviel der Radius zunehmen müsste, % damit die Oberfläche um 1 Quadratmeter zunimmt. % % Aus der Formel für die Oberfläche (4*pi*r^2) ergibt sich durch % Ableiten die Änderung recht genau. Es sind 9 Nanometer! >1/(8*pi*r) 6.24875024995e-09 % Versuchen wir das Ergebnis ohne Ableitung exakt aus der Differenz % der Oberflächen herzuleiten, so ergibt sich die Lösunge einer % quadratischen Gleichung. Leider berechnet der Computer die Lösung % falsch, weil sich zwei Größen gegenseitig aufheben (Auslöschung). >r-sqrt(r^2+1/(4*pi)) -5.587935447693e-09 % Man kann dieses falsche Ergebnis korrigieren, indem man die % andere Lösung berechnet und sich erinnert, dass das Produkt % der Nullstellen mal dem höchsten Koeffizienten gleich dem konstanten % Glied ist. % % Man erhält dieselbe Lösung wie mit der Näherung. >h=r+sqrt(r^2+1/(4*pi)); 1/(4*pi*h) 6.24875024995e-09 % Mit Hilfe des Intervall-Newton-Verfahrens erhält man eine sehr % gute Einschließung der Nullstelle. >inewton("2*r*x+x^2-1/(4*pi)","2*(r+x)",~0,1~) ~6.2487502499500036e-09,6.2487502499500102e-09~ % Im nächsten Problem ziehen wir ein Seil, das um die Erde liegt % und einen Meter länger als der Erdumfang ist, an einer Stelle % hoch. Wie hoch kann man das Seil ziehen? % % Mit ein wenig Geometrie erhält man eine Formel, die allerdings % numerisch instabil ist. >f="sqrt(2*x*r+x^2)-acos(r/(r+x))*r-0.5"; % Das Bisektionsverfahren liefert aber dennoch eine Lösung. >longformat; bisect(f,100,200) 121.4382871772 % Ebenso das Sekantenverfahren. >longformat; secant(f,100,200) 121.4382874699 % Plottet man die Funktion in der Nähe der Nullstelle, so sieht % man, dass etwas faul ist. Es entstehen durch numerische Zufälligkeiten % Artefakte. >fplot(f,121.4382,121.4383); % Man kann das Problem auch über den Winkel lösen, den das Sel % vom höchsten Punkt bis zu dem Punkt, an dem es aufliegt, bildet. >a=bisect("tan(x)-x-0.5/r",0,1) 0.006175980080382 % Die zum Winkel gehörende Höhe berechnet sich ebenfalls nach % einer einfachen Formel. >(1/cos(a)-1)*r 121.4382927119 % Das Seil befindet sich ungefähr püber eine Strecke von 79 km % in der Luft. >2*a*r 78650.74766252 % Wieder kann man mit dem Intervall-Newton-Verfahren eine gute % Einschließung erhaten. >a=inewton("tan(x)-x-0.5/r","tan(x)^2",~0,1~) ~0.006175980080344,0.006175980080417~ % Man kann damit die Höhe bis auf 7 Stellen hinter dem Komma einschließen. >(1/cos(a)-1)*r ~121.438292709,121.438292715~ % Als nächstes Versuchen wir die Oberfläche der Erde um 1 Quadratmeter % zu erhöhen, indem wir einen Punkt nach außen ziehen. % % Mit ein wenig Geometrie erhält man für den halben Winkel, der % dabei nach außen gezogen wird die Gleichung cos(a)+1/cos(a)=2+1/(pi*r^2). % Allerdings wird die rechte Seite schlecht berechnet. >2+1/(pi*r^2) 2 % Man kann aber einfach cos(a)=1-a^2/2 setzen und erhält näherungsweise >a=(4/(pi*r^2))^(1/4) 0.000420963113707 % Die zugehörige Höhe, um die die Oberfläche nach außen gezogen % wird, ist ungefähr 56 cm. >(1/cos(a)-1)*r 0.5641896247476 % Alternativ kann man eine quadartische Gleichung für x=1-cos(a) % lösen. Dies gelingt ebenfalls, weil die Auslöschung hier keine % große Rolle spielt. >d=1/(pi*r^2); x=(d-sqrt(d^2+4*d))/2; acos(1+x) 0.0004209631073947 % Das Gleichungssystem kann man auch mit dem Intervall-Newton-Verfahren % lösen. >cx=inewton("x^2+d*x-d","2*x+d",~-0.0001,-0.000000001~) ~-8.8604975476386212e-08,-8.860497547638616e-08~ % Da der acos nicht Intervallmäßig implementiert ist, muss man % ihn mit dem Intervall-Newton-Verfahren berechnen. Man erhält % eine Einschließung der Lösung. >a=inewton("cos(x)-(1+cx)","-sin(x)",~0.0001,0.0005~); (1/cos(a)-1)*r ~0.5641896559,0.5641896615~ > euler-1.61.0/progs/westerbench.en0000644000175000001440000004621510301177246015554 0ustar ericusers%------------------------------------ % File: westerbench.en % M. Wester's CAS benchmark and Yacas %------------------------------------ % In his 1994 paper Review of CAS mathematical capabilities, Michael Wester has put forward % 123 problems that a reasonable computer algebra system should be able to solve and tested % the then current versions of various commercial CAS on this list. % Below is the list of Wester's problems with the corresponding Yacas code. % "OK" means a satisfactory solution, % "BUG" means that Yacas gives a wrong solution or breaks down, % "NO" means that the relevant functionality is not yet implemented. % Yacas version: 1.0.57 % % Eine Auswahl von Tests aus dem Wester Benchmark % http://www.math.unm.edu/~wester/cas_review.html % in M. Wester et. al.: Computer Algebra Systems: A Practical Guide. Wiley, 1999. % http://www.math.unm.edu/~wester/cas/book/contents.html % Tests fuer Yacas zusammengestellt von A. Pinkus/YaCAS. % .. Mit kleinen Korrekturen und Änderungen als EULER-Notebook aufgeschrieben % von W. Lindner, 8/2005 % .. Manche Berechnungen werden hier alternativ durchgeführt. % .. Neben dem Test mit Verify zeigen wir zusaetzlich das YaCAS-Ergebnis. % %1. Berechnung von 50! % (OK) Factorize 50! > yacas("50! ") > yacas("Verify(25!, 15511210043330985984000000)") > yacas("Verify(50!, (26***50)*25!)") % %2. Die Primfaktorzerlegung von 6! %(OK) Prime factors of 6! > yacas("ans:=Factors(6!)") % Out> {{2,4},{5,1},{3,2}} %Die Liste ist folgendermaßen zu interpretieren: >> FW(ans) % 4 2 %2 * 5 * 3 %Out> True % %3. Berechnung von 1/2 + ... + 1/10 : % (OK) Calculate 1/2+...+1/10=4861/2520. > yacas(" Sum(i,2,10,1/i) ") > yacas(" Verify(Sum(n,2,10,1/n) , 4861/2520) ") % Out> 4861/2520 % %4. Berechnung eines Näherungswertes für e^(Pi*sqrt(163)) auf 50 Stellen : % (OK) Evaluate e^(Pi*Sqrt(163)) to 50 decimal digits > yacas(" Precision(50) ") > yacas(" N(Exp(Pi*Sqrt(163))) ") > yacas("Verify(N(1000000000000*(-262537412640768744 + Exp(Pi*Sqrt(163))), 50)> -0.75, True)") % Out> 262537412640768743.99999999999925007259719818568885219682604177332393 % %5. Berechnung der Dezimaldarstellung von 1/7 : % (OK) Obtain period of decimal fraction 1/7=0.(142857). > yacas(" Decimal(1/7) ") % Out> {0,{1,4,2,8,5,7}} % Das Ergebnis ist folgendermaßen zu lesen: 0.142857.... % The result is to interpret as follows: % %6. Berechnung von Pi als Kettenbruch : % (OK) Continued fraction of 3.1415926535. > yacas("Verify([Local(p,r);p:=GetPrecision();Precision(12);r:=ContFracList(3.1415926535, 6);Precision(p);r;],{3,7,15,1,292,1}) ") >> ContFrac(Pi()) > yacas(" pi:=N(Pi,20) ") % % 1 %3 + --------------------------- % 1 % 7 + ----------------------- % 1 % 15 + ------------------ % 1 % 1 + -------------- % 1 % 292 + -------- % 1 + rest % %Out> True % %7. Vereinfachung von sqrt(2*sqrt(3)+4) : % (OK) Sqrt(2*Sqrt(3)+4)=1+Sqrt(3). > yacas("Verify(RadSimp(Sqrt(2*Sqrt(3)+4)), 1+Sqrt(3)) ") > yacas(" RadSimp(Sqrt(2*Sqrt(3)+4)) ") % Out> 1+Sqrt(3) % %8. Vereinfachung von sqrt(14+3*sqrt(3+2*sqrt(5-12*sqrt(3-2*sqrt(2))))) : % (OK) Sqrt(14+3*Sqrt(3+2*Sqrt(5-12*Sqrt(3-2*Sqrt(2)))))=3+Sqrt(2). % .. please wait .. I'm working .. > yacas("Verify(RadSimp(Sqrt(14+3*Sqrt(3+2*Sqrt(5-12*Sqrt(3-2*Sqrt(2)))))), 3+Sqrt(2)) ") > yacas(" RadSimp(Sqrt(14+3*Sqrt(3+2*Sqrt(5-12*Sqrt(3-2*Sqrt(2)))))) ") % Out> 3+Sqrt(2) % %9. Vereinfachung von 2*infinity-3. : % (OK) 2*Infinity-3=Infinity. > yacas("Verify(2*Infinity-3, Infinity) ") > yacas(" 2*Infinity-3 ") % Out> Infinity % %(NO) Standard deviation of the sample (1, 2, 3, 4, 5). %(NO) Hypothesis testing with t-distribution. %(NO) Hypothesis testing with normal distribution % (M. Wester probably meant the chi^2 distribution). % %10. Vereinfachung von (x^2-4)/(x^2+4x+4) : %(OK) (x^2-4)/(x^2+4*x+4)=(x-2)/(x+2). > yacas("Verify(GcdReduce((x^2-4)/(x^2+4*x+4),x), (x-2)/(x+2)) ") >> GcdReduce((x^2-4)/(x^2+4*x+4),x) % %-2 + x %------ %2 + x % %Out> True % %(NO) (Exp(x)-1)/(Exp(x/2)+1)=Exp(x/2)-1. % %(OK) Expand (1+x)^20, take derivative and factorize. > yacas("Factor(D(x) Expand((1+x)^20)) ") % %11. Ausmultiplizieren, Ableiten und Faktorisieren von (x+1)^5 : % (OK) Expand (1+x)^20, take derivative and factorize. > yacas(" ans:=Factors(D(x)Expand((x+1)^5)) ") >> FW(ans) % % 4 %( 1 + x ) * 5 % %Out> True % %12. (BUG/NO) Factorize x^100-1. > yacas("Factor(x^100-1) ") %(returns the same expression unfactorized) % %(NO) Factorize x^4-3*x^2+1 in the field of rational numbers extended by roots of x^2-x-1. %(NO) Factorize x^4-3*x^2+1 mod 5. % %13. (BUG) Partial fraction decomposition of (x^2+2*x+3)/(x^3+4*x^2+5*x+2). >> Apart((x^2+2*x+3)/(x^3+4*x^2+5*x+2), x) % (does not obtain full partial fraction representation % for higher-degree polynomials, e.g. p(x)/(x+a)^n ) % %(NO) Assuming x>=y, y>=z, z>=x, deduce x=z. %(NO) Assuming x>y, y>0, deduce 2*x^2>2*y^2. %(NO) Solve the inequality Abs(x-1)>2. %(NO) Solve the inequality (x-1)*...*(x-5)<0. % %(NO) Cos(3*x)/Cos(x)=Cos(x)^2-3*Sin(x)^2 or similar equivalent combination. %(NO) Cos(3*x)/Cos(x)=2*Cos(2*x)-1. %14. (OK) Define rewrite rules to match Cos(3*x)/Cos(x)=Cos(x)^2-3*Sin(x)^2. > yacas("Cos(3*_x)/Cos(_x) <-- Cos(x)^2-3*Sin(x)^2 ") > yacas("Simplify(Cos(3*x)/Cos(x)) ") % %15. Vereinfachung von sqrt(997) - (997^3)^(1/6) : %(OK) Sqrt(997)-997^3^(1/6)=0 > yacas(" Verify(RadSimp(Sqrt(997)-(997^3)^(1/6)), 0) ") > yacas(" RadSimp(Sqrt(997)-997^3^(1/6)) ") % Out> 0 % %16. Vereinfachung von sqrt(999983) - (999983^3)^(1/6) : % (OK) Sqrt(99983)-99983^3^(1/6)=0 > yacas(" Verify(RadSimp(Sqrt(99983)-(99983^3)^(1/6)) , 0) ") > yacas(" RadSimp(Sqrt(999983)-999983^3^(1/6)) ") % Out> 0 % %17. Erkennen, dass (2^(1/3)+4^(1/3))^3-6*(2^(1/3)+4^(1/3)) - 6 gleich 0 ist : %(OK) (2^(1/3)+4^(1/3))^2-6*(2^(1/3)+4^(1/3))-6=0 > yacas(" Verify(RadSimp((2^(1/3)+4^(1/3))^3-6*(2^(1/3)+ 4^(1/3))-6), 0) ") > yacas(" RadSimp((2^(1/3)+4^(1/3))^3-6*(2^(1/3)+4^(1/3))-6) ") % Out> 0 % %18. (NO) Ln(Tan(x/2+Pi/4))-ArcSinh(Tan(x))=0 > yacas(" Ln(Tan(x/2+Pi/4))-ArcSinh(Tan(x)) ") % %(NO) Numerically, the expression Ln(Tan(x/2+Pi/4))-ArcSinh(Tan(x))=0 and its derivative at x=0 are zero. > yacas(" D(x)(Ln(Tan(x/2+Pi/4))-ArcSinh(Tan(x))) ") % %(NO) Ln((2*Sqrt(r)+1)/Sqrt(4*r+4*Sqrt(r)+1))=0. %(NO) (4*r+4*Sqrt(r)+1)^(Sqrt(r)/(2*Sqrt(r)+1))*(2*Sqrt(r)+1)^(2*Sqrt(r)+1)^(-1)-2*Sqrt(r)-1=0, assuming r>0. % %19. (OK) Obtain real and imaginary parts of Ln(3+4*I). > yacas(" Verify( Hold({ {x}, {Re(x), Im(x)}}) @ Ln(3+4*I) , {Ln(5),ArcTan(4/3)}) ") > yacas(" Hold({ {x}, {Re(x), Im(x)}}) @ Ln(3+4*I) ") % %20. (BUG) Obtain real and imaginary parts of Tan(x+I*y). > yacas(" Hold({ {x}, {Re(x), Im(x)}}) @ Tan(x+I*y) ") % %21. (BUG) Simplify Ln(Exp(z)) to z for -Pi yacas(" Verify(Simplify(Ln(Exp(z))), z) ") > yacas(" Simplify(Ln(Exp(z))) ") %(no conditions on z are used) % %(NO) Assuming Re(x)>0, Re(y)>0, deduce x^(1/n)*y^(1/n)-(x*y)^(1/n)=0. %(NO) Transform equations, (x==2)/2+(1==1)=>x/2+1==2. %(BUG) Solve Exp(x)=1 and get all solutions. Verify(Solve(Exp(x)==1,x), {x==0}); % %22. Umwandlung von log e^z in z : > yacas(" Simplify(Ln(Exp(z))) ") % Out> z % %23. Invertieren der 2x2 Matrix [[a,b],[1,ab]] : % (the new routine Solve cannot do this yet) %(OK) Invert a 2x2 symbolic matrix. > yacas(" Verify(Simplify(Inverse({{a,b},{1,a*b}})), {{a/(a^2-1), -1/(a^2-1)}, {-1/(b*(a^2-1)), a/(b*(a^2-1))}}) ") >> Simplify(Inverse( {{a,b},{1,a*b}} ) ) % >> A:={{a,b},{1,a*b}} >> ans:=Inverse(A) % Out> {{(a*b)/(b*a^2-b),(-b)/(b*a^2-b)},{-1/(b*a^2-b),a/(b*a^2-b)}} >> Simplify(ans) % {1/(a+ -1/a),1/(1-a^2)} % {1/(b-b*a^2),1/(b*a-b/a)} % Out> True % %24. (BUG) Compute the determinant of the 4x4 Vandermonde matrix. > yacas(" Factor(Determinant(VandermondeMatrix ({a,b,c,d}))) ") %(this does not factor correctly) % %25. Berechnung der Eigenwerte der Matrix [[5, -3, -7],[-2, 1, 2],[ 2, -3, -4]] : %(OK) Find eigenvalues of a 3x3 integer matrix. > yacas(" Verify(EigenValues({{5,-3,-7},{-2,1,2}, {2,-3,-4}}) , {1,-2,3}) ") >> A:={{5,-3,-7},{-2,1,2},{2,-3,-4}} > yacas(" EigenValues(A) ") % Out> {1,3,-2} % %26. Limes von (1-cos x)/x^2 für x gegen Null : %(OK) Verify some standard limits found by L'Hopital's rule: > yacas(" Verify(Limit(x,Infinity) (1+1/x)^x, Exp(1)) ") > yacas(" Verify(Limit(x,0) (1-Cos(x))/x^2, 1/2) ") > yacas(" Limit(x,0)(1-Cos(x))/x^2 ") % Out> 1/2 % %27. Ableitung von |x| : %(OK) D(x)Abs(x) > yacas(" Verify(D(x) Abs(x), Sign(x)) ") > yacas(" D(x)Abs(x) ") % Out> Sign(x) % %28. Stammfunktion von |x| : %(OK) (Integrate(x)Abs(x))=Abs(x)*x/2 > yacasclear .. notwendig wg obiger Definition von A > yacas(" Verify(Simplify(Integrate(x) Abs(x)), Abs(x)*x/2) ") > yacas(" Simplify(Integrate(x) Abs(x)) ") > yacas(" Integrate(x) Abs(x) ") > yacas(" AntiDeriv(Abs(x),x) ") % Out> (Abs(x)*x)/2 % %29. Ableitung von |x| (stückweise definiert) : %(OK) Compute derivative of Abs(x), piecewise defined. > yacas(" Verify(D(x)if(x<0) (-x) else x, Simplify(if(x<0) -1 else 1)) ") >> D(x) if(x<0) (-x) else x % Out> if(x<0) -1 else 1 % %30. Stammfunktion von |x| (stückweise definiert) : %(OK) Integrate Abs(x), piecewise defined. > yacas(" Verify(Simplify(Integrate(x) if(x<0) (-x) else x), Simplify(if(x<0) (-x^2/2) else x^2/2)) ") > yacas(" Integrate(x) if(x<0) (-x) else x ") > yacas(" AntiDeriv(if(x<0)(-x)else x,x) ") % Out> if(x<0)(-x^2/2)else x^2/2 % %31. Die ersten Summanden der Taylorentwicklung von % 1/sqrt(1-v^2/c^2) an der Stelle v=0 : %(OK) Taylor series of 1/Sqrt(1-v^2/c^2) at v=0. > yacas(" S := Taylor(v,0,4) 1/Sqrt(1-v^2/c^2) ") > yacas(" TestYacas(S, 1+v^2/(2*c^2)+3/8*v^4/c^4) ") % %Note: The result of Taylor is not in convenient form but is equivalent. % > yacas(" ans:=Taylor(v,0,4)Sqrt(1/(1-v^2/c^2)) ") >> Simplify(ans) % % 2 4 % v 3 * v %1 + ------ + ------ % 2 4 % 2 * c 8 * c % %Out> True % %32. Der Kehrwert des Quadrates der obigen Lösung : %(OK) Compute the Taylor expansion of the inverse square of the above. % .. wait .. > yacas(" TestYacas(Taylor(v,0,4) 1/S^2, 1-v^2/c^2) ") % %Note: The result of Taylor is not in convenient form but is equivalent. % > yacas(" ans:=Taylor(v,0,4)(1/ans)^2 ") >> Simplify(ans) % % 2 % v %1 - -- % 2 % c % %Out> True % %33. Berechnung der Taylorentwicklung von tan(x) an der Stelle x=0 % durch Dividieren der Entwicklungen von sin(x) und cos(x) : %(OK) (Taylor expansion of Sin(x))/(Taylor expansion of Cos(x)) = (Taylor expansion of Tan(x)). > yacas(" TestYacas(Taylor(x,0,5)(Taylor(x,0,5)Sin(x)) / (Taylor(x,0,5)Cos(x)), Taylor(x,0,5)Tan(x)) ") % > yacas(" Taylor(x,0,5)(Taylor(x,0,5)Sin(x)) / (Taylor(x,0,5)Cos(x)) ") > yacas(" Taylor(x,0,5)Tan(x) ") % > yacas(" ans1:=Taylor(x,0,5)Sin(x)/Cos(x) ") % % 3 5 % x 2 * x %x + -- + ------ % 3 15 % > yacas(" ans2:=Taylor(x,0,5)Tan(x) ") % % 3 5 % x 2 * x %x + -- + ------ % 3 15 % > yacas(" ans1-ans2 ") % Out> 0 % %34. (BUG) Taylor expansion of Ln(x)^a*Exp(-b*x) at x=1. > yacas(" Taylor(x,1,3)(Ln(x))^a*Exp(-b*x) ") % (bugs in Deriv manipulation) % %35. (BUG) Taylor expansion of Ln(Sin(x)/x) at x=0. > .. yacas(" Taylor(x,0,5) Ln(Sin(x)/x) ") %(never stops) % %(NO) Compute n-th term of the Taylor series of Ln(Sin(x)/x) at x=0. %(NO) Compute n-th term of the Taylor series of Exp(-x)*Sin(x) at x=0. % %36. (OK) Solve x=Sin(y)+Cos(y) for y as Taylor series in x at x=1. > yacas(" TestYacas(InverseTaylor(y,0,4) Sin(y)+Cos(y), (y-1)+(y-1)^2/2+2*(y-1)^3/3+(y-1)^4) ") > yacas(" InverseTaylor(y,0,4) Sin(y)+Cos(y) ") % %Note that InverseTaylor does not give the series in terms of x but in terms of y %which is semantically wrong. But other CAS do the same. % %37. Direkte Berechnung der Legendre Polynome : %(OK) Compute Legendre polynomials directly from Rodrigues's formula, % P[n]=1/(2*n)!! *(Deriv(x,n)(x^2-1)^n). > yacas(" P(n,x) := Simplify( 1/(2*n)!! * Deriv(x,n) (x^2-1)^n ) ") > yacas(" TestYacas(P(4,x), (35*x^4)/8+(-15*x^2)/4+3/8) ") > yacas(" P(4,x) ") % > yacas(" 10#Legendre(0,_x)<--1 ") > yacas(" 20#Legendre(n_IsInteger,_x)<--[Local(result);result:=[Local(x);Expand(1/(2^n*n!)*Deriv(x,n)Expand((x^2-1)^n,x));];Eval(result);] ") > yacas(" Table(Legendre(i,x), i,0,4,1) ") % %1 % %x % % 2 %-1 + 3 * x %----------- % 2 %... % %38. Rekursive Berechnung der Legendre Polynome : %(OK) Compute Legendre polynomials P[n] recursively. > yacas(" Verify(OrthoP(4,x) , 3/8+((35*x^2)/8-15/4)*x^2) ") > yacas(" OrthoP(4,x) ") % > yacas(" 10#LegendreRecursive(0,_x)<--1 ") > yacas(" 20#LegendreRecursive(1,_x)<--x ") > yacas(" 30#LegendreRecursive(n_IsPositiveInteger,_x)<--Expand(((2*n-1)*x*LegendreRecursive(n-1,x)-(n-1)*LegendreRecursive(n-2,x))/n) ") > yacas(" Table(LegendreRecursive(i,x),i,0,4,1) ") % %1 % %x % % 2 %-1 + 3 * x %----------- % 2 % % ... % %39. Das vierte Legendre Polynom an der Stelle 1 : % (OK) Compute Legendre polynomial P[4] at x=1. > yacas(" Verify(OrthoP(4,1), 1) ") > yacas(" OrthoP(4,1) ") % > yacas(" Legendre(4,1) ") % Out> 1 % %40. Definieren des Polynoms p = sum( i=1..5, ai*x^i ) : %(OK) Define the polynomial p=Sum(i,1,5,a[i]*x^i). > yacas(" p:=Sum(i,1,5,a[i]*x^i) ") > yacas(" Verify(p, a[1]*x+a[2]*x^2+a[3]*x^3 +a[4]*x^4+a[5]*x^5) ") % > yacas(" ans:=Add(MakeVector(a,5)*FillList(x,5)^(1 .. 5)) ") % 2 3 4 5 %a1 * x + a2 * x + a3 * x + a4 * x + a5 * x % %41. Anwenden des Hornerschemas auf das obige Polynom : % (OK) Convert the above to Horner's form. > yacas(" Verify(Horner(p, x), ((((a[5]*x+a[4])*x +a[3])*x+a[2])*x+a[1])*x) ") > yacas(" Horner(p, x) ") % > yacas(" ans:=Add(MakeVector(a,5)*FillList(x,5)^(1 ..5)) ") > yacas(" Horner(ans,x) ") % %( ( ( ( a5 * x + a4 ) * x + a3 ) * x + a2 ) * x + a1 ) * x % %42. (NO) Convert the result of problem 127 to Fortran syntax. > yacas(" CForm(Horner(p, x)) ") % %43. Berechnung der Wahrheitswerte TRUE und FALSE : %(OK) Verify that True And False=False. > yacas(" Verify(True And False, False) ") % > yacas(" True And False ") % Out> False % %44. (OK) Prove x Or Not x. > yacas(" Verify(CanProve(x Or Not x), True) ") > yacas(" CanProve(x Or Not x) ") % %45. (OK) Prove x Or y Or x And y=>x Or y. > yacas(" Verify(CanProve(x Or y Or x And y => x Or y) , True) ") > yacas(" CanProve(x Or y Or x And y => x Or y) ") % %46. Lösung der Gleichung tan(x) = 1 : % (BUG) Solve Tan(x)=1 and get all solutions. > yacas(" Verify(Solve(Tan(x)==1,x), {x==Pi/4}) ") %(get only one solution) > yacas(" Solve(Tan(x)==1,x) ") % Out> Pi/4 % %47. Die inverse Taylorentwicklung von sin(y) + cos(y) an der Stelle y=0. % Inverse Taylor expansion of sin(y) + cos(y) at position y=0 > yacas(" InverseTaylor(y,0,6)Sin(y)+Cos(y) ") % % 2 3 5 % ( y - 1 ) 2 * ( y - 1 ) 4 17 * ( y - 1 ) %y - 1 + ---------- + -------------- + ( y - 1 ) + --------------- % 2 3 10 % % %Überprüfung, dass es sich bis zur 5. Ordnung wirklich um das Inverse handelt: %Test, that this is the inverse up to order 5. > yacas(" s:=Taylor(y,0,6)Sin(y)+Cos(y) ") > yacas(" BigOh(Subst(y,s)t,y,6) ") % Out> y % %48. Lösung des linearen Gleichungssystems % x+y+z=6,2x+y+2z=10,x+3y+z=10 : % (OK) Solve a degenerate 3x3 linear system. > yacas(" Verify(OldSolve({x+y+z==6, 2*x+y+2*z==10, x+3*y+z==10}, {x,y,z}), {{4-z,2,z}}) ") % > yacas(" OldSolve({x+y+z==6,2*x+y+2*z==10,x+3*y+z==10},{x,y,z}) ") % Out> {{4-z,2,z}} % Einige Beispielberechnungen mit Yacas: % Some example calculations with Yacas. %49. Integration von (Sin(n*x)*Cos(m*x)) in den Grenzen -Pi bis +Pi : % Integrate from to . > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(x)*Sin(2*x)) ") % Out> 0 > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(2*x)*Sin(2*x)) ") % Out> Pi > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(5*x)*Sin(5*x)) ") % Out> Pi > yacas(" Simplify(Integrate(x,-Pi,Pi)Cos(x)*Cos(2*x)) ") % Out> 0 > yacas(" Simplify(Integrate(x,-Pi,Pi)Cos(2*x)*Cos(2*x)) ") % Out> Pi > yacas(" Simplify(Integrate(x,-Pi,Pi)Cos(5*x)*Cos(5*x)) ") % Out> Pi > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(x)*Cos(2*x)) ") % Out> 0 > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(2*x)*Cos(2*x)) ") % Out> 0 > yacas(" Simplify(Integrate(x,-Pi,Pi)Sin(5*x)*Cos(5*x)) ") % Out> 0 % %50. Die ersten 5 Koeffizienten der Fourierreihe von x^2 % auf dem Intervall [-Pi | Pi]. : % The fist 5 coefficients of Fourier series of x^2 on the Intervall [-Pi | Pi]. > yacas(" Fourier(_n,_f)<--1/Pi*Integrate(x,-Pi,Pi)f*Cos(n*x) ") % Out> True > yacas(" Table(Fourier(n,x^2),n,0,5,1) ") % (2*Pi^2)/3 %-4 %1 %-4/9 %1/4 %-4/25 %Out> True % %51. Testen, dass f:=x*Exp(-x/2) eine Lösung der Gleichung % H(f)=E*f ist, wobei E eine Konstante und H=D(x)D(x)f + f/x ist : % Test, if f:=x*Exp(-x/2) is a solution of equation % H(f)=E*f , where E is constant and equals H=D(x)D(x)f + f/x: > yacas(" H(f):=Deriv(x)Deriv(x)f+f/x ") > yacas(" f:=x*Exp(-x/2) ") > yacas(" res:=H(f) ") >> Simplify(res) % % / / x \ \ %x * Exp| -| - | | % \ \ 2 / / %----------------- % 4 % > yacas(" Simplify(res/f) ") % %1/4 % %52. Zeigen, dass die ersten Summanden der Taylorentwicklungen % von Sin(x) und Cos(x-Pi/2) gleich sind : % show, that the first terms of the Taylor expamsion % of Sin(x) and Cos(x-Pi/2) are equal: % > yacas(" ans1:=Taylor(x,0,8)Sin(x) ") % % 3 5 7 % x x x %x - -- + --- - ---- % 6 120 5040 % > yacas(" ans2:=Taylor(x,0,8)Cos(x-Pi/2) ") % % 3 5 7 % x x x %x - -- + --- - ---- % 6 120 5040 % > yacas(" ans1-ans2 ") % Out> 0 % %53. Bestimmung eine Polynoms, dessen Graph durch die Punkte % (x,y) = { (-2,4), (1,1), (3,9) } geht und Nachweis, dass % es sich dabei um die Funktion x^2 handelt : % Finding a polynom, whose graph goes to the points % (x,y) = { (-2,4), (1,1), (3,9) } and testing, if % it is the function x^2: % > yacas(" ans:=LagrangeInterpolant({-2,1,3},{4,1,9},x) ") % %4 * ( x - 1 ) * ( x - 3 ) ( x - -2 ) * ( x - 3 ) 9 * ( x - -2 ) * ( x - 1 ) %------------------------- - ---------------------- + -------------------------- % 15 6 10 % > yacas(" Simplify(ans) ") % % 2 %x % %54. (OK) Evaluate the Bessel function J[2] numerically at z=1+I. > yacas(" BesselJ(2, 1+I) ") > yacas(" N(BesselJ(2, 1+I)) ") > yacas(" NumericEqual(N(BesselJ(2, 1+I)), 0.4157988694e-1+I*0.2473976415,GetPrecision()) ") > euler-1.61.0/progs/yacas.en0000644000175000001440000000745510311265074014344 0ustar ericusers% This is a showcase for the Yacas interface in Euler. For more % information about Yacas look at the HTML documentation of Euler. % % At first, Yacas provides infinite integer computation. % % Note that the yacas function takes and returns a string. >yacas("30!") % Alternatively, you can use >... to enter a Yacas expression. % The result will be formatted by Yacas in this case. >>30! % Factor it. >>Factor(30!) % The next thing takes a while. On my Notebook it takes 10 seconds. >yacas("NextPrime(30!)") % To evaluate a result and import it into Euler variables you % can use evaluate(string), or the function yeval. >longestformat; y=yeval("30!"), log(y) % Since Euler can use expression with variable x in many places, % you can directly use the output of yacas, if Euler knows how % to interpret it. >e=yacas("Expand((1+x)^5)"), fplot(e,-2,0); % Since we want to use e below, it is not wise to use >... But % we can. >>e:=Expand((1+x)^5) % Differentiate that. >>D(x) e % You can also evaluate an expression after it went through yacas, % and have some variables set to certain values. This is done % with named parameters. % % In this example, we integrate from 0 to a and evaluate at a=1. >yeval("Integrate(x,0,a) e",a=1) % Compare to the result of the Romberg method. >romberg(e,0,1) % Here is method you can use. % % The string % uses the most recent result from Yacas. >>e:=Expand((1+x)^3) >>Factor(e) % Here is a first example on how to use Yacas for something useful. % % We plot the sin functions and its taylor series. >setplot(0,2*pi,-2,2); fplot("sin(x)",0,2*pi); >hold; fplot(yacas("Taylor(x,0,9) Sin(x)"),0,2*pi); hold; % Let's determine the sum of n^2, n=1 to a. There is a simple % formula for this. >>e:=Sum(n,1,a,n^2) >>Factor(e) % To evalute in a=100, you can use the substitution machanism % of Yacas. >yeval("Eliminate(a,100,e)") % Yacas does also know about complex numbers. % % We use the % notation to access the recent result from Yacas. % This does not work with >... however. >yacas("Exp(Complex(1,1))"), yeval("%"), exp(1+1i) % Here are some variations of the factorial. >yeval("(44 *** 49) / 6!"), yeval("Bin(49,6)"), bin(49,6), % We compute the Newton iterator to solve x^x=2 with Yacas. >e=yacas("x - (x^x-a) / (D(x) x^x)"), >a=2; xs=iterate(e,1,10), % The newton() and inewton() functions of Euler must get a derivative. % So we use Yacas to compute it. >inewton("x^x-a",yacas("D(x) x^x"),1) % Here is a continued fraction. >>e:=ContFrac(N(Sqrt(2)),10) % We evaluate with rest=0. >yacas("Simplify(e /: {rest <- 0})"), yeval("%")-sqrt(2) % Yacas has a (yet) not perfect solver. It may return a list of % solutions. You get the first solution by indexing. The right % hand side of the equation is also obtained by indexing. >>e:=Solve(x^2+a*x==2,x) >>e[2][2] % To create an Euler vector from a Yacas list, you can use the % y2vector() function. % % The following example creates a list of 100 random numbers in % Yacas, turns that into an Euler vector then plots the cumulative % sum. >xplot(cumsum(y2vector("Table(Random(),n,1,100,1)"))); % To demonstrate the inverse transformation, we interpolate with % Yacas. >x=1:5; y=sin(x); setplot(0,6,-2,2); xmark(x,y); % The transformation is done by vector2y(). Yacas uses the LagrangeInterpolant % to compute the interpolation. We expand it into normal form. >pol=yacas("Expand(LagrangeInterpolant("|converty(x)|","|converty(y)|",x))"), >hold; fplot(pol,0,6); hold; % With Yacas, it is possible to write advanced functions like % the Newton method without computing the derivative function. % This is done in the function itself. >ynewton("x^x-2",1) >A=[1,1;1,2]; yacas("EigenValues("|converty(A)|")"), yeval("%[1]") % This ends our introduction into Yacas. For more information, % read the manuals. > euler-1.61.0/progs/yacas.e0000644000175000001440000000704010210406173014147 0ustar ericuserscomment YACAS wrapper loaded endcomment function yeval (strng) ## Example: yeval("D(x) x^2",x=5) ## Evaluate the expression with the additional parameters. ## The expression will go through the yacas interpreter. return evaluate(yacas(strng)); endfunction function ysimpl (strng) ## Simplify the expression in yacas. return yacas("Simplify("|strng|")"); endfunction ..============================================================== function converty (x,format="%g%") if typeof(x)==0; return printf(format,x); elseif typeof(x)==1; return "Complex("|printf(format,re(x))|","| .. printf(format,im(x))|")"; elseif typeof(x)==2 || typeof(x)==3; s="{"; loop 1 to cols(x)-1; s=s|converty(x[#],format)|","; end; s=s|converty(x[cols(x)],format)|"}"; return s; endif error("Conversion not possible!"); endfunction function y2vector (strng) ## Turn a Yacas list into an Euler vector yacas("Set(VVV,"|strng|")"); n=yeval("Length(VVV)"); y=zeros(1,n); loop 1 to n; y[#]=evaluate(yacas("VVV["|printf("%0.0f",#)|"]")); end; return y; endfunction function y2matrix (strng) ## Turn a Yacas list into an Euler vector yacas("Set(AAA,"|strng|")"); n=yeval("Length(AAA)"); y=zeros(0,n); loop 1 to n; y=y_y2vector(yacas("AAA["|printf("%0.0f",#)|"]")); end; return y; endfunction function yset (var,x) return yacas("Set("|var|","|converty(x)|")"); endfunction ..================================================================= function YacasScript (fl) ## ## function to execute yacas script from file fl ## note at present the path seperator \ has to be ## entered as / - will need to sort this out ## ## quote=''"''; fl=quote|fl|quote; .. add quotes to file string xx="Load("|fl|")"; .. construct the command string rv=yacas(xx); .. get yacas to execute the command string return rv; endfunction ..======================================================================== function Sin(x) return _sin(x) endfunction function Cos(x) return _cos(x) endfunction function Tan(x) return _tan(x) endfunction function Exp(x) return _exp(x) endfunction function Ln(x) return _log(x) endfunction function Pi return pi endfunction function ArcSin(x) return _asin(x) endfunction function ArcCos(x) return _acos(x) endfunction function ArcTan(x) return _atan(x) endfunction function Abs(x) return _abs(x) endfunction function Sqrt(x) return _sqrt(x) endfunction function Sign(x) return _sign(x) endfunction function Complex(x,y) return x+1i*y; endfunction ..=========================== function ynewton (expr,start) ## Seek the zero of an expression in x, using Newtons ## method. ## Example: ynewton("x^x-2",1) df=yacas("D(x) "|expr); oldx=start; x=start; repeat x=x-expreval(expr,x)/expreval(df,x); if x~=oldx; return x; endif; oldx=x; end endfunction function ynewton2h (f1,f2,f1x,f1y,f2x,f2y,start) repeat x=start[1]; y=start[2]; D=[evaluate(f1x),evaluate(f1y);evaluate(f2x),evaluate(f2y)]; d=(D\[evaluate(f1);evaluate(f2)])'; startn=start-d; if startn~=start; return startn; endif; start=startn; end; endfunction function ynewton2 (f1,f2,start) ## Try to iterate Newton's method to a solution of ## f1=0, f2=0. Expression f1, f2 are passed to Yacas. ## Example: newto2y("Cos(x*y)-2*x","Sin(x+y)-3*y,[1,1]) f1x=yacas("D(x) "|f1); f1y=yacas("D(y) "|f1); f2x=yacas("D(x) "|f2); f2y=yacas("D(y) "|f2); return ynewton2h(f1,f2,f1x,f1y,f2x,f2y,start); endfunction euler-1.61.0/README0000644000175000001440000000314110327035405012432 0ustar ericusersThis is the EULER README, view the index.html file in the docs directory for more info. Disclaimer ---------- I will not take responsibility for any damage EULER does to your data, files or computer, or any other damage. You use EULER entirely on your own risk. I do not even claim that the program works as expected. WHAT IS IT ? ------------ This is the Linux/Unix version of EULER, a program for doing mathematics on the computer. There are also a Windows 95/98/2000 version, an OS/2 version, an ST version (no longer updated). There is a very restricted DOS version, which allows no more than a preview of what EULER can do. EULER is distributed under the GPL license. EULER is a program for quickly and interactively computing with real and complex numbers and matrices, or with intervals. It can draw your functions in two and three dimensions. However, it should be stressed that EULER is not a computer algebra program. In general, those algebra programs are much slower than numerical programs. They simply serve a different purpose. Euler's homepage is at http://euler.sourceforge.net/index.html There is also a message board for euler discussion / bug report at http://euler.sourceforge.net/board/index.php You can also mail at grothm@ku-eichstaett.de (Euler's author) bouchare.eric@wanadoo.fr (Linux/Unix GTK interface) INSTALL AND REQUIREMENTS ------------------------ to compile Euler, you need : - an X11 display - the GTK version 2.6.x to compile, just go in the source directory and type : ./configure make make install (with root privileges) euler (to run the program) in a terminal. euler-1.61.0/acconfig.h0000644000175000001440000000031510263630230013470 0ustar ericusers#undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef HAVE_LIBSM #undef PACKAGE_LOCALE_DIR #undef INSTALL_DIR #undef SOURCE_DIR #undef GETTEXT_PACKAGE euler-1.61.0/config.guess0000755000175000001440000012450410331173622014100 0ustar ericusers#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-09-07' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit 0 ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; *:OS400:*:*) echo powerpc-ibm-os400 exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit 0 ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms && exit 0 ;; I*) echo ia64-dec-vms && exit 0 ;; V*) echo vax-dec-vms && exit 0 ;; esac esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: euler-1.61.0/config.sub0000755000175000001440000007511310331173622013544 0ustar ericusers#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-08-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: euler-1.61.0/ltmain.sh0000644000175000001440000054602210331173622013403 0ustar ericusers# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.10 TIMESTAMP=" (1.1220.2.130 2004/09/19 12:13:49)" # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" ##################################### # Shell function definitions: # This seems to be the best place for them # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xdir="$my_gentop/$my_xlib" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" status=$? if test "$status" -ne 0 && test ! -d "$my_xdir"; then exit $status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename $darwin_archive` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" # Remove the table of contents from the thin files. $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF 2>/dev/null || true $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF\ SORTED 2>/dev/null || true cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" $AR -xo "${darwin_base_archive}" rm "${darwin_base_archive}" cd "$darwin_curdir" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist rm -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir (cd $my_xdir && $AR x $my_xabs) || exit $? fi # $darwin_arches fi # $run ;; *) # We will extract separately just the conflicting names and we will # no longer touch any unique names. It is faster to leave these # extract automatically by $AR in one run. $show "(cd $my_xdir && $AR x $my_xabs)" $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $? if ($AR t "$my_xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$my_xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$my_xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $my_xdir && $AR xN $i $my_xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$my_xdir && $AR xN $i \$my_xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2003 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $EXIT_SUCCESS ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $EXIT_SUCCESS ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $EXIT_SUCCESS ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit $EXIT_FAILURE fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # gcc -m* arguments should be passed to the linker via $compiler_flags # in order to pass architecture information to the linker # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo # but this is not reliable with gcc because gcc may use -mfoo to # select a different linker, different libraries, etc, while # -Wl,-mfoo simply passes -mfoo to the linker. -m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$save_output-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$save_output-${k}.$objext k=`expr $k + 1` output=$output_objdir/$save_output-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadale object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${output}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # GNU ar 2.10+ was changed to match POSIX; thus no paths are # encoded into archives. This makes 'ar r' malfunction in # this piecewise linking case whenever conflicting object # names appear in distinct ar calls; check, warn and compensate. if (for obj in $save_oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 AR_FLAGS=cq fi # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" save_umask=`umask` umask 0077 if $mkdir "$tmpdir"; then umask $save_umask else umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $EXIT_SUCCESS # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: euler-1.61.0/aclocal.m40000644000175000001440000075721510331173645013440 0ustar ericusers# generated automatically by aclocal 1.9.4 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 47 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_LINK_IFELSE(AC_LANG_PROGRAM,[ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* ) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for *BSD fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- #- set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided and an installed libltdl is not found, it is # assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_builddir and top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # --------------- AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # -------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER # # Check for any special shared library compilation flags. # _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= if test "$GCC" = no; then case $host_os in sco3.2v5*) _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ;; esac fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no fi fi # # Check to make sure the static flag actually works. # AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux*) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux*) case $CC in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; sco3.2v5*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; sco3.2v5*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4.2uw2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv5*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_MSG_RESULT([$SED]) ]) dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page dnl also defines GSTUFF_PKG_ERRORS on error AC_DEFUN(PKG_CHECK_MODULES, [ succeeded=no if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then AC_MSG_CHECKING(for $2) if $PKG_CONFIG --exists "$2" ; then AC_MSG_RESULT(yes) succeeded=yes AC_MSG_CHECKING($1_CFLAGS) $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` AC_MSG_RESULT($$1_CFLAGS) AC_MSG_CHECKING($1_LIBS) $1_LIBS=`$PKG_CONFIG --libs "$2"` AC_MSG_RESULT($$1_LIBS) else $1_CFLAGS="" $1_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ifelse([$4], ,echo $$1_PKG_ERRORS,) fi AC_SUBST($1_CFLAGS) AC_SUBST($1_LIBS) else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then ifelse([$3], , :, [$3]) else ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) fi ]) # -*- Autoconf -*- # Copyright (C) 2002, 2003 Free Software Foundation, Inc. # Generated from amversion.in; do not edit by hand. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.4])]) # AM_AUX_DIR_EXPAND # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # This was merged into AC_PROG_CC in Autoconf. AU_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC AC_DIAGNOSE([obsolete], [$0: your code should no longer depend upon `am_cv_prog_cc_stdc', but upon `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when you adjust the code. You can also remove the above call to AC_PROG_CC if you already called it elsewhere.]) am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc ]) AU_DEFUN([fp_PROG_CC_STDC]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 6 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # serial 7 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 7 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if # your package does certain things. But this isn't really a big deal. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 11 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.58])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # -*- Autoconf -*- # Copyright (C) 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # Copyright (C) 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # # Check to make sure that the build environment is sane. # # Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # AM_PROG_INSTALL_STRIP # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR euler-1.61.0/config.h.in0000644000175000001440000000316410331173661013604 0ustar ericusers/* config.h.in. Generated from configure.in by autoheader. */ #undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef HAVE_LIBSM #undef PACKAGE_LOCALE_DIR #undef INSTALL_DIR #undef SOURCE_DIR #undef GETTEXT_PACKAGE /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION euler-1.61.0/configure0000755000175000001440000257661510331245306013506 0ustar ericusers#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="configure.in" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PKG_CONFIG GTK_CFLAGS GTK_LIBS NO_PREFIX_INSTALL_DIR INSTALL_DIR LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=euler VERSION=1.61.0 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers config.h" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi echo "$as_me:$LINENO: checking for library containing strerror" >&5 echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 if test "${ac_cv_search_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_strerror=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_strerror="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_strerror" = no; then for ac_lib in cposix; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_strerror="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 echo "${ECHO_T}$ac_cv_search_strerror" >&6 if test "$ac_cv_search_strerror" != no; then test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" fi CFLAGS="" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump'. lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | kfreebsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 5855 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac need_locks="$enable_libtool_lock" # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:7033:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* ) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for *BSD fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux*) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8090: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8094: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8333: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8337: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8393: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8397: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds="$tmp_archive_cmds" fi else ld_shlibs=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd12*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.0-5 | solaris2.0-5.*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12869: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:12873: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12929: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:12933: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15225: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:15229: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15285: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:15289: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_F77="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_F77="$tmp_archive_cmds" fi else ld_shlibs_F77=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17320: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17324: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case "$cc_basename" in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17563: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17567: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17623: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:17627: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_GCJ="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_GCJ="$tmp_archive_cmds" fi else ld_shlibs_GCJ=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case "$cc_basename" in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion succeeded=no if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo "$as_me:$LINENO: checking for gtk+-2.0 >= 2.6.0" >&5 echo $ECHO_N "checking for gtk+-2.0 >= 2.6.0... $ECHO_C" >&6 if $PKG_CONFIG --exists "gtk+-2.0 >= 2.6.0" ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 succeeded=yes echo "$as_me:$LINENO: checking GTK_CFLAGS" >&5 echo $ECHO_N "checking GTK_CFLAGS... $ECHO_C" >&6 GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.6.0"` echo "$as_me:$LINENO: result: $GTK_CFLAGS" >&5 echo "${ECHO_T}$GTK_CFLAGS" >&6 echo "$as_me:$LINENO: checking GTK_LIBS" >&5 echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6 GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.6.0"` echo "$as_me:$LINENO: result: $GTK_LIBS" >&5 echo "${ECHO_T}$GTK_LIBS" >&6 else GTK_CFLAGS="" GTK_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.6.0"` fi else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then : else exit fi packagesrcdir=`cd $srcdir && pwd` if test "x${prefix}" = "xNONE"; then packageprefix=${ac_default_prefix} else packageprefix=${prefix} fi NO_PREFIX_INSTALL_DIR="${packageprefix}" INSTALL_DIR="${packageprefix}" cat >>confdefs.h <<_ACEOF #define INSTALL_DIR "${packageprefix}" _ACEOF cat >>confdefs.h <<_ACEOF #define SOURCE_DIR "${packagesrcdir}" _ACEOF ac_config_files="$ac_config_files Makefile src/Makefile progs/Makefile progs/user/Makefile docs/Makefile docs/french/Makefile docs/german/Makefile docs/german/images/Makefile docs/images/Makefile docs/reference/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "progs/Makefile" ) CONFIG_FILES="$CONFIG_FILES progs/Makefile" ;; "progs/user/Makefile" ) CONFIG_FILES="$CONFIG_FILES progs/user/Makefile" ;; "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/french/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/french/Makefile" ;; "docs/german/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/german/Makefile" ;; "docs/german/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/german/images/Makefile" ;; "docs/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;; "docs/reference/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t s,@GTK_LIBS@,$GTK_LIBS,;t t s,@NO_PREFIX_INSTALL_DIR@,$NO_PREFIX_INSTALL_DIR,;t t s,@INSTALL_DIR@,$INSTALL_DIR,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi euler-1.61.0/install-sh0000755000175000001440000002201710331174002013551 0ustar ericusers#!/bin/sh # install - install a program, script, or datafile scriptversion=2004-12-17.09 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit 0;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit 0;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` shift IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit 0 } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: euler-1.61.0/missing0000755000175000001440000002453310331174002013151 0ustar ericusers#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2004-09-07.08 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit 0 ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit 0 ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: euler-1.61.0/depcomp0000755000175000001440000003554510331174003013135 0ustar ericusers#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2004-05-31.23 # Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit 0 ;; -v | --v*) echo "depcomp $scriptversion" exit 0 ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # Dependencies are output in .lo.d with libtool 1.4. # With libtool 1.5 they are output both in $dir.libs/$base.o.d # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the # latter, because the former will be cleaned when $dir.libs is # erased. tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir$base.o.d" tmpdepfile3="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" tmpdepfile3="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" elif test -f "$tmpdepfile2"; then tmpdepfile="$tmpdepfile2" else tmpdepfile="$tmpdepfile3" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: euler-1.61.0/Makefile.in0000644000175000001440000005007510331246753013634 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO acconfig.h config.guess config.sub depcomp install-sh \ ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(eulerdocdir)" eulerdocDATA_INSTALL = $(INSTALL_DATA) DATA = $(eulerdoc_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NO_PREFIX_INSTALL_DIR = @NO_PREFIX_INSTALL_DIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = src docs progs eulerdocdir = ${prefix}/share/doc/euler eulerdoc_DATA = \ README\ COPYING\ AUTHORS\ ChangeLog\ INSTALL\ NEWS\ TODO EXTRA_DIST = $(eulerdoc_DATA) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) $(top_srcdir)/acconfig.h cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-eulerdocDATA: $(eulerdoc_DATA) @$(NORMAL_INSTALL) test -z "$(eulerdocdir)" || $(mkdir_p) "$(DESTDIR)$(eulerdocdir)" @list='$(eulerdoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(eulerdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(eulerdocdir)/$$f'"; \ $(eulerdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(eulerdocdir)/$$f"; \ done uninstall-eulerdocDATA: @$(NORMAL_UNINSTALL) @list='$(eulerdoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(eulerdocdir)/$$f'"; \ rm -f "$(DESTDIR)$(eulerdocdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(eulerdocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-eulerdocDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-eulerdocDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-libtool clean-recursive \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-eulerdocDATA install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-eulerdocDATA \ uninstall-info-am # Copy all the spec files. Of cource, only one is actually used. dist-hook: for specfile in *.spec; do \ if test -f $$specfile; then \ cp -p $$specfile $(distdir); \ fi \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/config.log0000644000175000001440000010001110331246762013521 0ustar ericusersThis file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by configure, which was generated by GNU Autoconf 2.59. Invocation command line was $ ./configure ## --------- ## ## Platform. ## ## --------- ## hostname = darkstar uname -m = i686 uname -r = 2.6.12.2 uname -s = Linux uname -v = #2 Thu Jul 21 13:48:05 CEST 2005 /usr/bin/uname -p = unknown /bin/uname -X = unknown /bin/arch = i686 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /usr/local/bin PATH: /usr/bin PATH: /bin PATH: /usr/X11R6/bin PATH: /usr/games PATH: /usr/lib/java/bin PATH: /usr/lib/java/jre/bin PATH: /opt/kde/bin PATH: /usr/lib/qt/bin PATH: /usr/share/texmf/bin PATH: . PATH: /usr/local/OpenOffice.org1.1.4/program ## ----------- ## ## Core tests. ## ## ----------- ## configure:1536: checking for a BSD-compatible install configure:1591: result: /usr/bin/ginstall -c configure:1602: checking whether build environment is sane configure:1645: result: yes configure:1710: checking for gawk configure:1726: found /usr/bin/gawk configure:1736: result: gawk configure:1746: checking whether make sets $(MAKE) configure:1766: result: yes configure:1949: checking for style of include used by make configure:1977: result: GNU configure:2048: checking for gcc configure:2064: found /usr/bin/gcc configure:2074: result: gcc configure:2318: checking for C compiler version configure:2321: gcc --version &5 gcc (GCC) 3.3.4 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:2324: $? = 0 configure:2326: gcc -v &5 Reading specs from /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/specs Configured with: ../gcc-3.3.4/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux Thread model: posix gcc version 3.3.4 configure:2329: $? = 0 configure:2331: gcc -V &5 gcc: `-V' option must have argument configure:2334: $? = 1 configure:2357: checking for C compiler default output file name configure:2360: gcc conftest.c >&5 configure:2363: $? = 0 configure:2409: result: a.out configure:2414: checking whether the C compiler works configure:2420: ./a.out configure:2423: $? = 0 configure:2440: result: yes configure:2447: checking whether we are cross compiling configure:2449: result: no configure:2452: checking for suffix of executables configure:2454: gcc -o conftest conftest.c >&5 configure:2457: $? = 0 configure:2482: result: configure:2488: checking for suffix of object files configure:2509: gcc -c conftest.c >&5 configure:2512: $? = 0 configure:2534: result: o configure:2538: checking whether we are using the GNU C compiler configure:2562: gcc -c conftest.c >&5 configure:2568: $? = 0 configure:2572: test -z || test ! -s conftest.err configure:2575: $? = 0 configure:2578: test -s conftest.o configure:2581: $? = 0 configure:2594: result: yes configure:2600: checking whether gcc accepts -g configure:2621: gcc -c -g conftest.c >&5 configure:2627: $? = 0 configure:2631: test -z || test ! -s conftest.err configure:2634: $? = 0 configure:2637: test -s conftest.o configure:2640: $? = 0 configure:2651: result: yes configure:2668: checking for gcc option to accept ANSI C configure:2738: gcc -c -g -O2 conftest.c >&5 configure:2744: $? = 0 configure:2748: test -z || test ! -s conftest.err configure:2751: $? = 0 configure:2754: test -s conftest.o configure:2757: $? = 0 configure:2775: result: none needed configure:2793: gcc -c -g -O2 conftest.c >&5 conftest.c:2: error: parse error before "me" configure:2799: $? = 1 configure: failed program was: | #ifndef __cplusplus | choke me | #endif configure:2934: checking dependency style of gcc configure:3024: result: gcc3 configure:3042: checking for library containing strerror configure:3072: gcc -o conftest -g -O2 conftest.c >&5 configure:3078: $? = 0 configure:3082: test -z || test ! -s conftest.err configure:3085: $? = 0 configure:3088: test -s conftest configure:3091: $? = 0 configure:3161: result: none required configure:3216: checking for gcc configure:3242: result: gcc configure:3486: checking for C compiler version configure:3489: gcc --version &5 gcc (GCC) 3.3.4 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:3492: $? = 0 configure:3494: gcc -v &5 Reading specs from /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/specs Configured with: ../gcc-3.3.4/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux Thread model: posix gcc version 3.3.4 configure:3497: $? = 0 configure:3499: gcc -V &5 gcc: `-V' option must have argument configure:3502: $? = 1 configure:3505: checking whether we are using the GNU C compiler configure:3561: result: yes configure:3567: checking whether gcc accepts -g configure:3618: result: yes configure:3635: checking for gcc option to accept ANSI C configure:3742: result: none needed configure:3760: gcc -c conftest.c >&5 conftest.c:2: error: parse error before "me" configure:3766: $? = 1 configure: failed program was: | #ifndef __cplusplus | choke me | #endif configure:3901: checking dependency style of gcc configure:3991: result: gcc3 configure:4054: checking for gcc configure:4080: result: gcc configure:4324: checking for C compiler version configure:4327: gcc --version &5 gcc (GCC) 3.3.4 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:4330: $? = 0 configure:4332: gcc -v &5 Reading specs from /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/specs Configured with: ../gcc-3.3.4/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux Thread model: posix gcc version 3.3.4 configure:4335: $? = 0 configure:4337: gcc -V &5 gcc: `-V' option must have argument configure:4340: $? = 1 configure:4343: checking whether we are using the GNU C compiler configure:4399: result: yes configure:4405: checking whether gcc accepts -g configure:4456: result: yes configure:4473: checking for gcc option to accept ANSI C configure:4580: result: none needed configure:4598: gcc -c conftest.c >&5 conftest.c:2: error: parse error before "me" configure:4604: $? = 1 configure: failed program was: | #ifndef __cplusplus | choke me | #endif configure:4739: checking dependency style of gcc configure:4829: result: gcc3 configure:4854: checking how to run the C preprocessor configure:4889: gcc -E conftest.c configure:4895: $? = 0 configure:4927: gcc -E conftest.c conftest.c:11:28: ac_nonexistent.h: No such file or directory configure:4933: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "euler" | #define VERSION "1.61.0" | /* end confdefs.h. */ | #include configure:4972: result: gcc -E configure:4996: gcc -E conftest.c configure:5002: $? = 0 configure:5034: gcc -E conftest.c conftest.c:11:28: ac_nonexistent.h: No such file or directory configure:5040: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "euler" | #define VERSION "1.61.0" | /* end confdefs.h. */ | #include configure:5084: checking for egrep configure:5094: result: grep -E configure:5099: checking for ANSI C header files configure:5124: gcc -c conftest.c >&5 configure:5130: $? = 0 configure:5134: test -z || test ! -s conftest.err configure:5137: $? = 0 configure:5140: test -s conftest.o configure:5143: $? = 0 configure:5232: gcc -o conftest conftest.c >&5 configure:5235: $? = 0 configure:5237: ./conftest configure:5240: $? = 0 configure:5255: result: yes configure:5343: checking build system type configure:5361: result: i686-pc-linux-gnu configure:5369: checking host system type configure:5383: result: i686-pc-linux-gnu configure:5391: checking for a sed that does not truncate output configure:5445: result: /usr/bin/sed configure:5459: checking for ld used by gcc configure:5526: result: /usr/i486-slackware-linux/bin/ld configure:5535: checking if the linker (/usr/i486-slackware-linux/bin/ld) is GNU ld configure:5550: result: yes configure:5555: checking for /usr/i486-slackware-linux/bin/ld option to reload object files configure:5562: result: -r configure:5580: checking for BSD-compatible nm configure:5622: result: /usr/bin/nm -B configure:5626: checking whether ln -s works configure:5630: result: yes configure:5637: checking how to recognise dependent libraries configure:5809: result: pass_all configure:6031: checking for sys/types.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for sys/stat.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for stdlib.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for string.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for memory.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for strings.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for inttypes.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for stdint.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6031: checking for unistd.h configure:6047: gcc -c conftest.c >&5 configure:6053: $? = 0 configure:6057: test -z || test ! -s conftest.err configure:6060: $? = 0 configure:6063: test -s conftest.o configure:6066: $? = 0 configure:6077: result: yes configure:6103: checking dlfcn.h usability configure:6115: gcc -c conftest.c >&5 configure:6121: $? = 0 configure:6125: test -z || test ! -s conftest.err configure:6128: $? = 0 configure:6131: test -s conftest.o configure:6134: $? = 0 configure:6144: result: yes configure:6148: checking dlfcn.h presence configure:6158: gcc -E conftest.c configure:6164: $? = 0 configure:6184: result: yes configure:6219: checking for dlfcn.h configure:6226: result: yes configure:6291: checking for g++ configure:6307: found /usr/bin/g++ configure:6317: result: g++ configure:6333: checking for C++ compiler version configure:6336: g++ --version &5 g++ (GCC) 3.3.4 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:6339: $? = 0 configure:6341: g++ -v &5 Reading specs from /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/specs Configured with: ../gcc-3.3.4/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux Thread model: posix gcc version 3.3.4 configure:6344: $? = 0 configure:6346: g++ -V &5 g++: `-V' option must have argument configure:6349: $? = 1 configure:6352: checking whether we are using the GNU C++ compiler configure:6376: g++ -c conftest.cc >&5 configure:6382: $? = 0 configure:6386: test -z || test ! -s conftest.err configure:6389: $? = 0 configure:6392: test -s conftest.o configure:6395: $? = 0 configure:6408: result: yes configure:6414: checking whether g++ accepts -g configure:6435: g++ -c -g conftest.cc >&5 configure:6441: $? = 0 configure:6445: test -z || test ! -s conftest.err configure:6448: $? = 0 configure:6451: test -s conftest.o configure:6454: $? = 0 configure:6465: result: yes configure:6507: g++ -c -g -O2 conftest.cc >&5 configure:6513: $? = 0 configure:6517: test -z || test ! -s conftest.err configure:6520: $? = 0 configure:6523: test -s conftest.o configure:6526: $? = 0 configure:6552: g++ -c -g -O2 conftest.cc >&5 conftest.cc: In function `int main()': conftest.cc:26: error: `exit' undeclared (first use this function) conftest.cc:26: error: (Each undeclared identifier is reported only once for each function it appears in.) configure:6558: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "euler" | #define VERSION "1.61.0" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_DLFCN_H 1 | /* end confdefs.h. */ | | int | main () | { | exit (42); | ; | return 0; | } configure:6507: g++ -c -g -O2 conftest.cc >&5 configure:6513: $? = 0 configure:6517: test -z || test ! -s conftest.err configure:6520: $? = 0 configure:6523: test -s conftest.o configure:6526: $? = 0 configure:6552: g++ -c -g -O2 conftest.cc >&5 configure:6558: $? = 0 configure:6562: test -z || test ! -s conftest.err configure:6565: $? = 0 configure:6568: test -s conftest.o configure:6571: $? = 0 configure:6596: checking dependency style of g++ configure:6686: result: gcc3 configure:6713: checking how to run the C++ preprocessor configure:6744: g++ -E conftest.cc configure:6750: $? = 0 configure:6782: g++ -E conftest.cc conftest.cc:25:28: ac_nonexistent.h: No such file or directory configure:6788: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "euler" | #define VERSION "1.61.0" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_DLFCN_H 1 | #ifdef __cplusplus | extern "C" void std::exit (int) throw (); using std::exit; | #endif | /* end confdefs.h. */ | #include configure:6827: result: g++ -E configure:6851: g++ -E conftest.cc configure:6857: $? = 0 configure:6889: g++ -E conftest.cc conftest.cc:25:28: ac_nonexistent.h: No such file or directory configure:6895: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "euler" | #define VERSION "1.61.0" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_DLFCN_H 1 | #ifdef __cplusplus | extern "C" void std::exit (int) throw (); using std::exit; | #endif | /* end confdefs.h. */ | #include configure:6992: checking for g77 configure:7008: found /usr/bin/g77 configure:7018: result: g77 configure:7033: checking for Fortran 77 compiler version configure:7036: g77 --version &5 GNU Fortran (GCC) 3.3.4 Copyright (C) 2002 Free Software Foundation, Inc. GNU Fortran comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of GNU Fortran under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING or type the command `info -f g77 Copying'. configure:7039: $? = 0 configure:7041: g77 -v &5 Reading specs from /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/specs Configured with: ../gcc-3.3.4/configure --prefix=/usr --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --target=i486-slackware-linux --host=i486-slackware-linux Thread model: posix gcc version 3.3.4 configure:7044: $? = 0 configure:7046: g77 -V &5 g77: `-V' option must have argument configure:7049: $? = 1 configure:7057: checking whether we are using the GNU Fortran 77 compiler configure:7071: g77 -c conftest.F >&5 configure:7077: $? = 0 configure:7081: test -z || test ! -s conftest.err configure:7084: $? = 0 configure:7087: test -s conftest.o configure:7090: $? = 0 configure:7103: result: yes configure:7109: checking whether g77 accepts -g configure:7121: g77 -c -g conftest.f >&5 configure:7127: $? = 0 configure:7131: test -z || test ! -s conftest.err configure:7134: $? = 0 configure:7137: test -s conftest.o configure:7140: $? = 0 configure:7152: result: yes configure:7182: checking the maximum length of command line arguments configure:7261: result: 32768 configure:7272: checking command to parse /usr/bin/nm -B output from gcc object configure:7368: gcc -c conftest.c >&5 configure:7371: $? = 0 configure:7375: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' \> conftest.nm configure:7378: $? = 0 configure:7430: gcc -o conftest conftest.c conftstm.o >&5 configure:7433: $? = 0 configure:7471: result: ok configure:7475: checking for objdir configure:7490: result: .libs configure:7580: checking for ar configure:7596: found /usr/bin/ar configure:7607: result: ar configure:7660: checking for ranlib configure:7676: found /usr/bin/ranlib configure:7687: result: ranlib configure:7740: checking for strip configure:7756: found /usr/bin/strip configure:7767: result: strip configure:8031: checking if gcc static flag works configure:8054: result: yes configure:8072: checking if gcc supports -fno-rtti -fno-exceptions configure:8090: gcc -c -fno-rtti -fno-exceptions conftest.c >&5 cc1: warning: "-fno-rtti" is valid for C++ but not for C/ObjC configure:8094: $? = 0 configure:8105: result: no configure:8120: checking for gcc option to produce PIC configure:8307: result: -fPIC configure:8315: checking if gcc PIC flag -fPIC works configure:8333: gcc -c -fPIC -DPIC conftest.c >&5 configure:8337: $? = 0 configure:8348: result: yes configure:8372: checking if gcc supports -c -o file.o configure:8393: gcc -c -o out/conftest2.o conftest.c >&5 configure:8397: $? = 0 configure:8417: result: yes configure:8443: checking whether the gcc linker (/usr/i486-slackware-linux/bin/ld) supports shared libraries configure:9292: result: yes configure:9318: checking whether -lc should be explicitly linked in configure:9323: gcc -c conftest.c >&5 configure:9326: $? = 0 configure:9340: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| grep -lc \>/dev/null 2\>\&1 configure:9343: $? = 0 configure:9355: result: no configure:9363: checking dynamic linker characteristics configure:9903: result: GNU/Linux ld.so configure:9907: checking how to hardcode library paths into programs configure:9932: result: immediate configure:9946: checking whether stripping libraries is possible configure:9951: result: yes configure:10781: checking if libtool supports shared libraries configure:10783: result: yes configure:10786: checking whether to build shared libraries configure:10807: result: yes configure:10810: checking whether to build static libraries configure:10814: result: yes configure:10906: creating libtool configure:11455: checking for ld used by g++ configure:11522: result: /usr/i486-slackware-linux/bin/ld configure:11531: checking if the linker (/usr/i486-slackware-linux/bin/ld) is GNU ld configure:11546: result: yes configure:11597: checking whether the g++ linker (/usr/i486-slackware-linux/bin/ld) supports shared libraries configure:12464: result: yes configure:12482: g++ -c -g -O2 conftest.cc >&5 configure:12485: $? = 0 configure:12581: checking for g++ option to produce PIC configure:12843: result: -fPIC configure:12851: checking if g++ PIC flag -fPIC works configure:12869: g++ -c -g -O2 -fPIC -DPIC conftest.cc >&5 configure:12873: $? = 0 configure:12884: result: yes configure:12908: checking if g++ supports -c -o file.o configure:12929: g++ -c -g -O2 -o out/conftest2.o conftest.cc >&5 configure:12933: $? = 0 configure:12953: result: yes configure:12979: checking whether the g++ linker (/usr/i486-slackware-linux/bin/ld) supports shared libraries configure:13004: result: yes configure:13075: checking dynamic linker characteristics configure:13615: result: GNU/Linux ld.so configure:13619: checking how to hardcode library paths into programs configure:13644: result: immediate configure:13658: checking whether stripping libraries is possible configure:13663: result: yes configure:14970: checking if libtool supports shared libraries configure:14972: result: yes configure:14975: checking whether to build shared libraries configure:14993: result: yes configure:14996: checking whether to build static libraries configure:15000: result: yes configure:15012: checking for g77 option to produce PIC configure:15199: result: -fPIC configure:15207: checking if g77 PIC flag -fPIC works configure:15225: g77 -c -g -O2 -fPIC conftest.f >&5 configure:15229: $? = 0 configure:15240: result: yes configure:15264: checking if g77 supports -c -o file.o configure:15285: g77 -c -g -O2 -o out/conftest2.o conftest.f >&5 configure:15289: $? = 0 configure:15309: result: yes configure:15335: checking whether the g77 linker (/usr/i486-slackware-linux/bin/ld) supports shared libraries configure:16164: result: yes configure:16235: checking dynamic linker characteristics configure:16775: result: GNU/Linux ld.so configure:16779: checking how to hardcode library paths into programs configure:16804: result: immediate configure:16818: checking whether stripping libraries is possible configure:16823: result: yes configure:20926: checking for pkg-config configure:20944: found /usr/bin/pkg-config configure:20957: result: /usr/bin/pkg-config configure:20974: checking for gtk+-2.0 >= 2.6.0 configure:20978: result: yes configure:20982: checking GTK_CFLAGS configure:20985: result: -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include configure:20988: checking GTK_LIBS configure:20991: result: -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 configure:21183: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by config.status, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on darkstar config.status:728: creating Makefile config.status:728: creating src/Makefile config.status:728: creating progs/Makefile config.status:728: creating progs/user/Makefile config.status:728: creating docs/Makefile config.status:728: creating docs/french/Makefile config.status:728: creating docs/german/Makefile config.status:728: creating docs/german/images/Makefile config.status:728: creating docs/images/Makefile config.status:728: creating docs/reference/Makefile config.status:832: creating config.h config.status:944: config.h is unchanged config.status:1124: executing depfiles commands ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=i686-pc-linux-gnu ac_cv_build_alias=i686-pc-linux-gnu ac_cv_c_compiler_gnu=yes ac_cv_cxx_compiler_gnu=yes ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_CPP_set= ac_cv_env_CPP_value= ac_cv_env_CXXCPP_set= ac_cv_env_CXXCPP_value= ac_cv_env_CXXFLAGS_set= ac_cv_env_CXXFLAGS_value= ac_cv_env_CXX_set= ac_cv_env_CXX_value= ac_cv_env_F77_set= ac_cv_env_F77_value= ac_cv_env_FFLAGS_set= ac_cv_env_FFLAGS_value= ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_exeext= ac_cv_f77_compiler_gnu=yes ac_cv_header_dlfcn_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_memory_h=yes ac_cv_header_stdc=yes ac_cv_header_stdint_h=yes ac_cv_header_stdlib_h=yes ac_cv_header_string_h=yes ac_cv_header_strings_h=yes ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_unistd_h=yes ac_cv_host=i686-pc-linux-gnu ac_cv_host_alias=i686-pc-linux-gnu ac_cv_objext=o ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config ac_cv_path_install='/usr/bin/ginstall -c' ac_cv_prog_AWK=gawk ac_cv_prog_CPP='gcc -E' ac_cv_prog_CXXCPP='g++ -E' ac_cv_prog_ac_ct_AR=ar ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_ac_ct_CXX=g++ ac_cv_prog_ac_ct_F77=g77 ac_cv_prog_ac_ct_RANLIB=ranlib ac_cv_prog_ac_ct_STRIP=strip ac_cv_prog_cc_g=yes ac_cv_prog_cc_stdc= ac_cv_prog_cxx_g=yes ac_cv_prog_egrep='grep -E' ac_cv_prog_f77_g=yes ac_cv_prog_make_make_set=yes ac_cv_search_strerror='none required' am_cv_CC_dependencies_compiler_type=gcc3 am_cv_CXX_dependencies_compiler_type=gcc3 am_cv_prog_cc_stdc= lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_ld_reload_flag=-r lt_cv_objdir=.libs lt_cv_path_LD=/usr/i486-slackware-linux/bin/ld lt_cv_path_LDCXX=/usr/i486-slackware-linux/bin/ld lt_cv_path_NM='/usr/bin/nm -B' lt_cv_path_SED=/usr/bin/sed lt_cv_prog_compiler_c_o=yes lt_cv_prog_compiler_c_o_CXX=yes lt_cv_prog_compiler_c_o_F77=yes lt_cv_prog_compiler_rtti_exceptions=no lt_cv_prog_gnu_ld=yes lt_cv_prog_gnu_ldcxx=yes lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p'\''' lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr) \&\2},/p'\''' lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern int \1;/p'\''' lt_cv_sys_max_cmd_len=32768 lt_lt_cv_prog_compiler_c_o='"yes"' lt_lt_cv_prog_compiler_c_o_CXX='"yes"' lt_lt_cv_prog_compiler_c_o_F77='"yes"' lt_lt_cv_sys_global_symbol_pipe='"sed -n -e '\''s/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'\''"' lt_lt_cv_sys_global_symbol_to_c_name_address='"sed -n -e '\''s/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'\''"' lt_lt_cv_sys_global_symbol_to_cdecl='"sed -n -e '\''s/^. .* \\(.*\\)\$/extern int \\1;/p'\''"' ## ----------------- ## ## Output variables. ## ## ----------------- ## ACLOCAL='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9' AMDEPBACKSLASH='\' AMDEP_FALSE='#' AMDEP_TRUE='' AMTAR='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar' AR='ar' AUTOCONF='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf' AUTOHEADER='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader' AUTOMAKE='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9' AWK='gawk' CC='gcc' CCDEPMODE='depmode=gcc3' CFLAGS='' CPP='gcc -E' CPPFLAGS='' CXX='g++' CXXCPP='g++ -E' CXXDEPMODE='depmode=gcc3' CXXFLAGS='-g -O2' CYGPATH_W='echo' DEFS='-DHAVE_CONFIG_H' DEPDIR='.deps' ECHO='echo' ECHO_C='' ECHO_N='-n' ECHO_T='' EGREP='grep -E' EXEEXT='' F77='g77' FFLAGS='-g -O2' GTK_CFLAGS='-DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include ' GTK_LIBS='-Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 ' INSTALL_DATA='${INSTALL} -m 644' INSTALL_DIR='/usr/local' INSTALL_PROGRAM='${INSTALL}' INSTALL_SCRIPT='${INSTALL}' INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' LDFLAGS='' LIBOBJS='' LIBS='' LIBTOOL='$(SHELL) $(top_builddir)/libtool' LN_S='ln -s' LTLIBOBJS='' MAKEINFO='${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo' NO_PREFIX_INSTALL_DIR='/usr/local' OBJEXT='o' PACKAGE='euler' PACKAGE_BUGREPORT='' PACKAGE_NAME='' PACKAGE_STRING='' PACKAGE_TARNAME='' PACKAGE_VERSION='' PATH_SEPARATOR=':' PKG_CONFIG='/usr/bin/pkg-config' RANLIB='ranlib' SET_MAKE='' SHELL='/bin/sh' STRIP='strip' VERSION='1.61.0' ac_ct_AR='ar' ac_ct_CC='gcc' ac_ct_CXX='g++' ac_ct_F77='g77' ac_ct_RANLIB='ranlib' ac_ct_STRIP='strip' am__fastdepCC_FALSE='#' am__fastdepCC_TRUE='' am__fastdepCXX_FALSE='#' am__fastdepCXX_TRUE='' am__include='include' am__leading_dot='.' am__quote='' am__tar='${AMTAR} chof - "$$tardir"' am__untar='${AMTAR} xf -' bindir='${exec_prefix}/bin' build='i686-pc-linux-gnu' build_alias='' build_cpu='i686' build_os='linux-gnu' build_vendor='pc' datadir='${prefix}/share' exec_prefix='${prefix}' host='i686-pc-linux-gnu' host_alias='' host_cpu='i686' host_os='linux-gnu' host_vendor='pc' includedir='${prefix}/include' infodir='${prefix}/info' install_sh='/home/eric/dev/euler/euler-1.61.0/install-sh' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localstatedir='${prefix}/var' mandir='${prefix}/man' mkdir_p='mkdir -p --' oldincludedir='/usr/include' prefix='/usr/local' program_transform_name='s,x,x,' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='${prefix}/etc' target_alias='' ## ----------- ## ## confdefs.h. ## ## ----------- ## #define HAVE_DLFCN_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_MEMORY_H 1 #define HAVE_STDINT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRINGS_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_UNISTD_H 1 #define INSTALL_DIR "/usr/local" #define PACKAGE "euler" #define PACKAGE_BUGREPORT "" #define PACKAGE_NAME "" #define PACKAGE_STRING "" #define PACKAGE_TARNAME "" #define PACKAGE_VERSION "" #define SOURCE_DIR "/home/eric/dev/euler/euler-1.61.0" #define STDC_HEADERS 1 #define VERSION "1.61.0" #endif #ifdef __cplusplus extern "C" void std::exit (int) throw (); using std::exit; configure: exit 0 euler-1.61.0/AUTHORS0000644000175000001440000000012710327035424012624 0ustar ericusersDr. Renee Grothmann Eric Boucharé euler-1.61.0/INSTALL0000644000175000001440000001722707664371156012635 0ustar ericusersBasic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. euler-1.61.0/pixmaps/0000755000175000001440000000000010327070301013226 5ustar ericuserseuler-1.61.0/pixmaps/icon.xpm0000644000175000001440000002121007417015640014713 0ustar ericusers/* XPM */ static char * icon_xpm[] = { "37 46 325 2", " c None", ". c #FFFFFF", "+ c #F5EFEF", "@ c #E6D7D7", "# c #D3B7B7", "$ c #CEAFAF", "% c #CBA9A9", "& c #CDADAD", "* c #CCABAB", "= c #AD7878", "- c #CAA8A8", "; c #D7BDBD", "> c #C9A6A6", ", c #C39C9C", "' c #D6BCBC", ") c #CFAFAF", "! c #D1B3B3", "~ c #D4B9B9", "{ c #C6A1A1", "] c #C5A0A0", "^ c #CFB0B0", "/ c #DAC2C2", "( c #DDC7C7", "_ c #E8DADA", ": c #F1E8E8", "< c #B78989", "[ c #B17E7E", "} c #BF9595", "| c #C29A9A", "1 c #E5D4D4", "2 c #F9F5F5", "3 c #FEFDFD", "4 c #FBFBFB", "5 c #7B7B7B", "6 c #FCF9F9", "7 c #DBC4C4", "8 c #B07D7D", "9 c #B68787", "0 c #C7A3A3", "a c #F3EBEB", "b c #E3D1D1", "c c #DFCACA", "d c #D4B8B8", "e c #C9A5A5", "f c #D0B1B1", "g c #C8A4A4", "h c #D0B2B2", "i c #C9A7A7", "j c #A36868", "k c #D6BBBB", "l c #DBC7C7", "m c #4B3D3D", "n c #F5EEEE", "o c #FDFCFC", "p c #FEFEFE", "q c #EFE5E5", "r c #CAA7A7", "s c #C7A2A2", "t c #F7F2F2", "u c #D2B5B5", "v c #C29B9B", "w c #F4EDED", "x c #C6BEBA", "y c #A1938D", "z c #D8C0C0", "A c #CBAAAA", "B c #CEAEAE", "C c #CDACAC", "D c #D5BABA", "E c #E8D9D9", "F c #DEC9C9", "G c #CAA9A9", "H c #F1F3F1", "I c #3D4D3D", "J c #E4E4E4", "K c #F2E9E9", "L c #F5FCF5", "M c #6BC56B", "N c #297129", "O c #D3B6B6", "P c #6FAC6F", "Q c #369536", "R c #297029", "S c #A8E0A8", "T c #3DA33D", "U c #338D33", "V c #CCD4CC", "W c #509850", "X c #D7DBD7", "Y c #D2D3D2", "Z c #0E250E", "` c #758475", " . c #E9EFE9", ".. c #EEE2E2", "+. c #F9F9F9", "@. c #003100", "#. c #003400", "$. c #133113", "%. c #B2BFB2", "&. c #CFB1B1", "*. c #ECE0E0", "=. c #E2CFCF", "-. c #003C00", ";. c #001F00", ">. c #052505", ",. c #A9BDA9", "'. c #C6A0A0", "). c #CDAEAE", "!. c #F6F0F0", "~. c #C7A4A4", "{. c #002F00", "]. c #002500", "^. c #002300", "/. c #002700", "(. c #1E4D1E", "_. c #C6A2A2", ":. c #CCACAC", "<. c #002100", "[. c #002800", "}. c #124F12", "|. c #FAF6F6", "1. c #D5B9B9", "2. c #001900", "3. c #001800", "4. c #001E00", "5. c #6D8B6D", "6. c #C39D9D", "7. c #F0E6E6", "8. c #E0CCCC", "9. c #D9D9D9", "0. c #001100", "a. c #000F00", "b. c #011501", "c. c #537053", "d. c #FAFCFA", "e. c #E9DADA", "f. c #DDDDDD", "g. c #323832", "h. c #244324", "i. c #B1C6B1", "j. c #F8F3F3", "k. c #CCAAAA", "l. c #D1B4B4", "m. c #FAF7F7", "n. c #AEC3AE", "o. c #728872", "p. c #608160", "q. c #566F49", "r. c #536750", "s. c #103E10", "t. c #175317", "u. c #85A185", "v. c #F6FAF6", "w. c #F7F1F1", "x. c #D9C0C0", "y. c #BCCCBC", "z. c #9BB69B", "A. c #ADC5AD", "B. c #91947D", "C. c #869680", "D. c #4A934A", "E. c #379837", "F. c #0F530F", "G. c #548954", "H. c #A8B7A8", "I. c #FBFDFB", "J. c #EEE3E3", "K. c #F7F7F7", "L. c #73AC73", "M. c #003A00", "N. c #004900", "O. c #003000", "P. c #002B00", "Q. c #265726", "R. c #A0BBA0", "S. c #E2D0D0", "T. c #E4D2D2", "U. c #E4E6E4", "V. c #004400", "W. c #004E00", "X. c #002D00", "Y. c #4F864F", "Z. c #F0F6F0", "`. c #F0E7E7", " + c #E4D3D3", ".+ c #F4F4F4", "++ c #004100", "@+ c #003500", "#+ c #003E00", "$+ c #003900", "%+ c #003200", "&+ c #386338", "*+ c #F5F8F5", "=+ c #C8A5A5", "-+ c #E6D5D5", ";+ c #004700", ">+ c #003B00", ",+ c #003600", "'+ c #004200", ")+ c #004600", "!+ c #8DBA8D", "~+ c #FCFBFB", "{+ c #003700", "]+ c #1A531A", "^+ c #C7A5A5", "/+ c #FBF8F8", "(+ c #EBF3EB", "_+ c #B4BEA8", ":+ c #A6BDA0", "<+ c #C4DBC4", "[+ c #CCDECC", "}+ c #002C00", "|+ c #0F620F", "1+ c #C5A3A2", "2+ c #FCFAFA", "3+ c #F4F8F4", "4+ c #A0C5A0", "5+ c #428142", "6+ c #0F5B0F", "7+ c #005300", "8+ c #004F00", "9+ c #005000", "0+ c #005200", "a+ c #003800", "b+ c #308130", "c+ c #EFE4E4", "d+ c #D9C1C1", "e+ c #B4D1B4", "f+ c #0F5C0F", "g+ c #005400", "h+ c #005100", "i+ c #004000", "j+ c #004300", "k+ c #81A181", "l+ c #EBDEDE", "m+ c #ADC7AD", "n+ c #065706", "o+ c #004C00", "p+ c #004500", "q+ c #002A00", "r+ c #002E00", "s+ c #076007", "t+ c #CFDACF", "u+ c #6CA66C", "v+ c #005600", "w+ c #002600", "x+ c #003300", "y+ c #003F00", "z+ c #115A11", "A+ c #A38F80", "B+ c #D2B4B4", "C+ c #93B893", "D+ c #005500", "E+ c #005A00", "F+ c #005900", "G+ c #004D00", "H+ c #004800", "I+ c #283B07", "J+ c #8A8E70", "K+ c #F6F1F1", "L+ c #83A87C", "M+ c #035A02", "N+ c #004A00", "O+ c #004B00", "P+ c #1D2500", "Q+ c #064406", "R+ c #C8D1C2", "S+ c #B98C8C", "T+ c #E9F1E9", "U+ c #A5C9A5", "V+ c #5C9A5C", "W+ c #256E25", "X+ c #2A632A", "Y+ c #2A6A2A", "Z+ c #2C682C", "`+ c #5A935A", " @ c #273700", ".@ c #569856", "+@ c #FDFBFB", "@@ c #C19999", "#@ c #005700", "$@ c #1A2F00", "%@ c #056205", "&@ c #DCEADC", "*@ c #DDC8C8", "=@ c #E1CECE", "-@ c #FCFCFC", ";@ c #4C844C", ">@ c #064606", ",@ c #242A00", "'@ c #6F956F", ")@ c #C59F9F", "!@ c #EDE2E2", "~@ c #DCC6C6", "{@ c #ECF4EC", "]@ c #9DBD9D", "^@ c #3F783F", "/@ c #044C04", "(@ c #005B00", "_@ c #203400", ":@ c #005C00", "<@ c #5F9E5F", "[@ c #975454", "}@ c #E6EEE6", "|@ c #8CAC8C", "1@ c #378337", "2@ c #044700", "3@ c #1B3100", "4@ c #006300", "5@ c #6DA66D", "6@ c #DFECDF", "7@ c #819877", "8@ c #38411C", "9@ c #006100", "0@ c #607B4A", "a@ c #E6D6D6", "b@ c #CFDECF", "c@ c #78A978", "d@ c #7A7C5B", "e@ c #DBC3C3", "f@ c #EBDDDD", "g@ c #FFFEFE", "h@ c #DDC6C6", "i@ c #FBF9F9", "j@ c #A97171", " + @ # $ % & % * = - ; > , ' ) , ! ~ , % ; { ] ; ^ > / ( ( _ : ", "& < [ } | - # 1 2 3 , 4 5 6 2 2 7 8 9 0 ", "- a b c $ d e f g h - ! i ^ j f k l m n o p q r s c t u ", "s v w x y z A f A & % B C $ { g D o E F ", "G { H I J v c K ", "u ' L M N J D O 2 ", "0 ' P Q R J i 0 ", "- ' S T U J A ^ ", "u k V W X h & ", "^ t v Y Z ` . v > ", "F .. v +.@.#.$.%. ' &. ", "*.=. v +.-.@.;.>.,. '. ). ", "!.! ~. +.{.].^./.(.+. C _. ", " :. ' +.^.^.<.[.}. ^ |.1. ", " ^ ' +.2.3.4.<.5. 6. 7.8. ", " g ' 9.0.a.b.c.d. ' ( e. ", " * k 3 f.g.<.h.i. j.k. l.m. ", " ^ n.o.p.q.r.s.t.u.v. w.x. u 3 ", " g y.z.A.B.C.D.E.@.F.G.H.I. J.c > ", " * f : K.L.M.N.O.P.Q.R.4 S.T. * ", " ! ; : U.-.V.W.-.X./.Y.Z. S.a ^ ", " D `. +: .+V.++@+#+$+#.%+&+*+^ a =+ ", " -+1 +: +.;+-.>+,+%+@+'+)+!+1.~+ > ", " n 7 +: +.@.,+#+{+-.M.%+%+]+^+ u ", " /+% I.(+_+:+<+[+}+#.@+$+;+;+V.V.|+1+ 2+A ", " k. 3+4+5+6+7+7+8+9+0+P.@.a+#+#.%+O.{+b+# c+d+ ", " l. e+f+7+0+g+W.h+8+9+M.{.@+%+%+i+j+V.j+k+v b l+ ", " _. m+n+g+8+h+)+o+'+p+%+q+M.@.a+-.r+,+i+s+t+# D + ", " A u+v+0+8+9+h+p+w+X.@.r+x+$+$+M.y+#+V.a+z+A+ > ", " B+ C+D+E+F+D+G+0+G+O.#+X.>+i+%+i+W.0+V.H+N.I+J+! K+ ^ ", " _. L+M+9+g+E+W.#+N+j+X.-.O+8+G+N+o+p+>+a+P+Q+R+l.r > S+ ", " ^ 3 =.=+T+U+V+W+X+X+Y+Z+`+0+7+H+y+#.,+y+N+G+ @)+.@ +@@@ ", " u 2+ ~ # +.)+{+p+N+N.#@g+N+N+$@o+%@&@ l.7. ", " *@E > =@ -@;@>@>+$+y+p+a+-.>+,@'+#+'@ )@ ", " !@~@, *. {@]@^@/@(@7+N+N+_@:@N+<@' l+ ", " 2 [@K+ }@|@1@o+2@3@4@o+5@0 ", " !@0 r + 6@7@8@9@8+0@T. ", " /+^ ] E q a@b@c@d@ ", " ~@] D 3 ~@a@ T.( ", " q _.i K+ e@a 0 ", " /+B { E l./+f@' ", " g@h@] ~ 3 > i@)@ ", " 7._.r t ' 7.l. ", " m.& { a@ v > o ", " p F ] k o =+:. ", " 7.{ j@6 "}; euler-1.61.0/pixmaps/logo.xpm0000755000175000001440000011020310327063416014725 0ustar ericusers/* XPM */ static char * logo_xpm[] = { "185 194 5 1", " c None", ". c #000000", "+ c #2A9E2A", "@ c #2A2A2A", "# c #84FA84", " ................... ", " .......... . ............................ ", " ........... . ............................ ", " .......... . ............................ ", " .......... . ..............", " ........... . .... .", " .......... . ++++@ ... .", ".......... . @@@@@ .... .", ". .................. . @@@@@ ... .", ". .................. . @++@@ .... . ", ". .................. . ++@@@ ... . ", ". ................... @@@@ ... . ", " . . .................. .... . ", " . . @+@ .................. ... . ", " . . @@ .................. .... . ", " . . @ ........... . ", " . . @@ . . ", " . . +@@ . . ", " . . @@@@ . . ", " . . @@@@@ . . ", " . . @@@@@@ . . ", " . . @@@@@@@@ . . ", " . . @@@@@@@@@ . . ", " . . @@@@@@@@@@ . . ", " . . @@@@@#@@@#@@ . . ", " . . @@#@@@@@@@@@@ . . ", " . . @@@@@@@@@@@#@@ . . ", " . . @@#@@@#@@#@@@#@ . . ", " . . @@@@@@@@@@@@@@#@ . . ", " . . @#@@#@@#@@#@@@@@ . . ", " . . @#@@@#@@@#@@@#@ . . ", " . . @@@@@@@@@@@@@#@ . . ", " . . @@@@@#@@@@@@@@ . . ", " . . @@@@@@@#@@#@ . . ", " . . @@@@@@@@@@ . . ", " . . @@@@@@@ . . ", " . . @@@@@ . . ", " . . @@@@@@ . . ", " . . @@@@@@@ . . ", " . . @@@@@@@@@ . . ", " . . @@@@@+@@@@ . . ", " . . @@@+@@@+@@@@ . . ", " . . @@@@+@@@+@@@@@ . . ", " . . @@@@@+@@@@+@@++@ . . ", " . . @@@+@@+@+@@@@@@+@@ . . ", " . . @@@+@+@+@+@@@@@@++@ . . ", " . . @+@@@@@@@@+@+@+@@++@@ . . ", " . . @@@@+@+@++@+@+@+@@@++@ . . ", " . . @+@@++@+@+@++@+@+@+@++@ . . ", " . . @+@+@+@+@+@@@@@@@@@@@@@@ . . ", " . . @@@@@@@@@@+@++@+@+@++@+@ . . ", " . . @+@+@++@+@++@+@++@+@+@++@ . . ", " . . @+@++@++@+@+@++@+@+@++@+@ . . ", " . . @@+@@+@@+@+@@@@@++@+@+@++@ . . ", " . . @+@++@++@+@++@++@@+@+@@+@@ . . ", " . . @+@++@+@+@+++@+@++@+@++@+@ . . ", " . . +@@@+@+@+@++@+@++@++@++@+@ . . ", " . . @+@+@+@+@@@+@+@++@+@++@+@ . . ", " . . @+@+@+@+@++@+@+@@@@@++@+@ . . ", " . . @@@+@+@+@++@+@++@+++@@+@@ . . ", " . . @++@@@+@++@++@+@++@++@+@ . . ", " . . @+++++@@@+@+@++@+@++@+@ . . ", " . . @@@+@+@++@@+@+@++@+@+@ . . ", " . . +@@@+@++@+++@@@+@+@++@ . . ", " . . ++@+@+@@+@@@@+@+@@@+@ . . ", " . . +++@+@++@+@+@@+@@+@@ . . ", " . . +@+@@+@@+@@@+@@+@@ . . ", " . . @@@@+@@+@@@+@@+@@ . . ", " . . @@@+@++@@@+@@+@@ . . ", " . . @@@+@+@@@++@@++@ . . ", " . . @@+@@@@@@+@@++@@ . . ", " . . @@@@@@@@@+@@+@@@ . . ", " . . @@@@@+@@@@@@@@@ . . ", " . @@@@@@@@@@@@@@@@@@@@+@@@@@@ . . ", " . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ . . ", " . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@###@+++@@ . . ", " . @++@@@@@++++@@@@@@@@@@@@@@@@@@@@@@@@++@@+@@@@ . . ", " . @@@@@@@@@@@@@@@@@@@@@@@@###@##@###@++@@@@@++@@@ . . ", " . . @@@@@@@#@##@++@@@@@@@@@+@@@@ . . ", " . . @@@#@@@@@+@++@@+@@@+@@@++@@@ . . ", " . . @@@##@+@@+++@@@+@@@++@@++@@ . . ", " . . @@@#@+@@@@@+++@@++@@@+@@++@@@ . . ", " . . @@@+@@@@+@@@++@@@++@@+@@@++@@@ . . ", " . . @@@++@@@@++@@@++@@++@@++@@+++@@ . . ", " . . @@@@@++@@+@+++@@++@@++@@++@@+++@@ . . ", " . . @@++@@+@@+@@+++@@++@@++@@++@@@++@@ . . ", " . . @+@+++@++@++@@+++@@++@@@@@@++@++++@ . . ", " . . @@+@+@+@++@@++@@++@@@++@++@@++@@+++@@ . . ", " . . @@+@@+++@+++@++@@@++@+++@+++@+++@++++@ . . ", " . . @@@++@+++@++@@@++@+++@+++@@++@+++@++++@ . . ", " . . @+@++@++@@@@++@+++@+++@++++@++@@++@@+++@@ . . ", " . . @++@+@@@+++@+++@+++@+++@++++@+++@+++@++@@@ . . ", " . . @+@@@+@++++@+++@++++@+++@++@@@@@@@@@@@@+++@ . . ", " . . @@+@+++@++++@+++@++@@@@@@@@++@+++@+++@++++@ . . ", " . . @+++@++@+++@@@@@@@@++@+++@++++@+++@+++@++++@ . . ", " . . @+@@@@@@@@@++@+++@++++@+++@+++@+++@+++@++++@ . . ", " . . @@++@+++@++++@+++@++++@+++@+++@++++@+++@++++@ . . ", " . . @+++@+++@+++++@+++@+++@+++@++++@+++@+++@++++@ . . ", " . . +@@@@@@++@++++@+++@++++@+++@+++@++++@+++@++++@ . . ", " . . @+++@++@@+@@@@+@@@+@@@@+@@@@@@++@+++@+++@++++@ . . ", " . . @+++@++++@++++@+++@++++@+++@++@@+@@@@+@@@+@@@@@ . . ", " . . @@@+@+++@++++@++++@+++@++++@++++@++++@+++@++++@ . . ", " . . @++@@@@+@++++@+++@++++@++++@+++@++++@++++@++++@ . . ", " . . @+++@++@@@@+@++++@++++@+++@++++@++++@+++@++++@ . . ", " . @@@@@@@@@@@@@@ @@+@+++@+++@@@@++@++++@+++@++++@++++@+++@++++@ . . ", " . @@@@@@@@++++@+++++++++@@@@@+@@+++@+++@+++@@@@@+@++++@++++@++++@+++@++++@ . . ", " . @@@@@@+++++++++@@@@@@@@@@@@@@+++@+@+@@@+++@+++++@+++@+@@@@@@@+@++++@++++@++++@ . . ", " . @@@@++@++++@@@@@@@@++++@+++++++++@@@@+@+++@@++@++++@++++@++++@+++@@@@++@+++@+++++@ . . ", " . @@@+++++@@@@@@++++++@@@@@@@@@@@@@@@@++++@+++@++@@@++++@+++@++++@++++@+++@@@@@+@++++@ . . ", " . @@@@++++@@@@++++@@@@@@@@++++++++@+++++++@@@@+@+@+++@++@@+@+++@++++@++++@+++++@+++@@@@++@ . . ", " . @@@+++@@@@++++@@@@++@@+++++++@@@@@@@@@@@@@@+@@++@++@@+++++@++++@+++@++++@+++++@++++@+++@@@ . . ", " . @@+++@@@@+++@@@@++++++@@@@@@@@@++++++@+++++++@@+@+@+@+++++@@+@@+@+++@++++@+++++@++++@+++++@ . . ", " . @+++++@+++@@@@+++++@@@@+++@@++++++@@@@@@@@@++++@@++@@++++@@+++++@@++@+++++@++++@++++@+++++@ . . ", " . @@+++++@++++@+++@@@@@+++++++@@@@@@@@+++++@+++@@+@@+@@++@+@@+++++@@++@@@++++@+++++@+++@+++++@ . . ", " . @+++++@@+++@@++++@@++@@++@@@@++++@@@@@@@@@@@@@+@@@@@++++@@+++++@@+++@@++@@+@+++++@+++@+++++@ . . ", " . @@+++++@++++@+++++@+++++@@@@+++@@@@++@@+++++++@@@+@@++++@@+@+++@@+++@@+++++@@@++++@++++@++++@ . . ", " . @@@@+++@++++@++++@@++++@@++++@@@@+++++@@@@@@@+@@@@@+@++@@++++@@@++++@+++++@@+++@@+@++++@+++++@@ . . ", " . @+++@@@@@@@@@@@@@@@@@@@@@+++@@+++@@@@@++++@@@@@@++++@@@+++++@@++++@@++++@@++++++@@++++@+++++@+@@@ . . ", " . @+++++@++++@++++@+++++@++@@@@@@@@@@@@@@+@@@++@++++@@@+++@@@@++@+@@++++@@++++++@@++@@+@+++++@@@+++@@ . . ", " . @+++++@++++@++++@+++++@++++@++@@@@@@++@@++++@+@@@@+@+@@@++++++@@++++@@++++++@@+++++@@@++++@@+@+++++@ . . ", " . @++++@+++++@++++@+++++@++@@@@+++++++@@@@@@@@@@+++@@@@++++++@@+++@+@@++++++@@+++++@@+++@@+@++++@+++++@ . . ", " . @++++@+++++@++@@@@@@@@@@@++++@@+++@@++++++@+@@@@+++@+++@@@@+++++@@++++++@@+++++@@++++++@@+@++++@@++++@. . ", " . @++++@++@@@@@@+++@@+++++@@@+++@@@@@@@@@@@@@@++++++@+@@@+++++@@@+++@+++@@++++@@@++++++@@++++@@++++@++++.@ . ", " . @++@@@@@++++@@+++++@@++++++@@@@@@@+++++@@+++@@@@@@@@++++@@@@++++++@+@@++++@@+++++++@@++@+++++@++++@+++.+@ . ", " . @@@+++@@++++++@++++++@@++@@+++++++@@@@@@@@@@++++++@+@@@@+++++++++@@@++++@@+++++++@@+++++@+++++@++++@++.++@@. . ", " . @@+++++@@+++++@++++++@@@@@@@@++++++@@+++++@@@@@@@@@+++++++++@@@@++@++@@++++++@@@++@+++++@+++++@++++@+.++++@.... . ", " . @++++++@+++++@@++@@++++++++@@@@@@@@@@@@@+++++++@+++++@@@@@+++++@@@@++++++@@++++++@+++++@+++++@++++@.+++++@ .... . ", " . @++++++@@+++@@@@@@+++++++++++@@++++++++++++++@++@@@@++++++@@@@+++@++++@@++@++++++@+++++@+++++@@+++.@++++++@ .... . ", " . @@+++++@@@@++++++@@@@@@++++@+++++++@@@@@@@@@@@@++++++@@@@+++++++@++@@+++++@++++++@+++++@++++++@++.+@+++@@@@ .... . ", " . @++@@++++@@@@@++++++++++@@@@@@@@@+++++++++@++++@@@@++++++++++@@@@++@+++++@++++++@+++++@+++@@@@@.@@@@@++++@ .... . ", " . @@@++++++++++@@@@@+++@@+++++++++++++++++@+@@@@++++++++++@@@@+@++++@++++++@++++++@+++@@@@@+++@+.+++@+++++@ .... . ", " . .. @@@@+++++++++++++@@@@@@@@@@@@@@@@@@@@@@+++++++++@@@@@@+++++@++++@++++++@+++@@@@@@++@++++++@.+++@++++++@ ... ", " . . @@@@++++++++@++++++++++++++++++++@+++++@@@@@@++++@++++++@++++@+++@@@@@@+++@+++++@+++++@.++++@+++++@ . ", " . .. @@@@+++@++++++++++++++++++++@++@@@@@+@@+@+++++@+++++@+++@@@@@+++@++++++@++++@++++++.++++@++++++@ . ", " . . @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@++++@++++@+++@@@@@@++@++++++@+++++@+++++@+++++.+++++@+++++@ . ", " . .. @++@@@@@@@@@@@@+++@+++++@+++++@+++++@+++++@+++++.+++++@++++++@ . ", " . . @@@+++@+++++@+++++@+++++@+++++@+++++@++++++@++++.@+++++@++++++@ . ", " . . @+++++@+++++@+++++@+++++@++++++@+++++@+++++@+++.+@+++++@++++++@ . ", " . .. @+++++@++++++@+++++@++++@++++++@+++++@++++++@++.+@++++++@++++++@ . ", " . . +@@@@@+@@@@@@@@@@++@+++++@++++++@++++@++++++@++.++@+++++@++++++@ . ", " . .. @+++++@++++++@+++@@+@@@@@+@@@@@@@@@@++@++++++@+.++@++++++@++++++@ . ", " . . @@++++@+++++@++++++@+++++@++++++@+++@@+@@@@@@@@.@++@++++++++++++@ . ", " . . @@@+@+++++@+++++@++++++@++++++@+++++@++++++@+.+@@+@@@@@@+@@@@@@@ . ", " . .. @@@@++@++++++@++++++@+++++@++++++@++++++@+.+++@++++++@++++++@ . ", " . . @@@@+++++@+++++@++++++@+++++@++++++@++.+++@++++++@++++++@ . ", " . .. @@@+@++++++@++++++@+++++@++++++@++.+++@++++++@++++++@ . ", " . . @@@+++++@++++++@+++++@++++++@++.++@++++++@+++++++@ . ", " . .. @@@@+@++++++@+++++@++++++@++.++@++++++@++++++@ . ", " . . @@@++++@++++++@++++++@++.++@++++++@++++++@ . ", " . . @@@+@++++++@++++++@++.++@++++++@++++++@ . ", " ... @@@++++@++++++@+++.++@++++++@++++++@ . ", " .. @@@+@++++++@+++.++@++++++@++++++@ . ", " ... @@@@@+++@+++.+@+++++++@++++++@ . ", " ... @@@@@+.++@+++++++@++++++@ . ", " ... @.@+@++++++@+++++++@ . ", " .. . @@@+++++@++++++@ . ", " ... . @@@@+@++++++@ . ", " ... . @@@+++++@ . ", " ... . @@@@+@. ", " ... . @@. ", " ... . . ", " ... . . ", " .. . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " .. . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " .. . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " .. . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " ... . . ", " .. . . ", " ... .. ", " ... .. ", " .. "}; euler-1.61.0/ChangeLog0000644000175000001440000001045210331355507013332 0ustar ericusersversion 1.61.0 10/2005 * port to GTK2 * minor ui enhancement * autotool * sync interval abs function to Rene Grothman's one. * sync mshuffle function to Rene Grothman's one. * sync rad/degree functions * beginning of sync for yacas access inside euler (not usable yet) version 1.60.6 08/2002 * read_line in input.c and e_load in earray.c handles now properly '\r' characters from DOS files. * bug fix in metaps.c : postscript macros bar and fbar now handle hue the right way. * handles wheel mouse to scroll the text window content. * better event handling : test_key, test_code, syswait hack. * drag and drop support from gtk/gnome apps (xdnd). it works with - ROX - Nautilus drag and drop from Konqueror does not work. * popup menu for terminal editing * modulo bug fix * logspace, xlogplot, ylogplot, xylogplot, xlogmark, ylogmark, xylogmark enhanced and included in util.e (no more in a separate package). * gcm, lcm, primes, isprime and factor functions added to modulo.e version 1.60.5 05/2002 * bug fix in project function in graphics.c * util.e - added figure function which allow to draw quicly several graphs in the graphical window - xlabel, ylabel updates to fill the figure function requirements - xgrid : scale is now sent to the bottom right of the graph - added rotate, animate * bug fix in my scan_dir function in main.c, which causes Segmentation fault * bug fix in the way euler was dealing with input and lineinput in term.c * new : antialiasing function to enable or disable antialiasing in density plots version 1.60.4 04/2002 * complete reorder in source file for future enhancements * bug fix with solaris (scandir made portable) * delete outputs menu item version 1.60 02/2002 * bug in syswait fixed : thanks to Masao Kawamura * better default path handling : patch from Masao Kawamura * selection implemented in the term widget (cut, copy, paste though X clipboard). * demo menu. * graphics enhancements - rainbow color scheme used when huecolor is set to 0. - wire draws with line style. - grids and ticks for 3d framed graphics. version 1.59.1 09/2001 * in scalp.c "truncate" function changed to "accutruncate" to prevent a bug on FreeBSD systems * text window size is stored in eulerrc file. * smarter postscript graphics (don't you find ?). * the current directory is changed when you open or save a notebook. * there is now an install option to the make file. The default install dir is /usr/local so that you can run euler with just euler. * eulerrc resource file and euler.cfg file stored in ~/.euler/ directory * a documentation menu has been added and a html browser option in the preference dialog as well. version 1.59 08/2001 (only for Linux / Unix version) * a few memory leakage corrected * pattern match when open the file selector * bug fixing in the term widget * bug fixing with the color management and clipping in metagtk.c * support for mouse (not selections) in the term widget * option menu with preference box for memory, colors ... * preference file .eulerrc stored in the home dir * the position of dialogs should be smarter * better postscript support for texts version 1.58 08/2001 (only for Linux / Unix version) * every file is back to ANSI C language * enhanced Euler version for Linux / Unix with the port of Euler to the GTK (www.gtk.org) : full featured graphic interface and support for notebook documents. Only color X displays are supported (I think), but maybe does it run the right way on a monochrome display ? * buitin function clip : window clipping functions in graphics.c udf in util.e >help clip for details. * easier animation handling via builtin functions beginpages() and endpages() to encapsulate graphics commands recording playpages(delay) to play what has been recorded pages() to have the number of frames new frames are created when the graphic screen is cleared. The old commands are broken * rewrite of the metafile handling * rewrite and improvement of the postscript output. The size of the postscript picture is given by the size of the graphic window. The pswindow builtin is broken. version 1.57 * basic X11 version euler-1.61.0/COPYING0000644000175000001440000004311007664371156012625 0ustar ericusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. euler-1.61.0/Makefile0000644000175000001440000005070110331246762013223 0ustar ericusers# Makefile.in generated by automake 1.9.4 from Makefile.am. # Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. srcdir = . top_srcdir = . pkgdatadir = $(datadir)/euler pkglibdir = $(libdir)/euler pkgincludedir = $(includedir)/euler top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = /usr/bin/ginstall -c install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO acconfig.h config.guess config.sub depcomp install-sh \ ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(eulerdocdir)" eulerdocDATA_INSTALL = $(INSTALL_DATA) DATA = $(eulerdoc_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = AMTAR = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf AUTOHEADER = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader AUTOMAKE = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = CPP = gcc -E CPPFLAGS = CXX = g++ CXXCPP = g++ -E CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = EGREP = grep -E EXEEXT = F77 = g77 FFLAGS = -g -O2 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 INSTALL_DATA = ${INSTALL} -m 644 INSTALL_DIR = /usr/local INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s LDFLAGS = LIBOBJS = LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LN_S = ln -s LTLIBOBJS = MAKEINFO = ${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo NO_PREFIX_INSTALL_DIR = /usr/local OBJEXT = o PACKAGE = euler PACKAGE_BUGREPORT = PACKAGE_NAME = PACKAGE_STRING = PACKAGE_TARNAME = PACKAGE_VERSION = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config RANLIB = ranlib SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 1.61.0 ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ ac_ct_F77 = g77 ac_ct_RANLIB = ranlib ac_ct_STRIP = strip am__fastdepCC_FALSE = # am__fastdepCC_TRUE = am__fastdepCXX_FALSE = # am__fastdepCXX_TRUE = am__include = include am__leading_dot = . am__quote = am__tar = ${AMTAR} chof - "$$tardir" am__untar = ${AMTAR} xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc datadir = ${prefix}/share exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info install_sh = /home/eric/dev/euler/euler-1.61.0/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localstatedir = ${prefix}/var mandir = ${prefix}/man mkdir_p = mkdir -p -- oldincludedir = /usr/include prefix = /usr/local program_transform_name = s,x,x, sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com sysconfdir = ${prefix}/etc target_alias = SUBDIRS = src docs progs eulerdocdir = ${prefix}/share/doc/euler eulerdoc_DATA = \ README\ COPYING\ AUTHORS\ ChangeLog\ INSTALL\ NEWS\ TODO EXTRA_DIST = $(eulerdoc_DATA) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) $(top_srcdir)/acconfig.h cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-eulerdocDATA: $(eulerdoc_DATA) @$(NORMAL_INSTALL) test -z "$(eulerdocdir)" || $(mkdir_p) "$(DESTDIR)$(eulerdocdir)" @list='$(eulerdoc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(eulerdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(eulerdocdir)/$$f'"; \ $(eulerdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(eulerdocdir)/$$f"; \ done uninstall-eulerdocDATA: @$(NORMAL_UNINSTALL) @list='$(eulerdoc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(eulerdocdir)/$$f'"; \ rm -f "$(DESTDIR)$(eulerdocdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(eulerdocdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-eulerdocDATA install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-eulerdocDATA uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-libtool clean-recursive \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-eulerdocDATA install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-eulerdocDATA \ uninstall-info-am # Copy all the spec files. Of cource, only one is actually used. dist-hook: for specfile in *.spec; do \ if test -f $$specfile; then \ cp -p $$specfile $(distdir); \ fi \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: euler-1.61.0/libtool0000755000175000001440000064060310331246762013163 0ustar ericusers#! /bin/sh # libtoolT - Provide generalized library-building support services. # Generated automatically by (GNU euler 1.61.0) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED="/usr/bin/sed" # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="/usr/bin/sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags=" CXX F77" # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host darkstar: # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=yes # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=no # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=no # Whether or not to optimize for fast installation. fast_install=yes # The host system. host_alias= host=i686-pc-linux-gnu # An echo program that does not interpret backslashes. echo="echo" # The archiver. AR="ar" AR_FLAGS="cru" # A C compiler. LTCC="gcc" # A language-specific compiler. CC="gcc" # Is the compiler the GNU C compiler? with_gcc=yes # An ERE matcher. EGREP="grep -E" # The linker used to build libraries. LD="/usr/i486-slackware-linux/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/usr/bin/nm -B" # A symbol stripping program STRIP="strip" # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=file # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Shared library suffix (normally ".so"). shrext_cmds='.so' # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag=" -fPIC -DPIC" pic_mode=default # What is the maximum length of a command? max_cmd_len=32768 # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="\${wl}--export-dynamic" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=linux # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" # The coded name of the library, if different from the real name. soname_spec="\${libname}\${release}\${shared_ext}\$major" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build and install a shared archive. archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" postinstall_cmds="" postuninstall_cmds="" # Commands used to build a loadable module (assumed same as above if empty) module_cmds="" module_expsym_cmds="" # Commands to strip libraries. old_striplib="strip --strip-debug" striplib="strip --strip-unneeded" # Dependencies to place before the objects being linked to create a # shared library. predep_objects="" # Dependencies to place after the objects being linked to create a # shared library. postdep_objects="" # Dependencies to place before the objects being linked to create a # shared library. predeps="" # Dependencies to place after the objects being linked to create a # shared library. postdeps="" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="" # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method == file_magic. file_magic_cmd="\$MAGIC_CMD" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="" # Flag that forces no undefined symbols. no_undefined_flag="" # Commands used to finish a libtool library installation in a directory. finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" # Transform the output of nm in a C name address pair global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" # This is the shared library runtime path variable. runpath_var=LD_RUN_PATH # This is the shared library path variable. shlibpath_var=LD_LIBRARY_PATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=no # How to hardcode a shared library path into an executable. hardcode_action=immediate # Whether we should hardcode library paths into libraries. hardcode_into_libs=yes # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" # If ld is used when linking, flag to hardcode $libdir into # a binary during linking. This must work even if $libdir does # not exist. hardcode_libdir_flag_spec_ld="" # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator="" # Set to yes if using DIR/libNAME during linking hardcodes DIR into the # resulting binary. hardcode_direct=no # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=no # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=unsupported # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=no # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=unknown # Compile-time system search path for libraries sys_lib_search_path_spec=" /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../ /lib/i486-slackware-linux/3.3.4/ /lib/ /usr/lib/i486-slackware-linux/3.3.4/ /usr/lib/" # Run-time system search path for libraries sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/X11R6/lib /usr/i486-slackware-linux/lib /opt/kde/lib /usr/lib/qt/lib " # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Symbols that must always be exported. include_expsyms="" # ### END LIBTOOL CONFIG # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.10 TIMESTAMP=" (1.1220.2.130 2004/09/19 12:13:49)" # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" ##################################### # Shell function definitions: # This seems to be the best place for them # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xdir="$my_gentop/$my_xlib" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" status=$? if test "$status" -ne 0 && test ! -d "$my_xdir"; then exit $status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename $darwin_archive` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" # Remove the table of contents from the thin files. $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF 2>/dev/null || true $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF\ SORTED 2>/dev/null || true cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" $AR -xo "${darwin_base_archive}" rm "${darwin_base_archive}" cd "$darwin_curdir" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist rm -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir (cd $my_xdir && $AR x $my_xabs) || exit $? fi # $darwin_arches fi # $run ;; *) # We will extract separately just the conflicting names and we will # no longer touch any unique names. It is faster to leave these # extract automatically by $AR in one run. $show "(cd $my_xdir && $AR x $my_xabs)" $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $? if ($AR t "$my_xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$my_xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$my_xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $my_xdir && $AR xN $i $my_xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$my_xdir && $AR xN $i \$my_xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2003 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $EXIT_SUCCESS ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $EXIT_SUCCESS ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $EXIT_SUCCESS ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit $EXIT_FAILURE fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # gcc -m* arguments should be passed to the linker via $compiler_flags # in order to pass architecture information to the linker # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo # but this is not reliable with gcc because gcc may use -mfoo to # select a different linker, different libraries, etc, while # -Wl,-mfoo simply passes -mfoo to the linker. -m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$save_output-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$save_output-${k}.$objext k=`expr $k + 1` output=$output_objdir/$save_output-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadale object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${output}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # GNU ar 2.10+ was changed to match POSIX; thus no paths are # encoded into archives. This makes 'ar r' malfunction in # this piecewise linking case whenever conflicting object # names appear in distinct ar calls; check, warn and compensate. if (for obj in $save_oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 AR_FLAGS=cq fi # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" save_umask=`umask` umask 0077 if $mkdir "$tmpdir"; then umask $save_umask else umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $EXIT_SUCCESS # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # ### BEGIN LIBTOOL TAG CONFIG: CXX # Libtool was configured on host darkstar: # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=yes # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=no # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=no # Whether or not to optimize for fast installation. fast_install=yes # The host system. host_alias= host=i686-pc-linux-gnu # An echo program that does not interpret backslashes. echo="echo" # The archiver. AR="ar" AR_FLAGS="cru" # A C compiler. LTCC="gcc" # A language-specific compiler. CC="g++" # Is the compiler the GNU C compiler? with_gcc=yes # An ERE matcher. EGREP="grep -E" # The linker used to build libraries. LD="/usr/i486-slackware-linux/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/usr/bin/nm -B" # A symbol stripping program STRIP="strip" # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=file # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Shared library suffix (normally ".so"). shrext_cmds='.so' # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag=" -fPIC -DPIC" pic_mode=default # What is the maximum length of a command? max_cmd_len=32768 # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="\${wl}--export-dynamic" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=linux # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" # The coded name of the library, if different from the real name. soname_spec="\${libname}\${release}\${shared_ext}\$major" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build and install a shared archive. archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" postinstall_cmds="" postuninstall_cmds="" # Commands used to build a loadable module (assumed same as above if empty) module_cmds="" module_expsym_cmds="" # Commands to strip libraries. old_striplib="strip --strip-debug" striplib="strip --strip-unneeded" # Dependencies to place before the objects being linked to create a # shared library. predep_objects="/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../crti.o /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/crtbeginS.o" # Dependencies to place after the objects being linked to create a # shared library. postdep_objects="/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/crtendS.o /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../crtn.o" # Dependencies to place before the objects being linked to create a # shared library. predeps="" # Dependencies to place after the objects being linked to create a # shared library. postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="-L/usr/lib/gcc-lib/i486-slackware-linux/3.3.4 -L/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib -L/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../.." # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method == file_magic. file_magic_cmd="\$MAGIC_CMD" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="" # Flag that forces no undefined symbols. no_undefined_flag="" # Commands used to finish a libtool library installation in a directory. finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" # Transform the output of nm in a C name address pair global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" # This is the shared library runtime path variable. runpath_var=LD_RUN_PATH # This is the shared library path variable. shlibpath_var=LD_LIBRARY_PATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=no # How to hardcode a shared library path into an executable. hardcode_action=immediate # Whether we should hardcode library paths into libraries. hardcode_into_libs=yes # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" # If ld is used when linking, flag to hardcode $libdir into # a binary during linking. This must work even if $libdir does # not exist. hardcode_libdir_flag_spec_ld="" # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator="" # Set to yes if using DIR/libNAME during linking hardcodes DIR into the # resulting binary. hardcode_direct=no # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=no # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var= # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=no # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=unknown # Compile-time system search path for libraries sys_lib_search_path_spec=" /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../ /lib/i486-slackware-linux/3.3.4/ /lib/ /usr/lib/i486-slackware-linux/3.3.4/ /usr/lib/" # Run-time system search path for libraries sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/X11R6/lib /usr/i486-slackware-linux/lib /opt/kde/lib /usr/lib/qt/lib " # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="" # Symbols that must always be exported. include_expsyms="" # ### END LIBTOOL TAG CONFIG: CXX # ### BEGIN LIBTOOL TAG CONFIG: F77 # Libtool was configured on host darkstar: # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=yes # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=no # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=no # Whether or not to optimize for fast installation. fast_install=yes # The host system. host_alias= host=i686-pc-linux-gnu # An echo program that does not interpret backslashes. echo="echo" # The archiver. AR="ar" AR_FLAGS="cru" # A C compiler. LTCC="gcc" # A language-specific compiler. CC="g77" # Is the compiler the GNU C compiler? with_gcc=yes # An ERE matcher. EGREP="grep -E" # The linker used to build libraries. LD="/usr/i486-slackware-linux/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/usr/bin/nm -B" # A symbol stripping program STRIP="strip" # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=file # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Shared library suffix (normally ".so"). shrext_cmds='.so' # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag=" -fPIC" pic_mode=default # What is the maximum length of a command? max_cmd_len=32768 # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag="" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="\${wl}--export-dynamic" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=linux # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" # The coded name of the library, if different from the real name. soname_spec="\${libname}\${release}\${shared_ext}\$major" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build and install a shared archive. archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" postinstall_cmds="" postuninstall_cmds="" # Commands used to build a loadable module (assumed same as above if empty) module_cmds="" module_expsym_cmds="" # Commands to strip libraries. old_striplib="strip --strip-debug" striplib="strip --strip-unneeded" # Dependencies to place before the objects being linked to create a # shared library. predep_objects="" # Dependencies to place after the objects being linked to create a # shared library. postdep_objects="" # Dependencies to place before the objects being linked to create a # shared library. predeps="" # Dependencies to place after the objects being linked to create a # shared library. postdeps="" # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path="" # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method == file_magic. file_magic_cmd="\$MAGIC_CMD" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="" # Flag that forces no undefined symbols. no_undefined_flag="" # Commands used to finish a libtool library installation in a directory. finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" # Transform the output of nm in a C name address pair global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" # This is the shared library runtime path variable. runpath_var=LD_RUN_PATH # This is the shared library path variable. shlibpath_var=LD_LIBRARY_PATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=no # How to hardcode a shared library path into an executable. hardcode_action=immediate # Whether we should hardcode library paths into libraries. hardcode_into_libs=yes # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" # If ld is used when linking, flag to hardcode $libdir into # a binary during linking. This must work even if $libdir does # not exist. hardcode_libdir_flag_spec_ld="" # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator="" # Set to yes if using DIR/libNAME during linking hardcodes DIR into the # resulting binary. hardcode_direct=no # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=no # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=unsupported # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=no # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=unknown # Compile-time system search path for libraries sys_lib_search_path_spec=" /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/lib/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../i486-slackware-linux/3.3.4/ /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../ /lib/i486-slackware-linux/3.3.4/ /lib/ /usr/lib/i486-slackware-linux/3.3.4/ /usr/lib/" # Run-time system search path for libraries sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/X11R6/lib /usr/i486-slackware-linux/lib /opt/kde/lib /usr/lib/qt/lib " # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Symbols that must always be exported. include_expsyms="" # ### END LIBTOOL TAG CONFIG: F77 euler-1.61.0/config.status0000755000175000001440000011376410331246762014311 0ustar ericusers#! /bin/sh # Generated by configure. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=${CONFIG_SHELL-/bin/sh} ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 config_files=" Makefile src/Makefile progs/Makefile progs/user/Makefile docs/Makefile docs/french/Makefile docs/german/Makefile docs/german/images/Makefile docs/images/Makefile docs/reference/Makefile" config_headers=" config.h" config_commands=" depfiles" ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." ac_cs_version="\ config.status configured by ./configure, generated by GNU Autoconf 2.59, with options \"\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=. INSTALL="/usr/bin/ginstall -c" # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi if $ac_cs_recheck; then echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6 exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion fi # # INIT-COMMANDS section. # AMDEP_TRUE="" ac_aux_dir="." for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "progs/Makefile" ) CONFIG_FILES="$CONFIG_FILES progs/Makefile" ;; "progs/user/Makefile" ) CONFIG_FILES="$CONFIG_FILES progs/user/Makefile" ;; "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/french/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/french/Makefile" ;; "docs/german/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/german/Makefile" ;; "docs/german/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/german/images/Makefile" ;; "docs/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;; "docs/reference/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF s,@SHELL@,/bin/sh,;t t s,@PATH_SEPARATOR@,:,;t t s,@PACKAGE_NAME@,,;t t s,@PACKAGE_TARNAME@,,;t t s,@PACKAGE_VERSION@,,;t t s,@PACKAGE_STRING@,,;t t s,@PACKAGE_BUGREPORT@,,;t t s,@exec_prefix@,${prefix},;t t s,@prefix@,/usr/local,;t t s,@program_transform_name@,s,x,x,,;t t s,@bindir@,${exec_prefix}/bin,;t t s,@sbindir@,${exec_prefix}/sbin,;t t s,@libexecdir@,${exec_prefix}/libexec,;t t s,@datadir@,${prefix}/share,;t t s,@sysconfdir@,${prefix}/etc,;t t s,@sharedstatedir@,${prefix}/com,;t t s,@localstatedir@,${prefix}/var,;t t s,@libdir@,${exec_prefix}/lib,;t t s,@includedir@,${prefix}/include,;t t s,@oldincludedir@,/usr/include,;t t s,@infodir@,${prefix}/info,;t t s,@mandir@,${prefix}/man,;t t s,@build_alias@,,;t t s,@host_alias@,,;t t s,@target_alias@,,;t t s,@DEFS@,-DHAVE_CONFIG_H,;t t s,@ECHO_C@,,;t t s,@ECHO_N@,-n,;t t s,@ECHO_T@,,;t t s,@LIBS@,,;t t s,@INSTALL_PROGRAM@,${INSTALL},;t t s,@INSTALL_SCRIPT@,${INSTALL},;t t s,@INSTALL_DATA@,${INSTALL} -m 644,;t t s,@CYGPATH_W@,echo,;t t s,@PACKAGE@,euler,;t t s,@VERSION@,1.61.0,;t t s,@ACLOCAL@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run aclocal-1.9,;t t s,@AUTOCONF@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoconf,;t t s,@AUTOMAKE@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run automake-1.9,;t t s,@AUTOHEADER@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run autoheader,;t t s,@MAKEINFO@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run makeinfo,;t t s,@install_sh@,/home/eric/dev/euler/euler-1.61.0/install-sh,;t t s,@STRIP@,strip,;t t s,@ac_ct_STRIP@,strip,;t t s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t s,@mkdir_p@,mkdir -p --,;t t s,@AWK@,gawk,;t t s,@SET_MAKE@,,;t t s,@am__leading_dot@,.,;t t s,@AMTAR@,${SHELL} /home/eric/dev/euler/euler-1.61.0/missing --run tar,;t t s,@am__tar@,${AMTAR} chof - "$$tardir",;t t s,@am__untar@,${AMTAR} xf -,;t t s,@CC@,gcc,;t t s,@CFLAGS@,,;t t s,@LDFLAGS@,,;t t s,@CPPFLAGS@,,;t t s,@ac_ct_CC@,gcc,;t t s,@EXEEXT@,,;t t s,@OBJEXT@,o,;t t s,@DEPDIR@,.deps,;t t s,@am__include@,include,;t t s,@am__quote@,,;t t s,@AMDEP_TRUE@,,;t t s,@AMDEP_FALSE@,#,;t t s,@AMDEPBACKSLASH@,\,;t t s,@CCDEPMODE@,depmode=gcc3,;t t s,@am__fastdepCC_TRUE@,,;t t s,@am__fastdepCC_FALSE@,#,;t t s,@CPP@,gcc -E,;t t s,@EGREP@,grep -E,;t t s,@build@,i686-pc-linux-gnu,;t t s,@build_cpu@,i686,;t t s,@build_vendor@,pc,;t t s,@build_os@,linux-gnu,;t t s,@host@,i686-pc-linux-gnu,;t t s,@host_cpu@,i686,;t t s,@host_vendor@,pc,;t t s,@host_os@,linux-gnu,;t t s,@LN_S@,ln -s,;t t s,@ECHO@,echo,;t t s,@AR@,ar,;t t s,@ac_ct_AR@,ar,;t t s,@RANLIB@,ranlib,;t t s,@ac_ct_RANLIB@,ranlib,;t t s,@CXX@,g++,;t t s,@CXXFLAGS@,-g -O2,;t t s,@ac_ct_CXX@,g++,;t t s,@CXXDEPMODE@,depmode=gcc3,;t t s,@am__fastdepCXX_TRUE@,,;t t s,@am__fastdepCXX_FALSE@,#,;t t s,@CXXCPP@,g++ -E,;t t s,@F77@,g77,;t t s,@FFLAGS@,-g -O2,;t t s,@ac_ct_F77@,g77,;t t s,@LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t s,@PKG_CONFIG@,/usr/bin/pkg-config,;t t s,@GTK_CFLAGS@,-DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include ,;t t s,@GTK_LIBS@,-Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 ,;t t s,@NO_PREFIX_INSTALL_DIR@,/usr/local,;t t s,@INSTALL_DIR@,/usr/local,;t t s,@LIBOBJS@,,;t t s,@LTLIBOBJS@,,;t t CEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } sed "/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; } :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in # Handle all the #define templates only if necessary. if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then # If there are no defines, we may have an empty if/fi : cat >$tmp/defines.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in fi # grep # Handle all the #undef templates cat >$tmp/undefs.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done { (exit 0); exit 0; } euler-1.61.0/config.h0000644000175000001440000000351110331174331013166 0ustar ericusers/* config.h. Generated by configure. */ /* config.h.in. Generated from configure.in by autoheader. */ /* #undef ENABLE_NLS */ /* #undef HAVE_CATGETS */ /* #undef HAVE_GETTEXT */ /* #undef HAVE_LC_MESSAGES */ /* #undef HAVE_STPCPY */ /* #undef HAVE_LIBSM */ /* #undef PACKAGE_LOCALE_DIR */ #define INSTALL_DIR "/usr/local" #define SOURCE_DIR "/home/eric/dev/euler/euler-1.61.0" /* #undef GETTEXT_PACKAGE */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Name of package */ #define PACKAGE "euler" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "1.61.0" euler-1.61.0/stamp-h10000644000175000001440000000002710331246762013134 0ustar ericuserstimestamp for config.h