You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/12/17 00:30:59 UTC

[commons-numbers] 01/03: Use integer division in MultiDimensionalCounter.toMulti

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git

commit f6a35dabc9a8aab78ddf3dfcb6344e9aa59a75ba
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Tue Dec 17 00:17:46 2019 +0000

    Use integer division in MultiDimensionalCounter.toMulti
---
 .../commons/numbers/arrays/MultidimensionalCounter.java   | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/commons-numbers-arrays/src/main/java/org/apache/commons/numbers/arrays/MultidimensionalCounter.java b/commons-numbers-arrays/src/main/java/org/apache/commons/numbers/arrays/MultidimensionalCounter.java
index 301a0b1..cd8a47f 100644
--- a/commons-numbers-arrays/src/main/java/org/apache/commons/numbers/arrays/MultidimensionalCounter.java
+++ b/commons-numbers-arrays/src/main/java/org/apache/commons/numbers/arrays/MultidimensionalCounter.java
@@ -126,20 +126,13 @@ public final class MultidimensionalCounter {
 
         final int[] indices = new int[dimension];
 
-        int count = 0;
         for (int i = 0; i < last; i++) {
-            int idx = 0;
-            final int offset = uniCounterOffset[i];
-            while (count <= index) {
-                count += offset;
-                ++idx;
-            }
-            --idx;
-            count -= offset;
-            indices[i] = idx;
+            indices[i] = index / uniCounterOffset[i];
+            // index = index % uniCounterOffset[i]
+            index = index - indices[i] * uniCounterOffset[i];
         }
 
-        indices[last] = index - count;
+        indices[last] = index;
 
         return indices;
     }