From 0a377f340291147ca2fb1a35fb8ea0007898d6b6 Mon Sep 17 00:00:00 2001 From: Timothy Heidcamp Date: Fri, 5 Jun 2026 14:11:28 -0400 Subject: [PATCH 1/3] Fix: Dim 1 not calculating properly Fixed an issue with sum, product, ... where an argument of dim=1 would break and show the wrong answer repeating the first calculations. --- tdishr/TdiMaxVal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tdishr/TdiMaxVal.c b/tdishr/TdiMaxVal.c index cb60787fd2..5fadf08aeb 100644 --- a/tdishr/TdiMaxVal.c +++ b/tdishr/TdiMaxVal.c @@ -948,7 +948,7 @@ static inline void OperateIfun(char init, int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, From ff2ec0e5c10484c22313fdcc3f7f439732a74b49 Mon Sep 17 00:00:00 2001 From: Timothy Heidcamp Date: Fri, 5 Jun 2026 15:46:41 -0400 Subject: [PATCH 2/3] Resolved several duplications of the same issue. --- tdishr/TdiMaxVal.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tdishr/TdiMaxVal.c b/tdishr/TdiMaxVal.c index 5fadf08aeb..f4cb588000 100644 --- a/tdishr/TdiMaxVal.c +++ b/tdishr/TdiMaxVal.c @@ -283,7 +283,7 @@ operateIloc(char *start, int testit(const char *, const char *), args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb++ < a->cnt_bef; @@ -317,7 +317,7 @@ static inline void OperateFloc(char dtype, double start, int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb++ < a->cnt_bef; @@ -351,7 +351,7 @@ static inline void OperateTloc(int testit(), args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb++ < a->cnt_bef; @@ -538,7 +538,7 @@ operateIval(char *start, int testit(const char *, const char *), args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -569,7 +569,7 @@ static inline void OperateFval(char dtype, double start, int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -601,7 +601,7 @@ static inline void OperateTval(int testit(), args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -757,7 +757,7 @@ static inline void OperateImean(size_t buflen, char *pid, *pib, *pia; char *pmd, *pmb, *pma; char *buf = malloc(buflen); - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -788,7 +788,7 @@ static inline void OperateFmean(char dtype, args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -826,7 +826,7 @@ static inline void OperateCmean(char dtype, args_t *a) int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -973,7 +973,7 @@ static inline void OperateFfun(double init, char dtype, int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, @@ -1010,7 +1010,7 @@ static inline void OperateCfun(double init, char dtype, int ja, jb, jd; char *pid, *pib, *pia; char *pmd, *pmb, *pma; - for (ja = 0; pia = a->inp, pma = a->maskp, ja < a->cnt_aft; + for (ja = 0, pia = a->inp, pma = a->maskp; ja < a->cnt_aft; ja++, pia += a->stp_aft, pma += a->stpm_aft) { // LOOP_AFTER for (jb = 0, pib = pia, pmb = pma; jb < a->cnt_bef; jb++, pib += a->stp_bef, From 04ae6c788c19ebf4ff7995873fc1d5ee595df591 Mon Sep 17 00:00:00 2001 From: Timothy Heidcamp Date: Wed, 10 Jun 2026 10:49:27 -0400 Subject: [PATCH 3/3] Fix formatting of table in comments describing how DIMs work. --- tdishr/TdiTrans.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tdishr/TdiTrans.c b/tdishr/TdiTrans.c index 4f303f08a8..9963974bcc 100644 --- a/tdishr/TdiTrans.c +++ b/tdishr/TdiTrans.c @@ -64,14 +64,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. vector offsets from first element. For logical array V[3,4,5], steps in unit sizes: - loop count @step no DIM DIM=0 optim DIM=1 DIM=2 - outer aft 1 @xx 20 @3 1 @xx 5 @12 1 @60 DIM - dimension and number of results middle bef 1 @1 1 @3 20 @3 - 3 @1 12 @1 product of dims after DIM inner dim 60 @1 3 - @1 3 @1 4 @3 5 @12 product of dims before DIM Example, ALL(V,0) - chooses elements: [0,1,2] [3,4,5] ... Example, ALL(V,1) chooses elements: - [0,3,6,9] [1,4,7,10] [2,5,8,11] / [12,15,18,21] ... Example, ALL(V,2) chooses - elements: [0,12,24,36,48] [1,13...], ... [11,...] + loop | count @step | no DIM | DIM=0 | optim | DIM=1 | DIM=2 | + outer | aft | 1 @xx | 20 @3 | 1 @xx | 5 @12 | 1 @60 | DIM dimension and number of results + middle | bef | 1 @1 | 1 @3 | 20 @3 | 3 @1 | 12 @1 | product of dims after DIM + inner | dim | 60 @1 | 3 @1 | 3 @1 | 4 @3 | 5 @12 | product of dims before DIM + Example, ALL(V,0) chooses elements: [0,1,2] [3,4,5] ... + Example, ALL(V,1) chooses elements: [0,3,6,9] [1,4,7,10] [2,5,8,11] / [12,15,18,21] ... + Example, ALL(V,2) chooses elements: [0,12,24,36,48] [1,13...], ... [11,...] Ken Klare, LANL P-4 (c)1989,1990,1991 NEED units for DERIVATIVE INTEGRAL.