diff --git a/src/Simulation/TargetDefinitions/Decompositions/ResultArrayAsInt.qs b/src/Simulation/TargetDefinitions/Decompositions/ResultArrayAsInt.qs
new file mode 100644
index 00000000000..8866ca3efb9
--- /dev/null
+++ b/src/Simulation/TargetDefinitions/Decompositions/ResultArrayAsInt.qs
@@ -0,0 +1,18 @@
+namespace Microsoft.Quantum.Convert {
+ open Microsoft.Quantum.Arrays;
+
+ /// # Summary
+ /// Produces a non-negative integer from a string of Results in little endian format.
+ ///
+ /// # Input
+ /// ## results
+ /// Results in binary representation of number.
+ function ResultArrayAsInt(results : Result[]) : Int {
+ mutable val = 0;
+ for i in IndexRange(results) {
+ set val += results[i] == One ? 2 ^ i | 0;
+ }
+ return val;
+ }
+
+}
diff --git a/src/Simulation/TargetDefinitions/TargetPackages/Type1.Package.props b/src/Simulation/TargetDefinitions/TargetPackages/Type1.Package.props
index 3e1a7bea05a..a0f303637d0 100644
--- a/src/Simulation/TargetDefinitions/TargetPackages/Type1.Package.props
+++ b/src/Simulation/TargetDefinitions/TargetPackages/Type1.Package.props
@@ -45,6 +45,7 @@
+
diff --git a/src/Simulation/TargetDefinitions/TargetPackages/Type2.Package.props b/src/Simulation/TargetDefinitions/TargetPackages/Type2.Package.props
index 591fcb40a0f..4e03abbaf1b 100644
--- a/src/Simulation/TargetDefinitions/TargetPackages/Type2.Package.props
+++ b/src/Simulation/TargetDefinitions/TargetPackages/Type2.Package.props
@@ -40,6 +40,7 @@
+
diff --git a/src/Simulation/TargetDefinitions/TargetPackages/Type3.Package.props b/src/Simulation/TargetDefinitions/TargetPackages/Type3.Package.props
index fae38c8e979..a6816ffcc92 100644
--- a/src/Simulation/TargetDefinitions/TargetPackages/Type3.Package.props
+++ b/src/Simulation/TargetDefinitions/TargetPackages/Type3.Package.props
@@ -46,6 +46,7 @@
+
diff --git a/src/Simulation/TargetDefinitions/TargetPackages/Type4.Package.props b/src/Simulation/TargetDefinitions/TargetPackages/Type4.Package.props
index d3956fc54d8..821176af1fe 100644
--- a/src/Simulation/TargetDefinitions/TargetPackages/Type4.Package.props
+++ b/src/Simulation/TargetDefinitions/TargetPackages/Type4.Package.props
@@ -46,6 +46,7 @@
+
diff --git a/src/Simulation/TargetDefinitions/Tests/Tests.TargetDefinitions.csproj b/src/Simulation/TargetDefinitions/Tests/Tests.TargetDefinitions.csproj
index 3d504cfbde2..5f52f6b398e 100644
--- a/src/Simulation/TargetDefinitions/Tests/Tests.TargetDefinitions.csproj
+++ b/src/Simulation/TargetDefinitions/Tests/Tests.TargetDefinitions.csproj
@@ -40,6 +40,7 @@
+
diff --git a/src/Simulation/TargetDefinitions/Tests/UtilitiesTest.qs b/src/Simulation/TargetDefinitions/Tests/UtilitiesTest.qs
new file mode 100644
index 00000000000..45fab230568
--- /dev/null
+++ b/src/Simulation/TargetDefinitions/Tests/UtilitiesTest.qs
@@ -0,0 +1,16 @@
+namespace UtilitiesTests {
+ open Microsoft.Quantum.Convert;
+ open Microsoft.Quantum.Diagnostics;
+
+ @Test("SparseSimulator")
+ operation VerifyResultArrayAsInt() : Unit {
+ Fact(ResultArrayAsInt([Zero, Zero, Zero]) == 0, "ResultArrayAsInt of 0 value should work");
+ Fact(ResultArrayAsInt([One, Zero, Zero]) == 1, "ResultArrayAsInt of 1 value should work");
+ Fact(ResultArrayAsInt([Zero, One, Zero]) == 2, "ResultArrayAsInt of 2 value should work");
+ Fact(ResultArrayAsInt([One, One, Zero]) == 3, "ResultArrayAsInt of 3 value should work");
+ Fact(ResultArrayAsInt([Zero, Zero, One]) == 4, "ResultArrayAsInt of 4 value should work");
+ Fact(ResultArrayAsInt([One, Zero, One]) == 5, "ResultArrayAsInt of 5 value should work");
+ Fact(ResultArrayAsInt([Zero, One, One]) == 6, "ResultArrayAsInt of 6 value should work");
+ Fact(ResultArrayAsInt([One, One, One]) == 7, "ResultArrayAsInt of 7 value should work");
+ }
+}
\ No newline at end of file