From 91d8fe57417a8f9e3009b2e85fb41c29112042a6 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 08:54:00 +0100 Subject: [PATCH 01/22] Improve readability of function description --- src/app/bagrov.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 6008da4c..12e151fe 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -21,17 +21,27 @@ #define MAX(a, b) ((a) > (b) ? (a) : (b)) /* - ======================================================================================================================= - Translated by FOR_C, v2.3.2, on 10/16/94 at 18:28:43 ; - FOR_C Options SET: none ; - include ; - #include ; - NBAGRO & BAGROV - Module zur Lesung der BAGROV-Gleichung AUFRUF: CALL NBAGRO(BAG,y,x) CALL BAGROV(BAG,x,y) - PROGRAMMTYP: SUBROUTINE, SPRACHE: FORTRAN80 EINGABEPARAMETER: BAG- Bagrov-Parameter mit n=BAG x - x=P/ETP mit - P=PMD*niedKorrFaktor [mm/a] ETP::Mittlere potentielle Verdunstung [mm/a] AUSGABEPARAMETER: y - ETR/ETP ETR:: - Mittlere reale Verdunstung [mm/a] - ======================================================================================================================= - */ +================================================================================ +Translated by FOR_C, v2.3.2, on 10/16/94 at 18:28:43 ; +FOR_C Options SET: none ; +include ; +#include ; +NBAGRO & BAGROV - Module zur Lesung der BAGROV-Gleichung +AUFRUF: + CALL NBAGRO(BAG,y,x) + CALL BAGROV(BAG,x,y) +PROGRAMMTYP: SUBROUTINE, +SPRACHE: FORTRAN80 +EINGABEPARAMETER: + BAG- Bagrov-Parameter mit n=BAG + x - x=P/ETP mit + P=PMD*niedKorrFaktor [mm/a] + ETP::Mittlere potentielle Verdunstung [mm/a] +AUSGABEPARAMETER: + y - ETR/ETP mit + ETR::Mittlere reale Verdunstung [mm/a] +================================================================================ +*/ Bagrov::Bagrov() { From 34ce131443381cc32c2329e1338e335bd274fe9e Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 08:58:13 +0100 Subject: [PATCH 02/22] Remove labels L_10 and L_20 --- src/app/bagrov.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 12e151fe..b426523a 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -216,13 +216,13 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) float delta, du, h, s, s1, sg, si, su, u, x; - if (*x0 == 0.0) goto L_10; + if (*x0 == 0.0) { + *y0 = 0.0F; + return; + } + *y0 = 0.99F; - goto L_20; -L_10: - *y0 = 0.0F; - return; -L_20: + doloop = false; /* NUMERISCHE INTEGRATION DER BAGROVBEZIEHUNG */ From 063b63e99daaa45f51ba315b5f7b2c454d397a7d Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:03:19 +0100 Subject: [PATCH 03/22] Put statements within curly braces --- src/app/bagrov.cpp | 47 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index b426523a..5ebe9bfc 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -233,6 +233,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) si = h * du / 4.0F; sg = 0.0F; su = 0.0F; + L_1: s = si; j = j * 2; @@ -249,49 +250,79 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; s1 = 0.001F * s; - if (fabs(s - si) > s1) goto L_1; + + if (fabs(s - si) > s1) { + goto L_1; + } + x = si; /* ENDE DER NUMERISCHEN INTEGRATION */ - if (doloop) goto L_42; - if (*x0 > x) goto L_30; + if (doloop) { + goto L_42; + } + + if (*x0 > x) { + goto L_30; + } + *y0 = 0.5F; + goto L_40; + L_30: *y0 = 1.0F; return; + L_40: i = 1; /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ + L_41: doloop = true; goto L_21; + L_42: delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); *y0 = *y0 + delta; - if (*y0 >= 1.0) goto L_50; - if (*y0 <= 0.0) goto L_60; + + if (*y0 >= 1.0) { + goto L_50; + } + + if (*y0 <= 0.0) { + goto L_60; + } + goto L_70; + L_50: *y0 = 0.99F; goto L_90; + L_60: *y0 = 0.01F; goto L_90; + L_70: - if (fabs(delta) < 0.01F) goto L_80; + if (fabs(delta) < 0.01F) { + goto L_80; + } + goto L_90; + L_80: - ; return; + L_90: if (i < 10) goto L_91; goto L_92; + L_91: i = i + 1; goto L_41; + L_92: - ; return; } /* end of function */ From 9d140babd7b14d137aa435ea49bc9faaffd6d437 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:05:19 +0100 Subject: [PATCH 04/22] Remove labels L_80 and L_90 --- src/app/bagrov.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 5ebe9bfc..728cf728 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -307,14 +307,9 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) L_70: if (fabs(delta) < 0.01F) { - goto L_80; + return; } - goto L_90; - -L_80: - return; - L_90: if (i < 10) goto L_91; goto L_92; From 2f35acb036d6a6e0571caf077bc5d224d53202d7 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:08:38 +0100 Subject: [PATCH 05/22] Remove labels L_30 and L_40 --- src/app/bagrov.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 728cf728..9e983d52 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -263,18 +263,12 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) } if (*x0 > x) { - goto L_30; + *y0 = 1.0F; + return; } *y0 = 0.5F; - goto L_40; - -L_30: - *y0 = 1.0F; - return; - -L_40: i = 1; /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ From 1f86bc66f33283e6c7339c490cca4b8ac2239243 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:13:32 +0100 Subject: [PATCH 06/22] Avoid 'goto L_50', 'goto L_60', remove labels L_50, L_60, L_70 --- src/app/bagrov.cpp | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 9e983d52..58066eea 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -282,24 +282,15 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) *y0 = *y0 + delta; if (*y0 >= 1.0) { - goto L_50; + *y0 = 0.99F; + goto L_90; } if (*y0 <= 0.0) { - goto L_60; + *y0 = 0.01F; + goto L_90; } - goto L_70; - -L_50: - *y0 = 0.99F; - goto L_90; - -L_60: - *y0 = 0.01F; - goto L_90; - -L_70: if (fabs(delta) < 0.01F) { return; } From d3f646f8f2ef9c250bde31cbeb5ccf0512343a34 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:18:10 +0100 Subject: [PATCH 07/22] Avoid 'goto L_91', 'goto L_92', remove labels L_91, L_92 --- src/app/bagrov.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 58066eea..ecab8a86 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -296,13 +296,10 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) } L_90: - if (i < 10) goto L_91; - goto L_92; - -L_91: - i = i + 1; - goto L_41; + if (i < 10) { + i = i + 1; + goto L_41; + } -L_92: return; } /* end of function */ From 106ec0536c4831a032c9cf664a00621ad9999f1f Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:35:50 +0100 Subject: [PATCH 08/22] Use do-while-loop instead of 'goto L_1' --- src/app/bagrov.cpp | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index ecab8a86..c780298d 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -234,26 +234,23 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) sg = 0.0F; su = 0.0F; -L_1: - s = si; - j = j * 2; - du = du / 2.0F; - u = du / 2.0F; - sg = sg + su; - su = 0.0F; - - for (ii = 1, _do0 = j; ii <= _do0; ii += 2) - { - su = su + 1.0F / (1.0F - (float) exp(*bagf * log(u))); - u = u + du; - } - - si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; - s1 = 0.001F * s; + do { + s = si; + j = j * 2; + du = du / 2.0F; + u = du / 2.0F; + sg = sg + su; + su = 0.0F; + + for (ii = 1, _do0 = j; ii <= _do0; ii += 2) { + su = su + 1.0F / (1.0F - (float) exp(*bagf * log(u))); + u = u + du; + } - if (fabs(s - si) > s1) { - goto L_1; + si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; + s1 = 0.001F * s; } + while (fabs(s - si) > s1); x = si; From 2cbe792873e8d6c888470b461a8f78fb1257f4e4 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:38:37 +0100 Subject: [PATCH 09/22] Get rid of helper variable 's1' --- src/app/bagrov.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index c780298d..efe739e2 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -214,7 +214,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) /* meiko : initialisiere i (einzige Aenderung) */ i = 0; - float delta, du, h, s, s1, sg, si, su, u, x; + float delta, du, h, s, sg, si, su, u, x; if (*x0 == 0.0) { *y0 = 0.0F; @@ -248,9 +248,8 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) } si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; - s1 = 0.001F * s; } - while (fabs(s - si) > s1); + while (fabs(s - si) > 0.001F * s); x = si; From 358c6f5a8b86128e3957b8422fd894109b20bda0 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 09:42:40 +0100 Subject: [PATCH 10/22] Shorten comment lines, no need for 'return' --- src/app/bagrov.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index efe739e2..a0e9acfa 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -200,10 +200,10 @@ float Bagrov::nbagro(float bage, float x) } /* - ======================================================================================================================= - FIXME: - ======================================================================================================================= - */ +================================================================================ +FIXME: +================================================================================ +*/ void Bagrov::bagrov(float *bagf, float *x0, float *y0) { bool doloop; /* LOGICAL16 */ @@ -297,5 +297,4 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) goto L_41; } - return; } /* end of function */ From 5536d251f094dbde440694de5870fd93b124fb11 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:13:11 +0100 Subject: [PATCH 11/22] Get rid of helper variable '_do0' --- src/app/bagrov.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index a0e9acfa..a5d8729f 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -207,7 +207,7 @@ float Bagrov::nbagro(float bage, float x) void Bagrov::bagrov(float *bagf, float *x0, float *y0) { bool doloop; /* LOGICAL16 */ - int _do0, i, ii, j; + int i, ii, j; qDebug() << "In bagrov()..."; @@ -242,9 +242,9 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) sg = sg + su; su = 0.0F; - for (ii = 1, _do0 = j; ii <= _do0; ii += 2) { - su = su + 1.0F / (1.0F - (float) exp(*bagf * log(u))); - u = u + du; + for (ii = 1; ii <= j; ii += 2) { + su += 1.0F / (1.0F - (float) exp(*bagf * log(u))); + u += du; } si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; From c819b6cb2fc9a874609942959ed6496d20c0398a Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:14:28 +0100 Subject: [PATCH 12/22] Use *=, /=, += operators --- src/app/bagrov.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index a5d8729f..bffe6d5d 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -236,10 +236,11 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) do { s = si; - j = j * 2; - du = du / 2.0F; + j *= 2; + du /= 2.0F; u = du / 2.0F; - sg = sg + su; + sg += su; + su = 0.0F; for (ii = 1; ii <= j; ii += 2) { From 1443cf5193024183aa3a648a66c98a9915e01aec Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:18:05 +0100 Subject: [PATCH 13/22] Move code into if-block to avoid 'goto L_42' --- src/app/bagrov.cpp | 51 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index bffe6d5d..8a044938 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -256,8 +256,31 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) /* ENDE DER NUMERISCHEN INTEGRATION */ if (doloop) { - goto L_42; - } + + delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); + *y0 = *y0 + delta; + + if (*y0 >= 1.0) { + *y0 = 0.99F; + goto L_90; + } + + if (*y0 <= 0.0) { + *y0 = 0.01F; + goto L_90; + } + + if (fabs(delta) < 0.01F) { + return; + } + +L_90: + if (i < 10) { + i = i + 1; + goto L_41; + } + + } /* end of if (doloop) */ if (*x0 > x) { *y0 = 1.0F; @@ -274,28 +297,4 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) doloop = true; goto L_21; -L_42: - delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); - *y0 = *y0 + delta; - - if (*y0 >= 1.0) { - *y0 = 0.99F; - goto L_90; - } - - if (*y0 <= 0.0) { - *y0 = 0.01F; - goto L_90; - } - - if (fabs(delta) < 0.01F) { - return; - } - -L_90: - if (i < 10) { - i = i + 1; - goto L_41; - } - } /* end of function */ From 710077eef4418f8c9552babf00cafdb782d44576 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:25:21 +0100 Subject: [PATCH 14/22] Move code into if-block to avoid 'goto L_90' --- src/app/bagrov.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 8a044938..dd153841 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -262,19 +262,24 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) if (*y0 >= 1.0) { *y0 = 0.99F; - goto L_90; + if (i < 10) { + i = i + 1; + goto L_41; + } } if (*y0 <= 0.0) { *y0 = 0.01F; - goto L_90; + if (i < 10) { + i = i + 1; + goto L_41; + } } if (fabs(delta) < 0.01F) { return; } -L_90: if (i < 10) { i = i + 1; goto L_41; From c5e489dce15929accea77919bf22d4cf4116fb97 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:28:04 +0100 Subject: [PATCH 15/22] Move code into if-blocks to avoid 'goto L_41' --- src/app/bagrov.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index dd153841..7a516300 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -264,7 +264,8 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) *y0 = 0.99F; if (i < 10) { i = i + 1; - goto L_41; + doloop = true; + goto L_21; } } @@ -272,7 +273,8 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) *y0 = 0.01F; if (i < 10) { i = i + 1; - goto L_41; + doloop = true; + goto L_21; } } @@ -282,7 +284,8 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) if (i < 10) { i = i + 1; - goto L_41; + doloop = true; + goto L_21; } } /* end of if (doloop) */ @@ -298,7 +301,6 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ -L_41: doloop = true; goto L_21; From 2d2ef60b0193dd5c35f843c15bc8e83cda162421 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:46:08 +0100 Subject: [PATCH 16/22] Use helper variable 'skip' to avoid code duplication --- src/app/bagrov.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 7a516300..33640e89 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -226,6 +226,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) doloop = false; /* NUMERISCHE INTEGRATION DER BAGROVBEZIEHUNG */ + L_21: j = 1; du = 2.0F **y0; @@ -260,25 +261,19 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); *y0 = *y0 + delta; + bool skip = false; + if (*y0 >= 1.0) { *y0 = 0.99F; - if (i < 10) { - i = i + 1; - doloop = true; - goto L_21; - } + skip = true; } - if (*y0 <= 0.0) { + if (!skip && *y0 <= 0.0) { *y0 = 0.01F; - if (i < 10) { - i = i + 1; - doloop = true; - goto L_21; - } + skip = true; } - if (fabs(delta) < 0.01F) { + if (!skip && fabs(delta) < 0.01F) { return; } @@ -302,6 +297,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ doloop = true; + goto L_21; } /* end of function */ From 3deb2f9357dccf7e1def1e1480ef62503ce85da0 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 10:57:24 +0100 Subject: [PATCH 17/22] Reuse 'skip' variable to avoid one more 'goto L_21' --- src/app/bagrov.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 33640e89..72da18d5 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -256,13 +256,13 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) x = si; /* ENDE DER NUMERISCHEN INTEGRATION */ + bool skip = false; + if (doloop) { delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); *y0 = *y0 + delta; - bool skip = false; - if (*y0 >= 1.0) { *y0 = 0.99F; skip = true; @@ -279,20 +279,22 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) if (i < 10) { i = i + 1; - doloop = true; - goto L_21; + skip = true; } } /* end of if (doloop) */ - if (*x0 > x) { - *y0 = 1.0F; - return; - } + if (!skip) { - *y0 = 0.5F; + if (*x0 > x) { + *y0 = 1.0F; + return; + } - i = 1; + *y0 = 0.5F; + + i = 1; + } /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ From e5f6175dcdc90d68aac4e55d0699e1328d3bb34f Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 11:06:44 +0100 Subject: [PATCH 18/22] Use while (true) instead of final 'goto L_21' --- src/app/bagrov.cpp | 108 ++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 55 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 72da18d5..81427ceb 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -227,79 +227,77 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) /* NUMERISCHE INTEGRATION DER BAGROVBEZIEHUNG */ -L_21: - j = 1; - du = 2.0F **y0; - h = 1.0F + 1.0F / (1.0F - (float) exp(*bagf * log(*y0))); - si = h * du / 4.0F; - sg = 0.0F; - su = 0.0F; - - do { - s = si; - j *= 2; - du /= 2.0F; - u = du / 2.0F; - sg += su; + while (true) { + j = 1; + du = 2.0F **y0; + h = 1.0F + 1.0F / (1.0F - (float) exp(*bagf * log(*y0))); + si = h * du / 4.0F; + sg = 0.0F; su = 0.0F; - for (ii = 1; ii <= j; ii += 2) { - su += 1.0F / (1.0F - (float) exp(*bagf * log(u))); - u += du; - } + do { + s = si; + j *= 2; + du /= 2.0F; + u = du / 2.0F; + sg += su; + su = 0.0F; - si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; - } - while (fabs(s - si) > 0.001F * s); + for (ii = 1; ii <= j; ii += 2) { + su += 1.0F / (1.0F - (float) exp(*bagf * log(u))); + u += du; + } - x = si; + si = (2.0F * sg + 4.0F * su + h) * du / 6.0F; + } + while (fabs(s - si) > 0.001F * s); - /* ENDE DER NUMERISCHEN INTEGRATION */ - bool skip = false; + x = si; - if (doloop) { + /* ENDE DER NUMERISCHEN INTEGRATION */ + bool skip = false; - delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); - *y0 = *y0 + delta; + if (doloop) { - if (*y0 >= 1.0) { - *y0 = 0.99F; - skip = true; - } + delta = (*x0 - x) * (1.0F - (float) exp(*bagf * (float) log(*y0))); + *y0 = *y0 + delta; - if (!skip && *y0 <= 0.0) { - *y0 = 0.01F; - skip = true; - } + if (*y0 >= 1.0) { + *y0 = 0.99F; + skip = true; + } - if (!skip && fabs(delta) < 0.01F) { - return; - } + if (!skip && *y0 <= 0.0) { + *y0 = 0.01F; + skip = true; + } - if (i < 10) { - i = i + 1; - skip = true; - } + if (!skip && fabs(delta) < 0.01F) { + return; + } - } /* end of if (doloop) */ + if (i < 10) { + i = i + 1; + skip = true; + } - if (!skip) { + } /* end of if (doloop) */ - if (*x0 > x) { - *y0 = 1.0F; - return; - } + if (!skip) { - *y0 = 0.5F; + if (*x0 > x) { + *y0 = 1.0F; + return; + } - i = 1; - } - - /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ + *y0 = 0.5F; + i = 1; + } - doloop = true; + /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ + doloop = true; - goto L_21; + } /* end of while (true) */ } /* end of function */ From 0a04e7a39e0a122e685f8fc2da023054362ef821 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 7 Jan 2023 18:08:29 +0100 Subject: [PATCH 19/22] Improve readability --- src/app/bagrov.cpp | 29 ++++++++++------------------- src/app/main.cpp | 2 +- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 81427ceb..d00463d6 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -48,22 +48,13 @@ Bagrov::Bagrov() } const float Bagrov::aa[]= { - 0.9946811499F, // 0 - 1.213648255F, // 1 - -1.350801214F, // 2 - 11.80883489F, // 3 - -21.53832235F, // 4 - 19.3775197F, // 5 - 0.862954876F, // 6 - 9.184851852F, // 7 - -147.2049991F, // 8 - 1291.164889F, // 9 - -6357.554955F, // 10 - 19022.42165F, // 11 - -35235.40521F, // 12 - 39509.02815F, // 13 - -24573.23867F, // 14 - 6515.556685F // 15 + // [0..5] eyn > UPPER_LIMIT_EYN + 0.9946811499F, // [0] + 1.213648255F, -1.350801214F, 11.80883489F, -21.53832235F, 19.3775197F, + // [6..15]: eyn > UPPER_LIMIT_EYN + 0.862954876F, // [6] + 9.184851852F, -147.2049991F, 1291.164889F, -6357.554955F, 19022.42165F, + -35235.40521F, 39509.02815F, -24573.23867F, 6515.556685F }; float Bagrov::nbagro(float bage, float x) @@ -230,7 +221,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) while (true) { j = 1; - du = 2.0F **y0; + du = 2.0F * *y0; h = 1.0F + 1.0F / (1.0F - (float) exp(*bagf * log(*y0))); si = h * du / 4.0F; sg = 0.0F; @@ -240,10 +231,10 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) s = si; j *= 2; du /= 2.0F; - u = du / 2.0F; sg += su; - su = 0.0F; + su = 0.0F; + u = du / 2.0F; for (ii = 1; ii <= j; ii += 2) { su += 1.0F / (1.0F - (float) exp(*bagf * log(u))); u += du; diff --git a/src/app/main.cpp b/src/app/main.cpp index 18b15f6b..a9860127 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -128,7 +128,7 @@ int main_batch(int argc, char *argv[]) QString logFileName = Helpers::defaultLogFileName(outputFileName); bool debug = parser.isSet("debug"); - // Handle --write_bagrov-table + // Handle --write-bagrov-table if (parser.isSet("write-bagrov-table")) { writeBagrovTable(); return 0; From 7f1bb48e0c6d4734222a626e3a57a75328e6aeda Mon Sep 17 00:00:00 2001 From: hsonne Date: Tue, 28 Feb 2023 15:04:15 +0100 Subject: [PATCH 20/22] Improve readability: put one value per line --- src/app/bagrov.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index d00463d6..5b01ba66 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -49,12 +49,23 @@ Bagrov::Bagrov() const float Bagrov::aa[]= { // [0..5] eyn > UPPER_LIMIT_EYN - 0.9946811499F, // [0] - 1.213648255F, -1.350801214F, 11.80883489F, -21.53832235F, 19.3775197F, + 0.9946811499F, // 0 + 1.213648255F, // 1 + -1.350801214F, // 2 + 11.80883489F, // 3 + -21.53832235F, // 4 + 19.3775197F, // 5 // [6..15]: eyn > UPPER_LIMIT_EYN - 0.862954876F, // [6] - 9.184851852F, -147.2049991F, 1291.164889F, -6357.554955F, 19022.42165F, - -35235.40521F, 39509.02815F, -24573.23867F, 6515.556685F + 0.862954876F, // 6 + 9.184851852F, // 7 + -147.2049991F, // 8 + 1291.164889F, // 9 + -6357.554955F, // 10 + 19022.42165F, // 11 + -35235.40521F, // 12 + 39509.02815F, // 13 + -24573.23867F, // 14 + 6515.556685F // 15 }; float Bagrov::nbagro(float bage, float x) From e52ac67c2cc8ab0045cf374b4eee7869743cdab2 Mon Sep 17 00:00:00 2001 From: hsonne Date: Tue, 28 Feb 2023 15:21:40 +0100 Subject: [PATCH 21/22] Correct/improve comments, use C++ comment syntax --- src/app/bagrov.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 5b01ba66..823fd439 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -48,7 +48,7 @@ Bagrov::Bagrov() } const float Bagrov::aa[]= { - // [0..5] eyn > UPPER_LIMIT_EYN + // [0..5] eyn <= UPPER_LIMIT_EYN 0.9946811499F, // 0 1.213648255F, // 1 -1.350801214F, // 2 @@ -149,7 +149,6 @@ float Bagrov::nbagro(float bage, float x) // If eyn, bag are in a certain range, return y0 (1.0 at maximum) if ((eyn > 0.9F) || (eyn >= UPPER_LIMIT_EYN && bag > 4.0F)) { - //*y = MIN(y0, 1.0); return MIN(y0, 1.0); } @@ -172,7 +171,7 @@ float Bagrov::nbagro(float bage, float x) { h *= eyn; w = aa[i - 1] * h; - j = i - ia + 1; /* cls J=I-IA+1 */ + j = i - ia + 1; // cls J = I - IA + 1 sum_2 += w / (j * (float) bag + 1.0F); sum_1 += w; } @@ -208,12 +207,12 @@ float Bagrov::nbagro(float bage, float x) */ void Bagrov::bagrov(float *bagf, float *x0, float *y0) { - bool doloop; /* LOGICAL16 */ + bool doloop; // LOGICAL16 int i, ii, j; qDebug() << "In bagrov()..."; - /* meiko : initialisiere i (einzige Aenderung) */ + // meiko : initialisiere i (einzige Aenderung) i = 0; float delta, du, h, s, sg, si, su, u, x; @@ -227,7 +226,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) doloop = false; - /* NUMERISCHE INTEGRATION DER BAGROVBEZIEHUNG */ + // NUMERISCHE INTEGRATION DER BAGROVBEZIEHUNG while (true) { @@ -257,7 +256,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) x = si; - /* ENDE DER NUMERISCHEN INTEGRATION */ + // ENDE DER NUMERISCHEN INTEGRATION bool skip = false; if (doloop) { @@ -284,7 +283,7 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) skip = true; } - } /* end of if (doloop) */ + } // end of if (doloop) if (!skip) { @@ -297,9 +296,9 @@ void Bagrov::bagrov(float *bagf, float *x0, float *y0) i = 1; } - /* SCHLEIFE I=1(1)10 ZUR BERECHNUNG VON DELTA */ + // SCHLEIFE I = 1(1)10 ZUR BERECHNUNG VON DELTA doloop = true; - } /* end of while (true) */ + } // end of while (true) -} /* end of function */ +} // end of function From e21de7d8fb93ca3726555938e55eee468289faf7 Mon Sep 17 00:00:00 2001 From: hsonne Date: Tue, 28 Feb 2023 15:26:24 +0100 Subject: [PATCH 22/22] Use helper variable 'is_high_eyn' and short-hand ifelse --- src/app/bagrov.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/app/bagrov.cpp b/src/app/bagrov.cpp index 823fd439..24d85a5b 100644 --- a/src/app/bagrov.cpp +++ b/src/app/bagrov.cpp @@ -152,15 +152,10 @@ float Bagrov::nbagro(float bage, float x) return MIN(y0, 1.0); } - // Set start and end index (?), depending on the value of eyn - if (eyn > UPPER_LIMIT_EYN) { - ia = 8; - ie = 16; - } - else { - ia = 2; - ie = 6; - } + // Set start index ia and end index ie, depending on the value of eyn + bool is_high_eyn = (eyn > UPPER_LIMIT_EYN); + ia = is_high_eyn ? 8 : 2; + ie = is_high_eyn ? 16 : 6; sum_1 = 0.0F; sum_2 = 0.0F;