-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathChangeLog-2008
1348 lines (977 loc) · 51.8 KB
/
ChangeLog-2008
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
2008-12-11 Adam Piatyszek <[email protected]>
* itpp/base/matfunc.cpp, itpp/base/matfunc.h: Add missing template
instantiations.
The templates is_hermitian() and is_unitary() had extern
instantiations in the header file, but were never instantiated in
the corresponding source file, which lead to linking errors when
using these functions.
This patch fixes this bug (#2392728) by adding the corresponding
template instantiations in matfunc.cpp.
Signed-off-by: David Hammarwall <[email protected]>
* itpp/stat/misc_stat.cpp, itpp/stat/misc_stat.h: Improve
performance of the Frobenius norm.
The implementation of the Frobenius norm calculation for matrix M
was done by multiplying M' times M and then throwing away
everything but the diagonal. This was definitely not the optimum
way to calculate.
Signed-off-by: Bo Lincoln <[email protected]>
2008-12-02 Adam Piatyszek <[email protected]>
* tests/bch_test.ref, tests/blas_test.ref, tests/channel_test.ref,
tests/cholesky_test.ref, tests/circular_buffer_test.ref,
tests/convcode_test.ref, tests/converters_test.ref,
tests/det_test.ref, tests/eigen_test.ref, tests/fastica_test.ref,
tests/filter_design_test.ref, tests/filter_test.ref,
tests/histogram_test.ref, tests/interleaver_test.ref,
tests/inv_test.ref, tests/ldpc_test.ref, tests/ls_solve_test.ref,
tests/lu_test.ref, tests/mat_test.ref, tests/matfunc_test.ref,
tests/modulator_nd_test.ref, tests/modulator_test.ref,
tests/poly_test.ref, tests/pulse_shape_test.ref,
tests/qr_test.ref, tests/rand_test.ref,
tests/reedsolomon_test.ref, tests/schur_test.ref,
tests/sigfun_test.ref, tests/sort_test.ref, tests/sparse_test.ref,
tests/specmat_test.ref, tests/stat_test.ref, tests/svd_test.ref,
tests/transforms_test.ref, tests/turbo_test.ref,
tests/vec_test.ref: Update test reference files for the new RNG
implementation.
* itpp/base/random.cpp, itpp/base/random.h: Replace random_01*
with genrand_* methods.
random_01(), random_01_lclosed() and random_01_rclosed() methods
are only backward compatible wrappers for genrand_open_open(),
genrand_close_open() and genrand_open_close(). Besides, the
semi-closed methods are a little bit faster, therefore prefer
genrand_close_open() and genrand_open_close() where appropriate.
* itpp/base/random.cpp, itpp/base/random.h,
itpp/base/random_dsfmt.h, itpp/base/sources.mk: Add DSFMT
implementation of random number generator.
The DSFMT class implements parts of the Double precision
SIMD-oriented Fast Mersenne Twister (dSFM) random number
generator. DSFMT directly generates double precision floating
point random numbers, which have the IEEE 754 floating-point
format. Besides, unsigned integer numbers can also be directly
generated using genrand_uin32() method.
This implementation is 1.8-2.4 times faster than the previous MT
implementation.
Thanks to Mutsuo Saito and Makoto Matsumoto from Hiroshima
University for their original implementation in C, which is a base
for this C++ DSFMT class.
2008-12-01 Adam Piatyszek <[email protected]>
* itpp/base/binfile.cpp, itpp/base/math/misc.cpp,
itpp/base/math/misc.h, itpp/srccode/audiofile.cpp: Rename
check_big_endianness() to is_bigendian().
check_big_endianness() function is still available for backward
compatibility, but marked as deprecated.
2008-11-13 Adam Piatyszek <[email protected]>
* itpp/base/timing.cpp, itpp/base/vec.cpp, itpp/fixed/cfix.cpp,
itpp/fixed/fix.cpp: Add missing #include files required by GCC 4.4
GCC 4.4 cleaned up some more C++ headers. Required header files
have to be included explicitly.
Signed-off-by: Martin Michlmayr <[email protected]>
2008-11-12 Adam Piatyszek <[email protected]>
* itpp/signal/transforms.cpp: Let IT++ compile and link with MKL 10.1.
The updated MKL 10.1 package defines DftiCreateDescriptor macro in
mkl_dfti.h header file, which caused compilation errors in IT++
transforms.cpp file. This patch fixes this problem.
-------------------------------------------------------------------------------
2008-10-08 Adam Piatyszek <[email protected]>
* IT++ 4.0.6 release (SVN tag: release-4-0-6)
* NEWS, VERSION: Add release notes and update version number for
IT++ 4.0.6.
* itpp/itpp_acml_tests/Makefile.am, itpp/itpp_mkl_tests/Makefile.am:
Add specmat_test.vcproj files to the list of distributed files.
2008-10-05 Erik G. Larsson <[email protected]>
* doc/local/verification.doc: Added Ubuntu 8.04 to list of tested
systems
* doc/local/installation.doc: Minor fix
2008-09-17 Adam Piatyszek <[email protected]>
* itpp/base/mat.h, itpp/base/vec.h: Do not explicitly inline
elem_mult_inplace() when using MSVC++.
This is a workaround for a warning reported by Microsoft Visual
C++ Express 2008.
* win32/itpp_acml.sln, win32/itpp_mkl.sln: Use CRLF line endings
in MSVC++ solution files.
* win32/itpp_acml_tests/itpp_acml_tests.sln,
win32/itpp_acml_tests/specmat_test.vcproj,
win32/itpp_mkl_tests/itpp_mkl_tests.sln,
win32/itpp_mkl_tests/specmat_test.vcproj: Add MSVC++ project files
for specmat_test.
2008-09-12 Adam Piatyszek <[email protected]>
* tests/Makefile.am, tests/specmat_test.cpp,
tests/specmat_test.ref: Add specmat_test program for testing
special vectors and matrices.
Initially only toeplitz() function is tested.
* itpp/base/specmat.cpp, itpp/base/specmat.h: Fix broken
implementation of toeplitz() function.
The previous implementation generated incorrect matrices for two
complex-valued input vectors. This patch fixes this problem. BTW,
the implementation is now based on a template function, so bmat,
smat and imat matrices can now be generated.
Thanks to Niklas Johansson for reporting this issue. This closes
bug report [2110119].
2008-09-01 Adam Piatyszek <[email protected]>
* test/vec_test.cpp, test/vec_test.ref: Revert part of SVN
revision 1613.
I/O stream labels for infinity and not-a-number have different
case sensitivity in various supported GCC versions ("inf" vs.
"Inf", "nan" vs. "NaN"). Thus we can not test for them in a vector
initialisation from string.
2008-08-30 Adam Piatyszek <[email protected]>
* itpp/base/itassert.h: Get rid of config.h dependency from
itassert.h header file.
* itpp/comm/galois.cpp: Fix bug in GF::set_size() method, which
was reported by Stephan Ludwig.
Because "alphapow" and "logalpha" are static variables, every
instantiation of the GF class uses the very same of them. If
different instantiations of different Galois fields access this
(e.g. 2^8 and 2^6, while 2^6 has been created first), the latter
might overwrite/delete the log table of the previous while calling
GF::set_size() method (2^8 widens the array to m+1=9, while not
copying the 2^6 entries). The solution is to copy the contents of
"alphapow" and "logalpha" when resizing them.
Thanks to Stephan Ludwig for noticing this problem and also to
EndZone for confirming it.
* itpp/base/sort.h: Make sort() and sort_index() work for vectors
with less than two elements.
Without this patch, the above two functions resulted in an
assertion error. Thanks to Yngve Seln for reporting this problem.
2008-08-18 Erik G. Larsson <[email protected]>
* extras/gdb_macros_for_itpp, extras/Makefile.am: added GDB
debugger display macros for it++ data types.
This closes feature request [1913404]. Thanks to Vasek for
providing an initial version of the macros.
2008-08-11 Adam Piatyszek <[email protected]>
* tests/vec_test.cpp, tests/vec_test.ref: Modified existing and
added new tests of vector initialisations with string
* tests/vec_test.cpp, tests/vec_test.ref: Fix vector
initialisation test with "a:b" format when a > b
This test is not valid with the new string parser implementation,
because negative decrements have to be explicitly gived as 'b' in
"a:b:c" format string. This is consistant with GNU Octave way of
parsing such strings.
* itpp/base/vec.cpp, itpp/base/vec.h: String parser reimplemented
to support multiple "a:b:c" format strings
The new implementation supports multiple "a:b[:c]" formats in one
string. For instance:
ivec v = "1:2:5, 6 8 9:-1:0";
now works.
Memory handling is also more efficient, i.e. for the cases when
"a:b:c" format is not used, memory is allocated only once.
Besides, the new implementation should be easier to maintain,
because the code is much more modular.
This patch resolves feature request [2041480].
* win32/itpp_acml.vcproj, win32/itpp_acml_tests/*.vcproj,
win32/itpp_mkl.vcproj, win32/itpp_mkl_tests/*.vcproj: Suppress
warnings about deprecated "/Wp64" options in MSVC++ project files
2008-08-10 Adam Piatyszek <[email protected]>
* doc/tutorial/src/ldpc_bersim_awgn.cpp: Add missing "LL" suffix
to 64-bit inteager initialisation
This eventually fixes integer overflow error in LDPC BER
simulation tutorial example.
2008-08-09 Adam Piatyszek <[email protected]>
* itpp/stat/mog_diag.h: Suppress a minor warning reported by
Doxygen
* doc/tutorial/src/ldpc_bersim_awgn.cpp: Fix minor problem with
integer overflow in expression
The initialisation of int64_t variable with a multiplied inteager
constants caused an integer overflow of the temporary calculation
result. This patch fixes this issue by using one big constant
in the initialisation.
2008-08-07 Adam Piatyszek <[email protected]>
* itpp/base/vec.h, tests/vec_test.cpp, tests/vec_test.ref: Fix
regression [2041474] in Vec<>::split() method
In IT++ 3.10.x releases it was possible to split a vector at its
end, e.g.:
vec v1 = "1 2 3 4 5";
vec v2 = v1.split(5);
In the current stable branch (4.0.x) the above code results in an
assertion. This patch fixes this regression and also improves the
documentation, so it is clearly explained which elements are
returned and which are stored in the original vector.
Besides, the vec_test program now includes a new test for
splitting a vector at pos = 0 and pos = datasize.
Thanks to Yngve Selén for reporting this bug.
2008-08-02 Adam Piatyszek <[email protected]>
* m4/acx_blas.m4: MKL requires zdotusub Fortran wrapper function
on x86_64 architecture
This fixes broken blas_test and vector_test on 64-bit linux
architectures when IT++ is linked to Intel MKL BLAS library. This
fix is equivalent to passing "--with-zdotu=zdotusub" option to
configure.
-------------------------------------------------------------------------------
2008-07-18 Adam Piatyszek <[email protected]>
* NEWS, VERSION: Add release notes and update version number for
IT++ 4.0.5
* tests/vec_test.cpp, tests/vec_test.ref: Add a test-case to
reproduce bug [2017948]
* itpp/base/vec.cpp: Fix bug [2017948] in parsing error of "a:b:c"
ivec initialisation
There was a bug in vec.cpp that caused an assertion error when
integer vectors were initialized using the "a:b:c" notation. For
example: ivec iv = "0:2:4"; raised an exception. This patch fixes
this bug by removing an unnecessary "seekg" operation.
Thanks to David Hammarwall for reporting the problem and solution
to it.
2008-07-11 Adam Piatyszek <[email protected]>
* itpp/base/mat.h: Fix bug [2004345] causing incorrect result of
Mat::concat_vertical()
In case when one of the input matrices to concat_horizontal() or
concat_vertical() functions was empty, an error occurred. With
this patch the result of concatenating an empty matrix with
some other matrix is defined and a copy of the other matrix is
returned. This fixes bug [2004345].
Thanks to Carlos Pineda for reporting this problem.
* itpp/base/mat.h: Reset number of rows/columns if one of the
dimensions given to Mat::set_size() is zero
Without this patch, the Mat::set_size() function set number of
rows or cols to non zero value, even if the other matrix
dimension was zero. This was not compatible with the constructor.
Besides, setting one of the dimensions of a matrix to non zero
value, if the other one is zero does not makes sense and might
cause problems with other functions operating on matrices. This
patch fixes this problem.
2008-06-17 Adam Piatyszek <[email protected]>
* itpp/comm/bch.cpp: Fix bug [1995743] in BCH::decode() function
The second argument of
if ((delta == GF(n + 1, -1)) || (OldLambda.get_degree() > kk))
takes the degree of OldLambda. But get_degree() does not return
the true degree of that polynomial but its allocated space.
GFX::get_true_degree() does what we want.
If OldLambda's "degree" is larger than its "true degree", a wrong
decision is made in the if statement, resulting in a wrong
Lambda(x), which in general leads to a decoding failure, while the
code word should have been correctable in theory.
This patch fixes this bug and also removes a redundant "temp"
variable.
Signed-off-by: Stephan Ludwig <[email protected]>
2008-06-12 Adam Piatyszek <[email protected]>
* AUTHORS, doc/local/authors.doc: Add Stephan Ludwig (donludovico)
to the list of contributors
* itpp/comm/bch.cpp, itpp/comm/bch.h, tests/bch_test.cpp:
Auto-calculate the BCH generator polynomial from (n, t) parameters
This patch improves the previous patch, so only n (codeword
length) and t (error-correcting capability) parameters are
required to specify a particular BCH code. The generator
polynomial and k (message word length) are calculated
automatically.
The new constructor does no longer break the implicit cast
ivec("...") of the generator polynomial parameter in the old
constructor.
Signed-off-by: Stephan Ludwig <[email protected]>
2008-06-09 Adam Piatyszek <[email protected]>
* itpp/comm/bch.cpp, itpp/comm/bch.h, tests/bch_test.cpp:
Auto-calculate the BCH generator polynomial from (n, k, t)
parameters
Beside the known Parameters n (codeword length), k (message word
length), t (designed error-correcting capability) the actual BCH
class needs to be handed over the generator polynomial in octal
form. This can be very long for some codes and thus hard-copying
from textbooks often leads to copying errors.
Since the generator polynomial is unique (as far as I know) for
given parameters n, k, t, this generator polynomial can be
calculated during instantiation of the BCH class - given the
parameters n, k, t. Thus, copying errors can be avoided. This new
feature is supplied as a second constructor for the BCH class by
the attached patch. In other words: With the new constructor, you
no longer have to pass on the generator polynomial but only the
parameters n, k, and t. The constructor generates the generator
polynomials according to Wicker: "Error control systems for
digital communication and storage" as given in Appendix E of this
book. The polynomials are also the same as in Lin/Costello: "Error
control coding".
Unfortunately, the usual call (cf. IT++ documentation), i.e.
BCH bch(31, 21, 2, "3 5 5 1");
does no longer work, since both constructors confuse at run-time:
The new constructor is called and the string is interpreted as
bool systematic. The correct usage would now be:
BCH bch(31, 21, 2, ivec("3 5 5 1"));
Signed-off-by: Stephan Ludwig <[email protected]>
2008-06-05 Adam Piatyszek <[email protected]>
* itpp/comm/hammcode.cpp, itpp/comm/hammcode.h,
itpp/comm/sequence.cpp, itpp/comm/spread.h: Replace "short"
variables with "int" to prevent implicit conversions
MSVC++ warns about implicit conversions between "int" and "short"
types, which can cause lost of data. Therefore use "int" type for
indexing purposes as most of the IT++ codes do.
* itpp/comm/modulator.cpp, itpp/comm/modulator.h: Remove redundant
argument from calculate_softbit_matrices() function
Since calculate_softbit_matrices() is a private method of a class,
in which "bits2symbols" variable is also declared, there is no need
to pass this variable as an argument of this method.
* itpp/base/itfile.h, itpp/base/random.h, itpp/comm/bch.h,
itpp/comm/rec_syst_conv_code.h, itpp/comm/reedsolomon.h: Suppress
MSVC++ warning C4512: "assignment operator could not be generated"
MSVC++ warns when an assignment operator can not be automatically
generated because of constant variables existing in a class. To
suppress this warning an dummy assignment operator can be added as
in this patch.
* itpp/base/vec.cpp, itpp/fixed/fix.cpp: Suppress MSVC++ warning
C4701: "potentially uninitialized local variable..."
* itpp/base/gf2mat.cpp, itpp/base/itfile.cpp, itpp/base/mat.h,
itpp/base/math/misc.h, itpp/base/vec.h, itpp/comm/galois.cpp,
itpp/srccode/audiofile.cpp, itpp/srccode/pnm.cpp: Suppress MSVC++
warning C4244: "conversion from 'int' to 'char'..."
Some of the expressions require explicit casts to "char". Where
appropriate "int get()" method of iostream class is replaced with
"get(char &)" function. Besides, GF::set_size() method is
re-factored a little bit, so the "mtemp" integer variable is no
longer necessary.
* itpp/base/factory.h, itpp/base/mat.h, itpp/base/matfunc.h,
itpp/base/timing.cpp, itpp/base/vec.h, itpp/comm/bch.cpp,
itpp/comm/channel.cpp, itpp/comm/convcode.cpp,
itpp/comm/egolay.cpp, itpp/comm/hammcode.cpp, itpp/comm/ldpc.h,
itpp/comm/modulator.cpp, itpp/comm/punct_convcode.cpp,
itpp/comm/reedsolomon.cpp, itpp/fixed/cfix.h, itpp/fixed/cfixed.h,
itpp/fixed/fix.h, itpp/fixed/fix_functions.h,
itpp/protocol/tcp.cpp, itpp/protocol/tcp.h,
itpp/stat/misc_stat.cpp, itpp/stat/mog_diag.cpp,
itpp/stat/mog_diag.h, itpp/stat/mog_diag_em.cpp: Suppress MSVC++
warning C4100: "unreferenced formal parameter"
This warning is suppressed by omitting named parameters in
arguments of functions. Only types of parameters are passed.
* configure.ac.in: Change default debugging flags to "-g -O1" or
"-Wall -ggdb -O1 -pipe"
The latter set is only used when GCC compiler is used, so it
implicitly assumes that GDB debugger will be used in such a case.
2008-05-30 Adam Piatyszek <[email protected]>
* itpp/comm/bch.cpp, itpp/comm/bch.h, tests/bch_test.cpp:
Auto-calculate the BCH generator polynomial from (n, k, t)
parameters
Beside the known parameters n (codeword length), k (message word
length) and t (error-correcting capability), a generator
polynomial in octal form needs to be handed over to the actual BCH
class. This generator can be very long for some codes and thus
copying by hand from textbooks often leads to errors.
Since the generator polynomial is unique for given parameters (n,
k, t), this generator polynomial can be calculated during
instantiation of the BCH class. This new feature is supplied as a
second constructor for the BCH class in this patch.
The constructor generates the generator polynomials according to
Wicker: "Error control systems for digital communication and
storage" as given in Appendix E of this book. The polynomials are
also the same as in Lin/Costello: "Error control coding".
Unfortunately, the usual call BCH bch(31, 21, 2, "3 5 5 1"); does
no longer work, since both constructors confuse at run-time: The
new constructor is called and the string is interpreted as bool
systematic (that's what I guess). The correct usage of the old
constructor would now be BCH bch(31, 21, 2, ivec("3 5 5 1"));
Signed-off-by: Stephan Ludwig <[email protected]>
* itpp/base/math/log_exp.h, itpp/srccode/gmm.h: Remove functions
marked as deprecated before 3.10.7 release
GMM::get_no_mixtures() was replaced a long time ago with
GMM::get_no_gaussians(), whereas needed_bits() was replaced with
either int2bits() or levels2bits(). Therefore it is the highest
time to remove the deprecated interfaces in our development
branch.
2008-05-21 Adam Piatyszek <[email protected]>
* doc/local/users_guide.doc: Minor documentation fix in Users
Guide
There is no such functions as swap_row() and swap_col() in IT++.
swap_rows() and swap_cols() are the proper ones. This fixes bug
[1968377]. Thanks to Allan Murray for reporting this issue.
2008-05-17 Adam Piatyszek <[email protected]>
* itpp/base/bessel/hyperg.cpp, itpp/base/itfile.cpp,
itpp/base/random.cpp, itpp/comm/punct_convcode.cpp,
itpp/fixed/cfix.cpp, itpp/fixed/fix.cpp, itpp/srccode/pnm.cpp,
itpp/stat/mog_diag_em.cpp, itpp/stat/mog_diag_kmeans.cpp,
itpp/stat/mog_generic.cpp: Fix GCC 4.3 warnings on "ambiguous
else" due to missing braces
The latest GCC compiler is much more picky when it comes to if/else
statements without explicit braces. This results in a lot of warnings
when "-Wall" flag is used. This patch adds missing braces or
refactors code for which such warnings were reported by GCC 4.3.
2008-05-15 Adam Piatyszek <[email protected]>
* configure.ac.in: Set CXXFLAGS_DEBUG to CXXFLAGS when
--enable-debug is not used
This new behaviour is consistent with setting the same set of
libraries for both the debug and optimised cases, when
--enable-debug is not used. Besides, the CXXFLAGS_DEBUG variable
is now documented when "configure --help" is used.
2008-05-09 Erik G. Larsson <[email protected]>
* doc/tutorial/matlab_itpp.doc: Documentation improvement
2008-04-25 Adam Piatyszek <[email protected]>
* tests/modulator_nd_test.cpp: Cosmetic fix - remove doubled
semicolon
* Unify coding style using an astyle source code formatter
This huge patch is intended to unify the coding style for all IT++
source and header files. The formatting has been performed with
the astyle v1.22 program, using the configuration stored in
extras/astylerc file.
2008-04-15 Adam Piatyszek <[email protected]>
* itpp/base/vec.h: Fix regression of a missing inline keyword in
outer_product() specialisation
The inline keyword is necessary for template specialisations that
are defined in the header file. This bug resulted in linking
problems without any external BLAS library, when this particular
specialisation was used.
Thanks to Markus Dittrich for investigating this problem and
providing a patch for it on Gentoo Bugzilla (bug #217621).
2008-04-14 Adam Piatyszek <[email protected]>
* itpp/signal/fastica.cpp: Fix broken initialisation of
Fast_ICA::set_init_guess() method
The set_init_guess() now changes initState, which is checked in
separate(), so that the provided guess is passed into the solver,
rather than a zero matrix as before.
This patch fixes bug report [1941219].
Signed-off-by: Matthew Chaudhuri <[email protected]>
2008-04-09 Adam Piatyszek <[email protected]>
* itpp/base/converters.cpp, itpp/base/converters.h,
itpp/base/itcompat.cpp, itpp/base/itcompat.h: Move rint() to
itcompat.{cpp,h}
This function is conditionally defined on platforms, which do not
provide their own implementation. Therefore the best place for it
is in itcompat.{cpp,h} files.
* itpp/base/itcompat.h, itpp/base/math/trig_hyp.h,
itpp/signal/poly.cpp, itpp/signal/window.cpp,
itpp/base/itcompat.cpp: Move asinh(), acosh() and atanh() to
itcompat.{cpp,h}
These functions are conditionally defined on platforms, which do
not provide their own implementations. Therefore the best place
for them is in itcompat.{cpp,h} files.
* itpp/base/itcompat.h, itpp/base/math/log_exp.h: Move log1p() and
log2() definitions from log_exp.h to itcompat.h
BTW, log2() now uses "static const double" variable initialised
with the result of "1.0 / std::log(2.0)" division.
* itpp/base/itcompat.cpp, itpp/base/itcompat.h,
itpp/base/math/error.cpp, itpp/base/math/error.h: Move erf(double)
and erfc(double) error functions to itcompat.{cpp,h}
These functions are conditionally defined on platforms, which do
not provide their own implementations. Therefore the best place
for them is in itcompat.{cpp,h} files.
* itpp/base/itcompat.cpp, itpp/base/itcompat.h,
itpp/base/math/elem_math.cpp, itpp/base/math/elem_math.h: Move
tgamma(), lgamma() and cbrt() definitions to itcompat.{cpp,h}
These three functions are conditionally defined on platforms, which
do not provide their own implementations. Therefore the best place
for them is in itcompat.{cpp,h} files.
* configure.ac.in, itpp/base/converters.h, itpp/base/itcompat.h,
itpp/config_msvc.h: Move portability related definitions from
config.h to itcompat.h
* itpp/base/bessel/gamma.cpp, itpp/base/itcompat.h,
itpp/base/math/log_exp.h, itpp/base/math/misc.cpp,
itpp/base/math/misc.h, itpp/base/random.cpp,
itpp/stat/mog_generic.cpp: Move isinf(), isnan() and isfinite()
definitions to itcompat.h
These three functions are conditionally defined on platforms,
which do not have them in standard headers. Therefore, the best
location for them in IT++ is the itcompat.h header file.
* configure.ac.in, itpp/base/itcompat.cpp, itpp/base/itcompat.h,
itpp/base/random.cpp, itpp/base/sources.mk, itpp/config_msvc.h,
win32/itpp_acml.vcproj, win32/itpp_mkl.vcproj:
Add implementation of expm1() function
The expm1() function from C99 standard is not available in MSVC++
compiler. This implementation is taken from the GNU Scientific
Library (GSL) and will be only used on platforms that do not have
their own expm1() function.
* itpp/base/binfile.h, itpp/base/itcompat.h, itpp/base/itfile.h,
itpp/base/ittypes.h, itpp/base/sources.mk, itpp/fixed/fix_base.h,
itpp/itbase.h, win32/itpp_acml.vcproj, win32/itpp_mkl.vcproj:
Rename ittypes.h to itcompat.h
Beside fixed size integer type definitions, the new file
itcompat.h will include all conditional implementations of
functions, which are non available on various platforms and
compilers, e.g. std::isfinite() or expm1().
2008-04-08 Adam Piatyszek <[email protected]>
* README, doc/local/index.doc.in: Reworded and rearranged the
brief description of the IT++ library
Thanks to Kumar Appaiah for some language suggestions.
-------------------------------------------------------------------------------
2008-03-31 Adam Piatyszek <[email protected]>
* IT++ 4.0.4 release (SVN tag: release-4-0-4)
* NEWS, VERSION: Add release notes and update version number for
IT++ 4.0.4
* win32/itpp_acml_tests/Makefile.am,
win32/itpp_mkl_tests/Makefile.am: Add converters_test.vcproj to
EXTRA_DISTS variable of Makefiles
Without this patch, the project files for converters_test were not
included in the distribution package.
2008-03-26 Adam Piatyszek <[email protected]>
* tests/itfile_test.cpp: Remove setf(ios::scientific) and
setf(ios::fixed) from itfile_test.cpp
These two formatting options causes broken output of
floating-point data when using MSVC++ Express 2008. In spite of
the fact that this seems to be a bug in MSVC++ Express 2008,
removal of these formatting options fixes this problem.
2008-03-25 Adam Piatyszek <[email protected]>
* tests/itfile_test.cpp, tests/itfile_test_data.it: Improve
itfile_test by using a non-continuous reference data file
Such a data file is prepared by first saving a longer data structure
(ivec in this case), then deleting it and finally saving a shorter
data structure in the same place.
* itpp/base/itfile.cpp: Do not duplicate seek operation after
reading data_header fields
When reading each field of a data_header structure of an IT++
file, the reading position is automatically incremented. So, the
additional seekg() operation afterwards is redundant. This small
modification fixes a problem with endless loop while reading an
itfile in programs compiled with MSVC++ 2008. Previous MSVC++
version (2005) does not show this strange behaviour.
* tests/Makefile.am, tests/converters_test.cpp,
tests/converters_test.ref,
win32/itpp_acml_tests/converters_test.vcproj,
win32/itpp_acml_tests/itpp_acml_tests.sln,
win32/itpp_mkl_tests/converters_test.vcproj,
win32/itpp_mkl_tests/itpp_mkl_tests.sln: Create a simple test
program of various conversion functions
This test should catch possible incompatible implementation of the
rint() function, which is not available under MSVC++ compiler.
* itpp/base/converters.cpp, itpp/base/converters.h: Fix incorrect
implementation of rint() function used under MSVC++
The rint() function is not available under MSVC++ compiler. Thus,
the local implementation has to be conditionally enabled for this
compiler. This patch fixes the incorrect implementation of rint()
function, which behaved like a similar round() function. It also
moves the "double rint(double)" definition out of the itpp
namespace.
2008-03-20 Adam Piatyszek <[email protected]>
* win32/itpp_acml.vcproj, win32/itpp_mkl.vcproj: Do not treat
warnings as errors in MSVC++ projects
This is a workaround for MS Visual C++ Express 2008 problem in
compiling a correct piece of templated code.
* itpp/base/algebra/cholesky.h, itpp/base/algebra/det.h,
itpp/base/algebra/eigen.h, itpp/base/algebra/ls_solve.h,
itpp/base/algebra/lu.h, itpp/base/algebra/qr.h,
itpp/base/binary.h, itpp/base/binfile.h, itpp/base/copy_vector.h,
itpp/base/gf2mat.h, itpp/base/itassert.h, itpp/base/itfile.h,
itpp/base/ittypes.h, itpp/base/mat.h, itpp/base/sort.h,
itpp/base/svec.h, itpp/base/vec.h: Minor spelling fixes in IT++
base module documentation
This commit fixes several little spelling mistakes in the IT++
base module documentation.
Signed-off-by: Kumar Appaiah <[email protected]>
2008-03-18 Adam Piatyszek <[email protected]>
* tests/ldpc_test.cpp, tests/ldpc_test.ref: Minor workaround for a
failing ldpc_test on win32 platforms
MinGW and MSVC++ produce win32 executables, which use slightly
different rounding approach for real numbers output through cout
or cerr I/O streams. This patch just changes the precision of the
output values, so the problematic case does not occur any more.
* itpp/base/random.cpp, itpp/base/random.h, tests/rand_test.cpp,
tests/rand_test.ref: Add implementation of Gamma(alpha, beta)
random number generator
The implementation of the Gamma_RNG::sample() function is taken
from the R statistical language.
Thanks to Vasek Smidl for providing the initial patch in feature
request [1913411].
* AUTHORS, doc/local/authors.doc: Add Vasek Smidl to the list of
contributors
* itpp/base/operators.cpp: Fix complex constructors in
operators.cpp to build with g++ 4.3
It appears that g++ 4.3 is a bit more strict with respect to type
checking when we attempt to overload the std::complex constructor for
use with non-double types. Use of an explicit static_cast is needed to
overcome this restriction. This patch does the needful by converting
those constructors to use static_casts.
Signed-off-by: Kumar Appaiah <[email protected]>
* itpp/base/algebra/qr.cpp, itpp/base/algebra/qr.h,
tests/qr_test.cpp, tests/qr_test.ref: Add qr() overloaded function
that do not compute Q.
For some tasks (triangularization) the Q matrix is not really needed.
This patch implements an overloaded version of the qr() function
that does not compute Q.
Thanks to Vasek Smidl for submitting the patch.
2008-03-13 Adam Piatyszek <[email protected]>
* itpp/base/mat.h, itpp/base/vec.h: Fix it_assert_debug()
conditions in elem_mult_out() methods of the Vec and Mat classes
The checks for equal sizes of three and more variables can not be
written like this: "a.size == b.size == c.size". The proper form
is: "(a.size == b.size) && (a.size == c.size)". This patch fixes
this bug. It also removes the redundant checks for different
dimensions of a matrix before invoking the set_size(rows, cols)
method.
Thanks to Martin Senst for reporting this bug.
2008-03-12 Adam Piatyszek <[email protected]>
* itpp/comm/ldpc.cpp, itpp/comm/ldpc.h: Simplify
BLDPC_Parity::calculate_base_matrix() function
The previous implementation used to create a temporary dense
parity check matrix and then extracted Z by Z submatrices from it
for further processing. With this patch, the temporary Z by Z
submatrices are sparse and extracted directly from the sparse
parity check matrix H. Besides, the checks for cyclic-shifted
identity matrices are simplified. Therefore, an additional method
circular_eye_b() is no longer needed.
* itpp/comm/ldpc.cpp: Simplify BLDPC_Parity::expand_base()
implementation
The previous implementation used to create a temporary dense
parity check matrix and then copied its ones to the final sparse
matrix. This patch changes the code so the sparse parity check
matrix is constructed directly from the input base matrix.
* tests/ldpc_test.cpp, tests/ldpc_test.ref: Add simple tests of
BLDPC_Parity and BLDPC_Generator classes
2008-03-11 Adam Piatyszek <[email protected]>
* itpp/base/random.cpp, itpp/base/random.h: Move the
implementation of Normal_RNG::sample() to the source file
The implementation of Normal_RNG::sample() function is too
complicated for inlining, so it should not be included inside the
class declaration. This patch moves the actual code from the header
file to the source file.
* itpp/base/vec.h: Remove checks for different sizes before
invoking set_size() function
set_size() methods first checks if the requested new size differs
from the current one. Therefore, there is no need to check this
condition explicitly before invoking set_size() method.
2008-03-10 Adam Piatyszek <[email protected]>
* itpp/base/mat.h, itpp/base/vec.h: Decrease the number of inline
functions in the Vec and Mat classes
Overusing the inline keyword usually causes unnecessary code bloat,
which results in a rather slower performance of the resulting
code. Therefore, this patch reduces the number of inline functions
and lefts only the ones which are really trivial or frequently
reused.
* itpp/base/factory.cpp, itpp/base/factory.h,
itpp/base/sources.mk, win32/itpp_acml.vcproj,
win32/itpp_mkl.vcproj: Mark all create_elements() functions as
inline ones
These functions have 2-4 lines and are only used by alloc() and
free() methods only, so we might gain more by inlining them
instead of more general functions of Vec, Mat and Array classes.
2008-03-06 Adam Piatyszek <[email protected]>
* itpp/base/mat.h: Add missing get(int i) method to the Mat class
This method returns a copy of the i-th element of the matrix
using linear addressing, which is what the const version of
operator()(int i) does.
* itpp/base/mat.h: Add missing operator=(const std::string &) to
the Mat class
There is a Mat(const std::string &) constructor but the assignment
operator for this type of argument has not been implemented. This
patch adds this missing operator.
* itpp/base/mat.cpp, itpp/base/mat.h: Add element-wise division
operator with a scalar as the dividend
This new operator complements a similar one, which performs
element-wise division of a matrix by a scalar.
* itpp/base/mat.h, itpp/base/matfunc.h, itpp/base/specmat.cpp,
tests/mat_test.cpp, tests/mat_test.ref: Deprecate
Mat<>::set_submatrix(r1,r2,c1,c2,m) function
This function provides identical results as set_submatrix(r,c,m).
Moreover, the r2 and c2 indexing arguments are redundant, because
their values are determined by the size of the input matrix m.
This patch marks this function as deprecated, for possible removal
from future IT++ major releases.
* itpp/base/mat.cpp, itpp/base/mat.h: Add in_range(r,c),
col_in_range(c) and row_in_range(r) inline methods
This is a pure clean-up patch which simplifies it_assert_debug()
checks. BTW, it also includes a few cosmetic changes to other
assertion checks.
* itpp/base/mat.cpp, itpp/base/mat.h: Make consistent naming of
variables used in the Mat class interface
This patch unifies the variable names in the Mat class interface.
The following names are now commonly used:
- m, m1, m2, etc.: matrix
- v: vector
- t: simple numeric type Num_T, e.g. bin, int, double
- r, r1, r2: row index
- c, c1, c2: column index
- i: generic index
* itpp/base/mat.cpp, itpp/base/mat.h: Clean-up redundant use of
"const" keyword in the Mat class
There is no need for declaring the returned by value types with an
additional "const" keyword. Moreover, Num_T is assumed a simple or
built in type for the Mat class, i.e. bin, short int, int, double
and complex<double>. Therefore it might be more efficient to pass
arguments of this type by value, in which case the "const" keyword
is also redundant.
* itpp/base/vec.h: Deprecate elem_div(t,v) function of the Vec
class
This function is only an alias to operator/(t,v). Besides, no
similar methods for operator/(v,t), operator*(t,v) and
operator*(v,t) exist.
* itpp/comm/modulator.h, tests/modulator_test.cpp,
tests/modulator_test.ref: Fix bug [1908644] in
Modulator<>::set(symbols, bits2symbols) function
The bitmap matrix used in the demodulate_bits() function of the
Modulator<> base class was improperly constructed from the input
bits2symbols mapping vector. This resulted in demodulation errors
for some constellations, e.g. 64-QAM or 8-PSK. This patch fixes
this problem.
Thanks to Yann Cocheril for reporting this problem.
2008-03-04 Adam Piatyszek <[email protected]>
* itpp/comm/llr.cpp, itpp/comm/llr.h: In case of an overflow
saturate QLLR values instead of aborting
An overflow may occur when converting real-valued LLR values into
QLLR ones and also when calculating the Hagenauer's "boxplus"
operator. This patch implements a conditional QLLR saturation in
such cases. Moreover, the Boxplus() function is no longer an
inline function, because this actually caused performance loss of
the LDPC codes decoder.
Finally, make the argument of to_double(QLLR) and to_qllr(double)
pass-by-value instead of const-reference, since that's faster for
POD like double and int.
Thanks to Martin Senst for providing the initial patch.
2008-03-02 Adam Piatyszek <[email protected]>
* itpp/base/vec.cpp, itpp/base/vec.h: Clean-up redundant use of
"const" keyword in the Vec class
There is no need for declaring the returned by value types with an
additional "const" keyword. Moreover, Num_T is assumed a simple or
built in type for the Vec class, i.e. bin, short int, int, double
and complex<double>. Therefore it might be more efficient to pass
arguments of this type by value, in which case the "const" keyword
is also redundant.
Logical operators (==, !=, >, >=, < and <=) no longer create a
local copy of the vector contents.
By the way, use consistent name "t" for Num_T variables and wrap
long lines before 80 column.
* itpp/base/vec.h: Add missing operator=(const std::string &) to
the Vec class
There is a Vec(const std::string &) constructor but the assignment
operator for this type of argument has not been implemented. This
patch fixes this problem and unifies the argument names by the
way.
* doc/local/users_guide.doc, itpp/base/vec.h, tests/vec_test.cpp,
tests/vec_test.ref: Add missing operator(bin_list) and
get(index_list) methods to the Vec class
This patch also simplifies the implementation so get() methods
just call inline indexing "()" operators. The documentation and
vec_test program are updated accordingly.
* itpp/base/vec.h: Replace ((i < datasize) && (i >= 0)) with
in_range(i) inline method
This is a pure clean-up patch which simplifies it_assert_debug()
checks. BTW, it also includes a few cosmetic changes to other
assertion checks.