|
|
| version 1.67, 2023/05/23 12:25:36 | version 1.73, 2024/07/02 13:25:47 |
|---|---|
| Line 1 | Line 1 |
| 2024-07-02 Nicolas Brouard <brouard@ined.fr> | |
| * imach.c (Module): Trying compiling on Linux with clang (instead | |
| of gcc which is too slow) and lot of warnings suppressed | |
| 2024-06-28 Nicolas Brouard <brouard@ined.fr> | |
| * imach.c (Module): fixing some bugs in gnuplot and quantitative variables, but not completely solved | |
| 2024-06-28 Nicolas Brouard <brouard@ined.fr> | |
| * imach.c (Module): s6 errors with age*age (harmless). | |
| 2024-05-12 Nicolas Brouard <brouard@ined.fr> | |
| * imach.c Version 0.99s5 In fact, the covariance of total life | |
| expectancy e.. with a partial life expectancy e.j is high, | |
| therefore the complete matrix of variance covariance has to be | |
| included in the formula of the standard error of the proportion of | |
| total life expectancy spent in a specific state: | |
| var(X/Y)=mu_x^2/mu_y^2*(sigma_x^2/mu_x^2 -2 | |
| sigma_xy/mu_x/mu_y+sigma^2/mu_y^2). Also an error with mle=-3 | |
| made the program core dump. It is fixed in this version. | |
| 2024-04-30 Nicolas Brouard <brouard@ined.fr> | |
| * (Module): In version 0.99s4, we incorporated the calculation of | |
| the std error of the proportion of total life expectancy spent in | |
| a specific state Var(e.j/e..) using the formula of Var(X/Y) | |
| depending only of the variances of X and Y and expectancies. | |
| 2024-04-24 Nicolas Brouard <brouard@ined.fr> | |
| * (Module): This version comes late after having tested | |
| successfully the praxis C version of Buckhardt. But Buckardt's | |
| version was difficult to read and Gegenfurtner's version had a few | |
| typos which made its results less reliable than Buckhardt's | |
| results. The most important work consisted in retyping the Brent | |
| original PRAXIS program written in Algol W (published with errors, | |
| ommitting the transposition of matrix V before its QR reduction | |
| from Golub. I used the recent "awe" compiler from Gkynn Webster. | |
| The awe library had errors, for example in arc tangent function | |
| which have been fixed. | |
| The main objective was to get identical results with the three | |
| versions: (1) Algol W, (2) Buckhardt'C version as well (3) | |
| Gegenfürtner C versions on the various test functions published by | |
| Brent in 1973 in Algol W. | |
| Also, in order to compare them, the random function had to produce | |
| the same sequence for the 3 softwares. The random function used in | |
| imach corresponds to original Brent's random function written in | |
| Algol W. Other point, in Algol W, the arrays of dimension n are | |
| 'normal' mathematical arrays starting from 1 to n. But this is a | |
| real issue in C where, by default, arrays are starting from 0 to | |
| n-1. In Buckhardt, as well as in Gegenfürtner C code, it can be | |
| seen that authors while trying to mimick original Brent Algol W | |
| code are hesitating by changing either a loop originally from 1 to | |
| n in a loop from 0 to n-1, or keeping Brent's loop from 1 to n and | |
| shifting the index from original X(I) in Algol W to x[i-1] in C. | |
| But as IMaCh is using, since the beginning, the Numerical Recipes | |
| functions vector or matrix, I changed Geggenfürtner code to mimick | |
| the original Algol W arrays. Thus the X(I) is translated in C as | |
| x[i] which minimizes the errors. The Golub QR algorithm was | |
| published in Algol with overflow errors which were reproduced in | |
| Brent's Algol W code. Buckhardt code fixed these errors which are | |
| much more problematic in C than in Algol W. Thus Buckhardt code | |
| seems very safe, but i haven't chosen it for IMaCh because the C | |
| style is horrible and almost unreadable compared to Gegenfürtner | |
| CO code which is very close to Brent's original. Also what makes | |
| Buckhardt code more difficult to read is, instead of passing the | |
| minimum of parameters in the functions calls, as it is in Algol | |
| Brent's code or Gegenfürtner's code, the list of parameters is | |
| high. For example, the flin function LONG REAL PROCEDURE FLIN | |
| (LONG REAL VALUE L) has only one parameter in Algol W, the | |
| Gegenfürtner flin function had two parameters: static double | |
| flin(l, j) double l; { int i; double tflin[N];} but Buckhardt | |
| function has 14 parameters which makes the code unreadable and | |
| useless. Gegenfürtner used a lot of static variables or functions | |
| which I tried to minimize. Also in Gegefürtner, array dimensions | |
| were fixed to N. In my adaptation the flin is static double | |
| flin(double l, int j) and the parameter used are global variables. | |
| 2023-06-14 Nicolas Brouard <brouard@ined.fr> | |
| * imach.c (Module): Testing if conjugate gradient could be quicker | |
| when lot of variables POWELLORIGINCONJUGATE | |
| 2023-05-23 Nicolas Brouard <brouard@ined.fr> | 2023-05-23 Nicolas Brouard <brouard@ined.fr> |
| * imach.c (Module): Fixed PROB_r | * imach.c (Module): Fixed PROB_r |