3
3
# the LGPL.
4
4
# To use:
5
5
# restart; read "log-de.mpl";
6
- #TODO Gappa proof out for Paterson/Stockmayer
6
+ #TODO output scripts for the Gappa proof out for Paterson/Stockmayer
7
7
Digits := 100:
8
8
9
9
interface(quiet=true):
79
79
polyQuick := x * (1 + (x * ((-0.50000000000000000000000000000000000000000000000000000000000000e0) + (x * (0.33333333333333342585191871876304503530263900756835937500000000e0 + (x * ((-0.24999999998423708125194764306797878816723823547363281250000000e0) + (x * (0.19999999996748479835773082413652446120977401733398437500000000e0 + (x * ((-0.16666957260954737285452154083031928166747093200683593750000000e0) + (x * 0.14286056338555042088955815415829420089721679687500000000000000e0)))))))))))):
80
80
81
81
# validated infinite norms given by Christoph's tool
82
- epsilonApproxQuick := 2^(-64.119667587220 ):
83
- deltaApproxQuick := 2^(-72.230387592106 ):
82
+ epsilonApproxQuick := 2^(-64.119667587221 ):
83
+ deltaApproxQuick := 2^(-72.230387592107 ):
84
84
fi:
85
85
printf(" rel approximation error for the quick phase is 2^(%2f)\n", log2(epsilonApproxQuick) ) :
86
86
printf(" abs approximation error for the quick phase is 2^(%2f)\n", log2(deltaApproxQuick) ) :
@@ -161,7 +161,13 @@ filename:="TEMPLOG/log-de.h":
161
161
fd:=fopen(filename, WRITE, TEXT):
162
162
163
163
fprintf(fd, "/*File generated by maple/log-de.mpl*/\n\n"):
164
- fprintf(fd, "#if 0\n#define ESTRIN\n#else\n#define PATERSON\n#endif\n"):
164
+ # some constants
165
+ fprintf(fd, "#define L %d\n", L):
166
+ fprintf(fd, "#define MAXINDEX %d\n", MAXINDEX):
167
+ fprintf(fd, "#define INDEXMASK %d\n", 2^L-1):
168
+ fprintf(fd, "static const double two64 = %1.25e ;\n", evalf(2^64)):
169
+
170
+ fprintf(fd, "#if 1\n#define ESTRIN\n#else\n#define PATERSON\n#endif\n"):
165
171
166
172
fprintf(fd, "#if defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64)\n\n"):
167
173
@@ -177,11 +183,11 @@ fprintf(fd, "#endif/* PATERSON*/\n\n"):
177
183
178
184
fprintf(fd, "#ifdef ESTRIN\n"):
179
185
fprintf(fd, " /* Coefficients are read directly from the array thanks to the following macros */ \n"):
180
- for i from PolyDegreeQuick to 1 by -1 do
186
+ for i from PolyDegreeQuick to 2 by -1 do
181
187
fprintf(fd, "#define c%d c[%d]\n", i, PolyDegreeQuick-i):
182
188
od:
183
- fprintf(fd, "static const long double c[%d] = {\n",PolyDegreeQuick):
184
- for i from PolyDegreeQuick to 1 by -1 do
189
+ fprintf(fd, "static const double c[%d] = {\n",PolyDegreeQuick):
190
+ for i from PolyDegreeQuick to 2 by -1 do
185
191
fprintf(fd, " /* c%d = */ %1.50eL, \n", i, coeff(polyQuick,x,i)):
186
192
od:
187
193
fprintf(fd, "}; \n \n"):
@@ -199,7 +205,7 @@ fprintf(fd, "#endif/* ESTRIN */\n\n"):
199
205
fprintf(fd, "#define PREFETCH_POLY_ACCURATE \n"):
200
206
fprintf(fd, "\n#else /* not(defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64)),\n assuming Itanium, otherwise we shouldn't be there */ \n\n"):
201
207
fprintf(fd, "#define PREFETCH_POLY_QUICK "):
202
- for i from PolyDegreeQuick to 1 by -1 do
208
+ for i from PolyDegreeQuick to 2 by -1 do
203
209
fprintf(fd, "c%d=c[%d]; ", i, PolyDegreeQuick-i):
204
210
od:
205
211
fprintf(fd, "\n#define PREFETCH_POLY_ACCURATE "):
@@ -215,12 +221,8 @@ fprintf(fd, "#endif/* ESTRIN */\n\n"):
215
221
fprintf(fd, "\n#endif /* defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64) */ \n\n"):
216
222
217
223
# Various constants
218
- fprintf(fd, "#define L %d\n", L):
219
- fprintf(fd, "#define MAXINDEX %d\n", MAXINDEX):
220
- fprintf(fd, "#define INDEXMASK %d\n", 2^L-1):
221
224
fprintf(fd, "static const long double log2H = %1.50eL ;\n", log2h):
222
225
fprintf(fd, "static const long double log2L = %1.50eL ;\n", log2l):
223
- fprintf(fd, "static const long double two64 = %1.50eL ;\n", evalf(2^64)):
224
226
225
227
# The polynomials
226
228
# polynomial for quick phase
@@ -303,51 +305,51 @@ for j from 0 to 2^L-1 do
303
305
printf("\n************ DONE TEMPLOG/log-de*.sed ************\n");
304
306
305
307
# A shell script to use them
306
- filename:="../gappa/run-log-de-proof.sh":
308
+ filename:="../gappa/log-de/ run-log-de-proof.sh":
307
309
fd:=fopen(filename, WRITE, TEXT):
308
310
fprintf(fd, "#!/bin/sh\n"):
309
311
fprintf(fd, "# You probably need to edit the path to the gappa executable\n"):
310
- fprintf(fd, "GAPPA=~/gappa/src/gappa\n"):
312
+ fprintf(fd, "GAPPA=~/local/src/ gappa/src/gappa\n"):
311
313
312
314
fprintf(fd, "echo Accurate phase, case E=0, index=0: 1>&2\n"):
313
- fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de-acc-index0-E0.gappa | $GAPPA \n"):
315
+ fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de/log-de -acc-index0-E0.gappa | $GAPPA \n"):
314
316
315
317
fprintf(fd, "echo Accurate phase, case E!=0, index=0 1>&2\n"):
316
- fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de-acc-index0-E1N.gappa | $GAPPA \n"):
318
+ fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de/log-de -acc-index0-E1N.gappa | $GAPPA \n"):
317
319
318
320
fprintf(fd, "for num in `seq 1 %d`; do\n", 2^L-1):
319
321
fprintf(fd, " echo Accurate phase, case E=0, index=$num 1>&2\n"):
320
- fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de-acc-index1N-E0.gappa | $GAPPA \n"):
322
+ fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de/log-de -acc-index1N-E0.gappa | $GAPPA \n"):
321
323
fprintf(fd, " echo 1>&2\n"):
322
324
fprintf(fd, "done\n"):
323
325
324
326
fprintf(fd, "for num in `seq 1 %d`; do\n", 2^L-1):
325
327
fprintf(fd, " echo Accurate phase, case E!=0, index = $num 1>&2 \n"):
326
- fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de-acc-index1N-E1N.gappa | $GAPPA \n"):
328
+ fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de/log-de -acc-index1N-E1N.gappa | $GAPPA \n"):
327
329
fprintf(fd, " echo 1>&2\n"):
328
330
fprintf(fd, "done\n\n"):
329
331
330
332
331
333
fprintf(fd, "echo Quick phase, case E=0, index=0 1>&2\n"):
332
- fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de-index0-E0.gappa | $GAPPA \n"):
334
+ fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de/log-de -index0-E0.gappa | $GAPPA \n"):
333
335
fprintf(fd, " echo 1>&2\n"):
334
336
335
337
fprintf(fd, "echo Quick phase, case E!=0, index=0 1>&2 \n"):
336
- fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de-index0-E1N.gappa | $GAPPA \n"):
338
+ fprintf(fd, "sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_0.sed ../gappa/log-de/log-de -index0-E1N.gappa | $GAPPA \n"):
337
339
fprintf(fd, " echo 1>&2\n"):
338
340
339
341
340
342
fprintf(fd, "for num in `seq 1 %d`; do\n", 2^L-1):
341
343
fprintf(fd, " echo Quick phase, for all E, index=$num 1>&2\n"):
342
- fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de-index1N-E0N.gappa | $GAPPA \n"):
344
+ fprintf(fd, " sed -f ../maple/TEMPLOG/polynomials.sed -f ../maple/TEMPLOG/log-de_$num.sed ../gappa/log-de/log-de -index1N-E0N.gappa | $GAPPA \n"):
343
345
fprintf(fd, " echo 1>&2\n"):
344
346
fprintf(fd, "done\n"):
345
347
346
348
fclose(fd):
347
349
348
350
printf("\n************ DONE TEMPLOG/run-log-de-proof.sh ************\n"):
349
351
printf("Now you should run \n"):
350
- printf(" sh ../gappa/run-log-de-proof.sh 2> ../maple/TEMPLOG/Gappa.out\n"):
352
+ printf(" sh ../gappa/log-de/ run-log-de-proof.sh 2> ../maple/TEMPLOG/Gappa.out\n"):
351
353
printf(" (You probably need to edit the path to the gappa executable within run-log-de-proof.sh)\n"):
352
354
printf("Then look at TEMPLOG/Gappa.out. It shouldn't contain 'some enclosures were not satisfied'.\n If it does, report it !\n"):
353
355
0 commit comments