There was something wrong when I tried to print the result of DoubleAsFixedPoint. After debugging, I found two errors in its source code.
When integerBits or fractionalBits is negative, it undergoes no validation, and logically, it will execute successfully if the sum of integerBits and fractionalBitsis greater than 0. However, negative numbers are meaningless here. For example, the official documentation's description of integerBits states: "Assumed number of integer bits (including the sign bit)."
namespace Test {
open Microsoft.Quantum.Logical;
open Microsoft.Quantum.Diagnostics;
open Microsoft.Quantum.Oracles;
open Microsoft.Quantum.Convert;
open Microsoft.Quantum.Arrays;
open Microsoft.Quantum.Math;
open Microsoft.Quantum.Arithmetic;
open Microsoft.Quantum.Canon;
open Microsoft.Quantum.Intrinsic;
@EntryPoint()
operation main() : Unit {
mutable integerBits = 4;
mutable fractionalBits = 64;
mutable value = 9.1;
mutable APIResult = DoubleAsFixedPoint(integerBits, fractionalBits, value);
Message($"{APIResult}");
}
}
Expected behavior
Add fact statements to the FixedPointAsBoolArray function to prompt integerBits and fractionalBits should be positive.
The overflow problem with the Floor is traced to the Truncate function.
Actual behavior
System.OverflowException: “Arithmetic operation resulted in an overflow.”
Describe the bug
There was something wrong when I tried to print the result of
DoubleAsFixedPoint.
After debugging, I found two errors in its source code.integerBits
orfractionalBits
is negative, it undergoes no validation, and logically, it will execute successfully if the sum ofintegerBits
andfractionalBits
is greater than0
. However, negative numbers are meaningless here. For example, the official documentation's description of integerBits states: "Assumed number of integer bits (including the sign bit)."rescaledConstant
is too big to calculate.To Reproduce
Expected behavior
Add fact statements to the
FixedPointAsBoolArray
function to promptintegerBits
andfractionalBits
should be positive.The overflow problem with the
Floor
is traced to theTruncate
function.Actual behavior
System.OverflowException: “Arithmetic operation resulted in an overflow.”
System information
Additional context
We can submit a PR to fix this bug QuantumLibraries.