forked from radii/ggnfs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changelog
1577 lines (1414 loc) · 76.7 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
03/09/07 (frmky)
* Added an optional GMP version of updateEps_ab(), but left it
disabled by default. The GMP version has been extensively
tested and works properly.
* Added prime power check to input number in makefb.c.
* Changed default maxrelsinff from 0 to 32 in factLat.pl. 0 is
excellent when rebuilding a matrix, but for the initial run it
leads to matrices that are very dense.
01/04/07 (frmky)
* More changes to montgomery_sqrt.c to eliminate another floating
point overflow. This does not address the concern noted below.
12/24/06 (frmky)
* Removed -ffast-math since it seems to be triggering a bug in sqrt.
* Incorporated patch from Tom Wu to prevent an overflow in sqrt.
He notes that a possible overflow condition still exists in
computeDelta(). It is possible for the code that finds the lowest
weight column to get a floating point overflow.
07/27/06 (asl)
* Matrix save interval is now 300 seconds by default.
07/23/06 (asl)
* Minor dead code cleanup from procrels.
* Added SQUFOF for relations factoring. Got 2x speedup for short
format.
07/23/06 (asl)
* Sten probably forget to add, that there is new "short" relation
format suported. It can reduce bandwidth, if you're transfering
somehow. Sievers now accepts "-s" switch. Procrels determine the
actual format automaticaly, but there is also "-s" switch there
to force usign short format for dumping & pruning.
Please note, that relation processing time is somehow 30x more
for short format comparing to usually one. You've been warned! :)
07/22/06 (asl)
* Separated matrix pruning into separate program.
* factLat.pl was changed in order to track changes in flow.
* Added smart adjustment of maxRelsInFF: if supplied value is
zero, program will select it as small as possible.
* Set default for maxRelsInFF for factLat.pl to zero.
07/21/06 (relf)
* GGNFS_VERBOSE introduced (on by default)
* some auxiliary output in rels.c wrapped with #ifdef GGNFS_VERBOSE .. #endif
07/07/06 (relf)
* minor enhacements
* forzles' patch http://groups.yahoo.com/group/ggnfs/message/1894 applied
6/10/06 (asl)
* Fix for PPC by Mark Rodenkirch
* Added -nolpcount command line switch (by forzles)
* Bugfix for M->maxDataSize was not setup correctly (by forzles)
6/9/06 (asl)
* Incorporated Cygwin compatibility fix by R. Backstrom
* Workaround of GMP 4.2 bug - use GMP_BUG switch in makefile.
(http://swox.com/list-archives/gmp-bugs/2006-May/000475.html)
6/8/06 (frmky)
* Removed unused readRawS32() and writeRawS32() prototypes from ggnfs.h
* Incorporate the patch by forzles to fix the odd exponent error
* Silence the frequent, harmless warnings in the lattice sieve
* Change the extension of the plots from jpg to png to reflect that
they are actually in PNG format
05/24/06 (BRG)
* Updated VC++ version 8 build project to use GMP-4.2.1
05/13/06 (asl)
* Some compartibility changes.
* Merged latest patches by G.W. Reynolds & tested under mingw32.
03/16/06 (BRG)
* Updated VC++ version 8 build project to include matrix save
routines and to work with my current VC++ build for GMP 4.1.4
03/11/06 (asl)
* Ported & tested matrix save\resume routines under mingw32.
Maybe this will also work while compiled by Visual C++. ;)
03/10/06 (asl)
* Added matrix save\resume routine by G.W. Reynolds.
02/02/06 (relf)
* NEED_ASPRINTF, NEED_GETLINE are replaced with GGNFS_GNU_MISSING
which is now defined in ggnfs.h
* fixed all affected headers
* WARNING: if GNU extensions are used, <stdio.h> should not be included directly
but through ggnfs.h or at least after it
12/12/05 (trilliwig)
* Header file fixes for Linux.
12/02/05 (relf)
* matbuild-tpie.c merged with matbuild.c
* matbuild.c minor cleanups
12/01/05 (relf)
* file size/offset types changed to off_t
* ULL_NO_UL is defined for 32-bit platforms
* minor cleanups in mpz-ull.c
* rel_list members became unsigned
* readRawS32/writeRawS32 definition moved to ggnfs.h
11/16/05 (aSL)
* Some factLat.pl changes by Mark Rodenkirch
11/04/05 (relf)
* __ppc64__ is used together with __ppc__
* GNFS_CS32 is removed, bc_t is defined as `unsigned long'
* ULL_NO_UL is back, it must be defined whenever 'long long' is different from 'long'
10/30/05 (trilliwig)
* Patched factLat.pl with Bob Backstrom's suggested change. Updated q0-q1
ranges are printed in ggnfs.log.
* Minor update in misc.c to correct multiple printings of a status message.
9/30/05 (trilliwig)
* It makes no sense to disable HAVE_FLOAT64 if HAVE_ASM_INTEL is defined.
This causes pol51m0b to miss essential polynomials and causes the abnormal
exit messages "lambda-comp" or "ull5a5p-comp". The only bug that exists
with both options enabled is that the compiled binary is completely broken
if we allow compiler optimization with GCC 3.4. This appears to be a bug
with GCC 3.4, but disabling HAVE_FLOAT64 for MinGW is NOT a proper
workaround because it leaves pol5 compiles broken on 32-bit Linux! The
correct workaround is disabling compiler optimizations for pol5 when
GCC 3.4 is used.
* Modified factLat.pl so pol5 errors are fatal errors again.
* Modified matbuild so errors from checkMat() are not immediately fatal.
The code is there to delete problematic rows, but it was never used
because matbuild would exit unconditionally. There is similar code in
matsolve, but I think it is better to keep the hair-trigger exit there.
* -Os is only beneficial for the lattice siever, and even then only on
some machines (it is slower than -O3 on a Prescott). Changed default
CFLAGS to use -O3 and added -Os to CFLAGS in the src/lasieve4 directory.
As an aside, using -funroll-loops and -finline-functions with -Os is
counterproductive.
9/27/05 (relf)
* -fmove-all-movables option removed as not supported by gcc 4.x
* minor cleanups
9/25/05 (Sten)
* Initial support for Win64 target (see VC8 solution files).
* removed ASM_MPQS_SIEVER;ASM_MPQS_EVAL;ASM_MPQS_TD definitions from the
VC8 projects properties for ggnfs-lasieve projects (currently asm-optimized
versions do not work for some reason).
9/24/05 (trilliwig)
* Ensure prand() returns a 32-bit quantity.
* Added a -test mode to matsolve. This will go into an infinite loop
testing the MultB64() and MultB_T64() routines with the given matrix.
This can help expose hardware errors or miscompilations.
* Freed memory used in testMult().
* Tweaked the status update message for Block Lanczos so it doesn't
overflow the line.
* Added dependencies for strip target.
9/18/05 (frmky)
* Update blanczos-no-mmx.c to include multiplication tests and timing.
9/18/05 (trilliwig)
* Changed char* variable basename to base_name (conflicts with the
basename() library function).
* Added Makefile rule for *.S files and changed *.s rule to use $(CC)
(so I can easily add -m32 to CFLAGS when needed and have it work).
* Added prescott target and cleaned up a few warnings.
9/16/05 (trilliwig)
* Fixed type mismatch with rho_factor() causing procrels crashes on 64-bit
machines.
* mpz_poly_t.degree and getline() MUST be signed. It is a bug if they are
unsigned.
* Added nocona target for Intel chips with AMD64 support.
9/15/05 (Brian Gladman)
* minor fix for VC7 build files
9/10/05 (asl)
* Some small fixes in the sprit of further "config" files.
* Removed forceStop from ggnfs.h
9/3/05 (trilliwig)
* Cleaned up some redundant compiler flags and defines. In particular,
-mtune is implied by -march. Not to mention that in versions of gcc
before 3.4, -mtune is not recognized (it was -mcpu).
* Forced compilation flags for the Franke polynomial selection tools to
use -O0 (no optimization). Optimization breaks pol51* on Linux and MinGW,
at least with gcc 3.4. This allows us to use long doubles (HAVE_FLOAT64)
under MinGW now, so that should mitigate the performance impact somewhat.
* Changed getline() return type in src/if.[ch]. It must return a signed
size (ssize_t). This fixes the pol51m0b breakage under Linux. Also
added explicit typing of compute_root()'s argument in src/pol5/pol51m0?.c.
* The lattice siever no longer opens ggnfs.log in binary mode, so those
output lines should now be correctly terminated under Windows.
* Removed bigint library specification as GMP from factLat.pl. Apparently
the GMP BigInt library is not available to Perl on some systems.
* Modified factLat.pl to print q0 values to ggnfs.log at beginning of
lattice sieve runs.
* Added Brian Gladman's definitions of ssize_t to the MS portion of ggnfs.h.
8/29/05 (Brian Gladman)
* added matbuild-tpie to the VC7 and VC8 build projects (could not do
this for VC6 as I no longer use this version)
8/29/05 (Brian Gladman)
* change to VC6, VC7 and VC8 build organisation to provide individual
build directories (to avoid object file version conflicts)
* copied Intel syntax assembler files from VC++ build directory
to src\lasieve4\piii and src\pol5 so they are alongside their
AT&T equivalents
8/27/05 (Brian Gladman)
* change to VC6 and VC7 project files to make move to VC8 easier
8/26/05 (Brian Gladman)
* minor update to correct an error in the VC++ project build files
8/24/05 (trilliwig)
* Added LOCALINC to include paths in Makefiles for src/lasieve4/piii,
src/lasieve4/ppc32, and src/pol5. Anyone able to try if the itanium
or mips lattice siever code works? :)
* Added Makefile to tests/snfs_small
* Eliminated _MSC_VER define when compiling under MinGW
* Added copy of pol51-intel executables to a name without the suffix, so
the factLat.pl script can still find them. It really should be a
symlink, but under MinGW, "ln -s" is a synonym for cp, and cp does not
treat relative pathnames in the same way that ln does.
* Fixed makesymlinks.sh
8/24/05 (relf)
* lasieve-asm.h renamed to siever-config.h
* 'ppc32' now linked to 'asm' (very much like 'piii')
* Makefile's unified: no Makefile[.x86|.ppc|whatever] anymore
* underscore problem fixed, ASM_UL removed
* pol5/Makefile became $HOST-driven; "-intel" suffix removed from binaries
8/23/05 (Brian Gladman)
* minor change to define strcasecmp as _strcmpi for VC++ and
to include the 'fake' VC++ unistd.h file in if.c Replace
the define of _MSC_VER in ecm4c.c in order to simplify
the use of a VC++ config file.
8/23/05 (Brian Gladman)
* some minor changes to allow VC++ to use the inline version of
MULMOD32 instead of a subroutine (VC++ inline assembler can't
deal directly with structures)
* removal of special VC++ versions of if.c and if.h as the
standard versions now work
* changed a define in /piii/lasieve-asm.h to be right way round
(is now '#define modinv32 asm_modinv32', was reversed)
* added {} brackets in gnfs-lasieve4e.c to avoid need for C99
with an 'in-code' declaration
8/22/05 (asl)
* Some code and defines cleanup in blanczos64.c
8/22/05 (relf)
* Minor header fixes and cleanups
* Applied Dmitri Gribenko's patches to Makefiles (w/ minor postfixes)
* Makefile.ppc and Makefile.x86_64 now joined into Makefile since
they do generic things while Makefile.x86 does x86-specific things
* TODO: make single Makefiles for all targets
8/20/05 (relf)
* example pol5/rsa512* moved to tests/rsa512_pol5/
* lasieve4/piii/mpsq-hack.c moved to lasieve4/mpqs.c and shared
* x86_64 siever now works
* x86_64 assembler code is added to gnfs-lasieve4e.c (but it seems pointless)
8/19/05 (asl)
* Renamed BIGENDIAN define to GGNFS_BIGENDIAN due to collision with
winsock2.h
8/19/05 (Brian Gladman)
* Lots of changes to restore broken VC++ compilation
8/19/05 (relf)
* common code from lasieve4/ and pol5/ moved to src/ and shared
* extra types definitions removed in favor of #including ggnfs.h
* pol5 fixed with respect to suppost non-i386 platforms
* most "(unsigned) long long" types changed to "(u)int64_t"
* TODO: unify used types, e.g., use the same name for "u64", "u64_t", "uint64_t" etc.
* compiled binaries are placed in bin/ directory
8/18/05 (asl)
* Added some small snfs_test. tst250 runs something about 30 mins for me,
so some quick test is required (F7 is still broken :)
Thanks to Dmitriy Gribenko for .poly file.
* Applied matbuild fixes to matbuild-tpie.
8/18/05 (trilliwig)
* Updated Perl script to properly handle the knowndiv option from the
.poly file when checking if sqrt has found all the prime divisors of N.
* Removed include/version.h from repository. A 'make' from the top-level
directory should recreate it.
8/17/05 (asl)
* Fixed mingw32 miscompilation.
8/17/05 (relf)
* "out-of-box" support for x86_64 target
* target can be specified in the master Makefile
* fixed some minor problem with makefiles
* some missed #include's recovered
* major problems w/ gcc 4.0 compilation resolved
* extra "%l" specificators removed
* type conversion applied to printf() arguments where required
* implicit function declarations made explicit
* other minor issues fixed
8/15/05 (frmky)
* Fixed a small typo in combparts_tpie.cpp.
8/12/05 (asl)
* Fixed mingw32 miscompilation.
* Changed "%lu" to PRIu32.
* Integrated matbuild-tpie experimental package. Please read
matbuild-tpie.txt in the experimental/ directory.
* Some changes in optimization parameters. Added -ffast-math and
increased function size for inlining. Got some speed-up.
8/10/05 (Brian Gladman)
* Updated various files to repair the broken VC++ compilation
* Added VC++ inline assembler to blanczos64.c
7/20/05 (asl)
* Fixed some boundary cross bug in combinedSize().
7/17/05 (trilliwig)
* Converted sources to use standard C9x int types defined in inttypes.h.
Corrected a number of format specifiers for printf/scanf. Changed
a couple types here and there to correct possible problems.
* Added check that the aligned memory functions actually return aligned
memory in the MMX Lanczos code.
7/14/05 (trilliwig)
* Patched factLat.pl so it automatically applies more generous parameters
for SNFS factorizations where the polynomial degree is not optimal.
* Reorganized mpz_fact_factorEasy() so the control flow makes more sense
and doesn't repeat operations like trial division unnecessarily.
7/12/05 (trilliwig)
* Updated mpz_fact_factorEasy() to check for higher multiplicity of prime
factors above the trial division limit. The DISC_P_DIV lines in
ggnfs.log will also be written/interpreted accordingly. This should
fix some instances where procrels did not factor the discriminant of the
polynomial as well as it could.
* Added .params to the list of files cleaned in the gnfs-template Makefile.
7/9/05 (jasonp_sf)
* Free unneeded arrays before the classical siever starts; reduces
memory use by more than half for large factorizations
* For the classical siever, set up each large factor base prime for
the next sieve line immediately after the prime is used. Also
collapse some operations scanning the sieve array. These two combine
for a small speedup (~5%).
7/6/05 (frmky)
* Applied a patch by Jason Papadopoulos to the classical sieve to fix an
incorrect initialization when the factor base is very small (under
65536).
7/5/05 (trilliwig)
* Moved crossover for the Kleinjung/Franke poly tool a little lower, so
Monico's poly tool doesn't try to make a quintic poly for 98-99 digit
numbers. Added Kleinjung/Franke parameters for 98-99 digits.
7/3/05 (trilliwig)
* Used suggestion by G.W. Reynolds to raise murphymax values for pol5 to
avoid memory issues in pol51opt. It should have the added bonus of
getting to the good polynomials faster. However, there are still many
instances remaining where pol51m0b dies with the message "lambda-comp"
or "ull5a5p-comp".
* Moved -wt option help text from matsolve to matbuild. Also updated the
Perl script to use the -wt option with matbuild, not matsolve. Allowed
"matsolve --help" to print help text if a depinf file does not exist.
* Added support in the Perl script of lss and mrif parameters in the .poly
file. They correspond to $LATSIEVE_SIDE and $maxRelsInFF settings.
* Tweaked some Makefiles so I don't always have to edit them extensively
to use them in my environment. :)
7/2/05 (frmky)
* Modified makesymlinks.sh to restore execute permissions to
src/autogplot.sh and tests/factLat.pl
* Applied a patch by Jason Papadopoulos to fix potential problems with
64-bit 'a' values.
6/30/05 (trilliwig)
* Smoothed out polynomial selection times for GNFS factorizations from 100
to 135 digits. The new default times range from 30 minutes for 100-digit
factorizations to about 2 days for 135-digit factorizations. The times
for 136-155 digit factorizations are pegged at 2 days for now. We don't
actually expect people to use the script anyway for GNFS factorizations
that large.
6/26/05 (frmky)
* Added makesymlinks.sh to recreate the missing symbolic links after
a CVS checkout.
6/26/05 (asl)
* Applied some patches by Jason Papadopoulos to classic siever .
* Fixed missing -wt command line flag for matbuild reported by G.W.Reynolds.
6/25/05 (trilliwig)
* Added factorbase sizes and number of large primes encountered to summary
file.
6/19/05 (trilliwig)
* Fixed typo in error message in the lattice siever.
* Applied Makoto Kamada's patch to suppress warnings in Miller-Rabin
code if the Perl interpreter does not support 64-bit integers.
* If M, Y1, and Y0 are all specified in the .poly file, the script
will now properly use Y1 and Y0 to calculate the SNFS difficulty.
It will also properly handle negative evaluated polynomial values.
* Added much more paranoia in polynomial checking in the Perl script.
It can be disabled by setting $CHECK_POLY to 0.
* Added support for lattice sieving on the rational side. This is
controlled by the $LATSIEVE_SIDE setting.
* Added some interesting information to the summary file.
* Add client id to $PNUM, so if multiple clients are lattice sieving
in the same directory, they don't all write to the same .last_spq*
file.
* Added Geoffrey Reynold's fix for bug when classical sieving is not
done in multi-client mode.
* Fixed runPol5() so it tolerates abnormal exits in the polynomial
search programs.
6/12/05 (asl)
* Extended 'a' field of relations to 64 bit. This seems to be enough
to all decent middle-size factorizations. Big thanks to Andrei Belenko
for this code.
* Added custom malloc code (glibc dlmalloc). Now only for Mingw32.
If anyone will test it on other platforms - let me know, or fix
include by yourself.
* Fixed makefiles for 'ln' under WinNT
0.77.1, 5/4/05
* Two more little BSD fixes that I missed last time.
0.77.0, 5/3/05
* Some BSD fixes. Things seem to be reasonably stable now.
0.76.9, 4/26/05
* Some fixes to Makefile.ppc. But apparently there is still
some ppc problem causing the lattice siever to crash.
* Applied Kamada's patches for faster Lanczos and reducing
the number of sqrts that the Perl script needs when there
are 3 prime factors.
0.76.8, 4/25/05
* Commented out an errant statement at line 746 of combparts.c
which surely caused at least some of the matbuild/matsolve
failures and crashes. It's not yet clear whether this is the
only bug reponsible for the problems, but it was probably the
major cause.
0.76.7, 4/21/05
* I botched the fix that Kamada sent - I thought he had
a typo in what he sent, but it was correct. I fixed it.
0.76.6, 4/20/05
* Kamada pointed out that some conditionals in MultB64() and
MultB_T64() were unneeded; indeed, I did not have them in
there in earlier versions - I'm not exactly sure how they
wound up in there (in blanczos64.c).
0.76.5, 4/13/05
* Modified the mkLT() function to result in fewer mallocs, by
accepting an input argument which can be reused for subsequent
calls (and is, in fact, reused).
* modified the mallinfo() calls so that they work on my linux
box - the numbers I was getting before were flat wrong.
* Modified the rest of combparts.c so that all allocate calls
go through lxmalloc(), lxrealloc(), or lxcalloc(), so that
we can keep track of the total number of calls.
* Small fix in the Perl script ; in some situations, it would not
restart from the correct q-value for lattice sieving before.
0.76.4, 4/13/05
* line 206 of matbuild.c was wrong, and may have caused some segfaults.
The right-hand side was changed from 'c' to '2*i+1'.
* Added a sanity check/warning message to some fishy looking code
in mkLT(), which seems to be causing problems for some folks during
weight reduction.
* Removed some leading asterisks from non-warning, non-error output,
to make errors and warnings easier to spot on stdout. I would like
to uniformize this so that errors and warnings follow some consistent
convention which makes them easy to find.
0.76.3, 4/13/05
* Modified Perl script to use polyselect on numbers < 100 digits
instead of the Kleinjung/Franke tool (i.e., K/F is not appropriate
there since degree 5 is too big)
* Fixed a '#if' that should have been a '#ifdef' somewhere.
0.76.2, 4/12/05
* Added a couple new lines to def-par.txt to go up to 126 digits
(note, though, that the figures I supplied are guesses; but they
should still be better than the choices resulting from using
the 118 digit level).
* Added a define in combparts.c to allow bypassing of the
relation-set weight reduction.
0.76.1, 4/10/05
* Finished the Perl script mods so that it does a reasonable
job with classical sieving. It will now scan the logfile
to see how much classical sieving has already been done,
and resume if necessary.
0.76.0, 4/7/05
* Some small changes to combparts.c and matbuild.c
to try to combat the memory fragmentation problems.
* Added lxalloc() and lxrealloc() which can also keep track
of the number of calls and max heap useage. I will go through
the code replacing malloc() and realloc() calls with these
on a case-by-case basis.
* Added Jason's fixes for the classical siever now - it seems
to be working great. I made one small change for folks using
pre 4.1.3 versions of GMP: line 298 of squfof.c, Jason used
NULL for the second argument to mpz_export(), and this seems
to only be supported for 4.1.3+, so I threw in a trash variable
instead.
* Added Brian's updates and pre C99 changes to clsieve.c.
* Added a little hack to the Perl script to show how some classical
sieving _could_ be done. It is not at all complete - there are
some notes in the file as to how it might be completed, but I
won't get to it for a while. But if you want to do a little
classical sieving, you can either uncomment the relevent lines
(990 and 991), or make/modify a job file and run the sieve
program manually.
0.75.1, 3/26/05
* Some small fixes to the Perl script to compensate for the new
matbuild program. The script no longer looks for the depinf
file, but uses spmat instead.
* Included Jason's updates to the classical siever, but I seem
to have broken it in the process (possibly because I applied
the patch he send on 3/2/05 to the latest source tree which
may have had too many changes and confused 'patch').
* Removed the tests/F7 and tests/tst150 directories since the
scripts in them were broken and I don't necessarily feel like
fixing.
0.75.0, 3/24/05
* Moved matrix pruning into the matbuild program. The matbuild
program now does pruning of the matrix after building it,
and stored the pruned matrix to file, along with a map that specifies
how columns of the resulting matrix map onto original relaton sets.
The benefit of doing it this way is that the parallelizing of
matsolve will be greatly simplified. This meant some pretty significant
changes in the overall structure, and the addition of new functions
for saving and loading nfs_mat_t and llist_t data types.
0.74.2, 3/22/05
* Another VC fix - the ggnfs.vc/lat_asm directory was accidentally
omitted from the last release.
* Finally added an lxmalloc() function and changed some malloc
calls to use it. It is essentially just an xmalloc(), but it
logs the error to the logfile as well.
0.74.1, 3/18/05
* Included Brian's VC changes.
* Included Sam's MingW32 fixes.
* around line 870 of combparts.c : changed the default initialization
size of 'R' to try and combat the large realloc() problems. I didn't
think the new value through too carefully, so it still might be off
(and still might now solve the problem completely, since there may
be other default initialization values which similarly need to be
changed). Someone (probably me, I suppose) should sit down and carefully
work out reasonable heuristic values for these.
0.74.0, 3/16/05
* As promised, I seperated out the cycle-counting and
matrix-building code into a new program, `matbuild'.
The plan is to eventually move the matrix pruning
over into this program as well. But in the meantime,
I hope this will make it easier to debug the memory
problems occuring during cycle counting. There are probably
still some scraps to be cleaned up, like functions in
procrels.c which are no longer used. I will get around
to doing a thorough house-cleaning on the code sometime
this summer I hope.
* Updated the Perl script to use this new program.
0.73.6, 3/11/05
* Swapped order of command-line options for the lattice siever
in the Perl script, to accomodate a bug in the Cygwin implementation
of getopts (at least, it seems to be a bug there; in any case,
it now properly parses the -n option).
* Various cosmetic fixes to screen output.
0.73.5, 3/11/05
* Lowered MAX_MERGE_OPS in comparts.c from 500000 to 100000.
I don't know if the higher value was causing some of the
memory problems on larger numbers or not, but 100000 is still
pretty reasonable I think. I lowered a couple of other defaults
by a little bit too, I think.
* In llist.c, changed the statement
maxShift = MAX(labs(shift), maxShift);
to read:
if (labs(shift) > maxShift)
maxShift = labs(shift);
I don't think this should have caused any problems, but I suppose
that if labs() were implemented as a macro, some funny things
could happen if my MAX or the labs() macro weren't coded just right.
* Added a -prune option to procrels to cause it to remove a specified
fraction of processed relations (i.e., the heaviest 10%, for example).
Those relations will be first dumped to an output file in siever-output
format, then removed from the binary files. This option has been lightly
tested and seems to be okay.
* Applied Tomoya's patch to procrels to remove heavy relsets at each
makePass() and thus reduce RAM useage.
* Added a heap-size checking function for debugging. This will no doubt
cause problems on some platforms - on such platforms, just remove
the -DMALLOC_REPORTING from src/Makefile, or write a replacement
function in misc.c for mallocReport().
* Added some debugging output in the event of memory allocation error
in ll_catFields(). I don't know if it will help track down the problem
or not, but it can't hurt. I suspect the problem is a boundary-overwrite
one somewhere else, but it's going to require some seriously good
memory tools to find it.
* Added Rob's fixes/changes to the Perl script to chomp Q0 on
restart and output the min # of FF's to the log file.
* Small hack to the Perl script, setting PNUM=0 as a workaround for the
Cygwin problem with parsing the -n option.
* Added startup messages to the Kleinjung/Franke poly selection code.
I sent Thorsten and email and got his okay on this first.
* Added Brian's changes to version 0.73.4 for VC.
0.73.4, 3/1/05
* Some of Sam's corrections to the Perl script.
* Added a Cygwin fix for the Kleinjung/Franke poly selection
code. We need to write a floorl() function for Cygwin. In the
meantime, I added a #undef HAVE_FLOAT64 to circumvent the
offending code on Cygwin. This may also need to be defined
on MingW32 and/or VC if they don't have this function.
0.73.3, 2/24/05
* Added Anton's MingW32 patches.
* Added Tomoya's Cygwin patch of src/pol5/if.c.
* Some small changes to pol5 code to hush compiler warnings
(added prototype, remove/hide unused variables).
* Added some of Brian's VC changes, but not all of them; it occurred
to me that I was spending time integrating some changes which might
already be broken.
0.73.2, 2/22/05
* Added Sam's code to the Perl script which essentially completes
the integration of the Kleinjung/Franke poly selection tool.
(that is, except for multiple box support). It seems to work
nicely on linux, though I'm sure there will still be some problems to
be worked out on other platforms.
* Added the interpolated parameter choices by Jes for the
Kleinjung/Franke code (src/def-nm-params.txt).
* Added the directory tests/template for gnfs factorizations.
0.73.1, 2/18/04
* Included a fix by Eric in polyselect for the function
sieveOverSimilarSize().
* Integrated the Kleinjung/Franke polynomial selection
tool (with non-monic linear polynomial).
* Started adding capability to the Perl script to run the
new tool. It's not done yet and certainly not tested yet,
though it won't require too much more work.
0.73.0, 2/10/05
* Another set of Sam's fixes for the Perl script
(checking gnfs vs. snfs and setting the summary file name).
* Return type for mulmod32() on PPC changed to s32, as per
Tetsuya's suggestion (caused problems in procrels, where
about half of the relations were being thrown out).
* Some small changes to lasieve4/if.c and lasieve4/ppc/mpqs.c
for PPC compatability, pointed out by Tom.
* Implemented Eric's fixes in polyselect.c for deg >=6 polys.
* Tweaked the default PRNG seeding in matsolve, to put a little
more seperation between initial seeds in successive runs
(note: this shouldn't really be needed if the PRNG's are
any good at all, but it certainly cannot hurt to have this
in case there is some bias on the low bits or something).
Also, fixed a bug that broke manual seeding (had (+i) instead
of (++i) ).
* As per Anton's suggestion, modified the Perl script to
pass the $minFF value on to procrels so that it doesn't
do weight reduction and build column files unless we have
the specified number of FF's (previously, it would do this
if the matrix was overdetermined - but often, we want to wait
until it is very overdetermined, so that pruning will shrink
it more).
0.72.12, 2/1/05
* Added some of Sam's fixes to the Perl script.
* Added Sam's fix to gnfs-lasieve4e.c so that:
(1) It will take fractional skew values.
(2) The 64-bit constants are specified with trailing ULL,
to hush compiler warnings in some environments (perhaps
even errors in some environments??).
* Changed the default IPB size from 64 bits back to 128 bits
in montgomery_sqrt.c. Something mysterious is going on there
that really should be further investigated, but basically
it seems that the CRT lift was failing in some cases, even
where all the residues are 1 (i.e., probably a variable
containing the number of moduli was being corrupted somewhere,
and so the function was using an undefined residue/modulus
combination somewhere). It seems to only have added about
8% or so to the runtime, so it's not too big of a deal. But
I would like to know exactly what was going on there.
* Included Eric's improvements to the classical siever.
0.72.11, 1/24/05
* Fixed some typos (year numbers) in this Changelog :)
* Added a quick self-test of the matrix multiplication code
in blanczos64.c ; it's not very thorough - it simply tests
for linearity of the product (which is unlikely to occurr
in the event of a serious coding error).
* Changed matsolve.c to seed the PRNG with the clock by default,
and output the seed used to the logfile and stdout. I believe
this to be a fix to the matsolve failures (i.e., they may still
occur from time to time, but should be fixed by simply re-running
with a different seed).
0.72.10, 1/22/05
* I believe I've fixed the SNFS difficulty calculation in
the Perl script to correctly work for the non-monic linear
polynomial case also. A back-of-envelope calculation suggests
that it should simply be about the size of f_1(Y0), where f_1 is
the non-linear polynomial.
0.72.9, 1/18/05
* Moved the even-number-of-relations bit to a different
column; something funny seems to have happened and I had
some dependencies with an odd number of relations (probably
somewhere it says qcb size = 62, so that it might have missed
the bit where it was??)
* Included some fixes from Sam:
* Various things in the Perl script, mostly for multi-client support.
* Fixed a memory initialization at line 662 of combparts.c.
* Some typos corrected in def-par.txt.
* Added a test to the division at line 2307 of montgomery_sqrt.c
to make sure the division was exact.
* Small change in nfmisc.c : line 232, an unnecessary test was removed.
0.72.8, 1/18/05
* A small fix to montgomery_sqrt.c for non-monic polynomials was
needed. It seems to be okay now, at least in more cases than
before. It is possible that there are still some things that
might make it fail for general numbers, but one can hope :)
* Another small fix to rels.c to properly compute the sign bit
(for monic linear polynomial, it didn't matter - we could safely
assume it to always be negative; but for non-monic linear,
the sign bit really does matter).
* Fixed the Perl script to match the new method of controlling
cycle counting in procrels.
0.72.7, 12/19/04
* Changed runPolyselect in the Perl script to start off
with smaller coefficient divisors after a couple of experiments
(in the c110 range) suggested that this would be a good idea.
* Probably some other changes which I forgot to document
(I am uploading this version today, 1/12/05). But it still
does not fix several known bugs. I have even witnessed a failure
on the tst250 test case in matsolve (it subsequently worked
when re-run with a different value for the -wt option).
0.72.6, 12/19/04
* Included Brian's VC updates as well as a suggested fix of my
mpqs-hack.c fix, and some mods to the Perl script so it can
report the commands that are being issued.
* Changed the default value of maxRelsInFF in the Perl script
from 40 to 32, to give (by default) slightly sparser matrices
at the expense of a little extra sieving.
0.72.5, 12/18/04
* Some more PPC fixes from Mark.
* A fix to mpqs-hack.c - somebody had suggested it a week ago
or so, and I forgot to check it out. But then Brian sent in
the same suggestion, so I stopped and looked and it and it did
need a fix around line 1171 of mpqs-hack.c; I added another
check at the first 'if' to see if there's room for more
mpqs survivors in the array.
* Another small tweak to the square root code - some of the LLL
calls did not need the transition matrix, so they now pass
a NULL value for that pointer, saving a little bit of uneeded
work.
0.72.4, 12/15/04
* Another PPC #include fixed/
* A small fix to readPoly() to allow no space between the
token and value. Also added a couple of stderr messages to
this function to be somewhat more informative of failures.
* Added periodic output of the current special-q by the lattice
siever, as a workaround for the failure of the Cygwin version
to catch interrupt signals. This probably still doesn't work
quite right, as I seem to remember that the Cygwin version doesn't
properly parse the '-n' option for some reason. So another easy
fix should still be needed, but I don't have a Cyg box handy at the
moment to see what it needs.
* Some more tweaks to montgomerySqrt() to avoid the cycling effect
that is happening sometimes. I think there is something funny going
on in this code still which is causing it to run a bit slower than
it should (in particular, either the denominator step or the numerator
step might be funny). But it seems to work fine now.
0.72.3, 12/15/04
* Changed the default value of discFact in sqrt.c, so that
the program will not try hard to factor the discriminant.
* Sam pointed out that lpF.numFiles should be initialized to
zero, not 4.
* Included some more of Mark's patches for PPC compilation.
0.72.2, 12/14/04
* Increased MAX_RAT_FACTORS, MAX_ALG_FACTORS and MAX_SP_FACTORS :
Bob hit a snag with the old values being too small for some number.
It doesn't affect memory allocation, so no biggy.
* Made a change to matsolve so that it can recover from a small
number of bad columns by simply deleting them. This is untested
at the moment.
* Slightly increased the number of primes sieved with in the
poly selection code. Result: slight increase in runtime, slightly
better polynomials sometimes.
* Slight change to runPolyselect in the Perl script, to further restrict
the conditions under which it will refine the search. I think it was
often refining itself too much too soon before. This stuff still is
nowhere near perfect, though - one should almost always be able to get
better polys when the program is run manually by a skilled hand.
* Fixed some initializations in sqrt.c and procrels.c pointed
out by José. He also suggests removing the mpqs assembly files from
the VC project because they define some of the same global symbols,
causing incorrect linking (i.e., no linking error, but the resulting
executable is broken).
* Included some new files and diffs from Mark for PPC compilation;
I did the diffs by hand, though, and so I'm sure I probably messed
some of them up. Hopefully, any such mistakes will be corrected by
the next version.
0.72.1, 12/10/04
* Summary output of the perl script is now sent to a file
whose name depends on the number factored. For example,
g104-al.txt
would be the output name for a general c104 for which I
was using the name `al'. For SNFS factorizations, the
file will be named with the SNFS difficulty level instead
of the number of digits of the actual divisors that was
being factored.
* Fixed the -speedtest option for procrels (used by the Perl
script to get some rough idea how fast a machine is). It
spits out something which is called `timeunit', but it
was inversely wrong before: it is supposed to be representative
of how much work a machine can do in a given unit of time.
Poorly names, perhaps, but this is what the Perl script expects
the number to represent. As a result, the `scaled time' reported
by the Perl script was wrong by a factor inversely proportional
to the speed of the machine (i.e., if it doubled the actual time,
it should have halved the actual time instead). No big deal since
I haven't used this yet and nobody seems to have noticed that it's
there yet (of course, it's necessarily inaccurate anyway, since
the scale factor can be way off if another process is running
while the time scale is being computed. But when these `scaled
times' are averaged out in the long run, it shouldn't matter much.
Especially if the same process happened to be running during
much of the factorization, in which case it has cancelling effect
anyway).
0.72.0, 12/10/04
* Fixed a small bug, pointed out by Bob, in the perl script
that wound up passing the entire m: xxxxxx line to the log
function.
* Added a snippet to procrels.c to detect the condition when
there are no valid relations after addNewRelations5() has been
called. This happens as a result of bad parameter choices or
invalid usage; previously, this would result in a segfault -
now, a brief message is printed follwed by a graceful exit.
* Some changes to runPolyselect() in the Perl script, so that it's
a bit smarter about honing in on particular ranges of coefficient
size. It will now remember the leading coefficient of the best
poly found so far, and use that to decide whether or not to
further refine the search in some range (i.e., if it finds a
new best score which comes from a poly which was already found,
it will not refine again).
0.71.9, 12/9/04
* Small change to src/lasieve4/piii/mpqs.c suggested by Brian
for VC compilation. While I was in there, though, I removed
some unused junk leftover from an earlier hack of this file.
* Included new VC project files from Brian.
* Started including Mark R.'s changes for PPC compilation -
he's taking it easy on me and sending the required changes
in increments, so it will be a while before all the necessary
stuff is in here for an actual PPC compile.
0.71.8, 12/8/04
* More changes to factLat.pl : some suggested by Sam (better
parsing of input - some of the digit counts were probably
wrong before), some by Steve (concerning the multi-box mode).
Also, the script will now add `q1' to the job file in a commented-out
line (purely for convenence - there's no associated functionality).
* Another fix suggested by Sam - the problems allowing the
script to run polyselect under Cygwin should now be gone
(my boneheaded error - I forgot to close a file).
* I think there might have been another small change or two
which I've forgotten - but nothing major.
0.71.7, 12/8/04
* Changed factLat.pl : square roots are run exactly until all
prime factors have been found. It's not very smart, though:
it waits until sqrt reports all the prime divisors. If we
had a primality test in Perl (perhaps there is on in the
BigInt module??), we could do a little better by doing some
gcd and divisions to stop a bit sooner. I think, worst case,
though, is that the script will run 2 or 3 more square roots
than strictly needed. A side-effect of this change is that
if the factLat.pl script is run in a directory where an entire
factorization has been completed, it will probably skip all
steps through to the summary-generation code.
Note that none of these changes have ben extensively tested!
0.71.6, 12/8/04
* Changed the test for detecting convergence failure in the
square root code.
* Some changes suggested by Bob to the screen output formatting
in polyselect.
* Added the 'type' field to the test numbers' poly files.
* Fixed a bug in the multi-box hack of the Perl script that
caused machines to choose identical sieving ranges under
some circumstances.
0.71.5, 12/4/04
* Modified the Perl script to preceed it's stdout output with
'->' to make it easier to see which output is coming from
the script, versus the GGNFS binaries.
* Included Anton's fix of ll_getsortOnFieldSize() - it avoids
the sort altogether, and so is faster and more reliable than
before.
* Included Sam's suggestion for abbreviating the `speedtest' code
in the Perl script.
* Included Robert's fix to the Perl script to get the stdout
stuff straight.
* Implemented Steve's suggestion that the Perl script should make
unique job/spairs files when running in multi-client mode.
I haven't tested it yet, though, so it could be broken.
Also, by Steve's suggestion, any secondary clients will now
die if/when a `deps' file appears.
0.71.4, 12/4/04
* It's been a busy day for bugfixes - I fixed yet another boneheaded
bug in the Perl script that messed up sieving ranges.
0.71.3, 12/4/04
* Made another change to checkAB() in procrels.c. I think I fixed
another bug that was causing the speed to slow down quickly.
But it hasn't yet been tested on a large number of relations,
so there could still be some funny stuff with it. I just moved the
code for merging abExtraList with the abList.
0.71.2, 12/3/04
* Fixed readBinField() in misc.c to check for EOF condition while
reading input.
* Fixed a bug in the Perl script which messed up the sieving ranges
after an interrupt.
0.71.1, 12/3/04
* Fixed a bug in blanczos.c : in MultB64() and MultB_T64(),
it was possible for some memory to be erroneously overwritten.
This is the likely cause of the error where Lanczos wouldn't
terminate. It's possible that this caused some other errors as
well, but I also think that some error still might remain in
matstuff.c.
0.71.0, 12/3/04.
* Coded up a better method of computing the valuations of
<a-b\alpha> at the special primes, to take advantage of the
facts that:
(1) This is a principal ideal.
(2) The generator is linear in \alpha.
Previously, we were computing the valuations using the general
case algorithm in Cohen, but this is much much faster for the
special case. The net result is a speedup of maybe 8x or so
for relation processing on general numbers.
* A fix and some bells (but no whistles) added to the factLat.pl
script.
* Fixed a bug in that abHash code which caused relation processing
to unnecessarily slow down (we weren't using all of the allocated
memory for the hash, and I think we failed to completely zero out
abExtraHash when that stuff was added to the long list. It was
a silly counting error on my part).
0.70.9, 12/2/04
* Added a small hack to the Perl script to that I can conveniently
sieve on several machines at once. This hack is very temporary,
untested so far, and I don't encourage using it! If it doesn't
work right for you, I will accept suggestions for a fix, but I
won't track down bugs byself, since it's only intended to be a