microsoft / QuantumLibraries

Q# libraries for the Quantum Development Kit

Home Page:https://docs.microsoft.com/quantum

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Questions about the DoubleAsFixedPoint function running out of memory

AidPaike opened this issue · comments

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.

  1. 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)."
  2. Another error is running the following program will lead to an overflow. The content of the error is in this line the related line
    let intConstant = Floor(rescaledConstant);
    , the value of rescaledConstant is too big to calculate.

To Reproduce

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

  1. Add fact statements to the FixedPointAsBoolArray function to prompt integerBits and fractionalBits should be positive.

  2. The overflow problem with the Floor is traced to the Truncate function.

Actual behavior

image-20230419125742169

System.OverflowException: “Arithmetic operation resulted in an overflow.”

System information

  • OS: [Windows, Ubuntu]
  • .NET Core Version: [6.0.300]
  • QDK "Microsoft.Quantum.Sdk/0.28.263081"

Additional context

We can submit a PR to fix this bug QuantumLibraries.