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

LocalUnivariateMinimum parameter range positive and negative problem

AidPaike opened this issue · comments

Positive and negative problems of the tolerance parameter in LocalUnivariateMinimum

Conceptual overview

  1. When calling the LocalUnivariateMinimum function, the search will never stop if the tolerance input is negative, because the bool value of Width(interval) > tolerance is always true.
  2. When the (item1,item2) in argument bounds is item1>item2, the bool value of Width(interval) > tolerance is always false, the program will not enter the search logic.

Current status

  1. mutable tolerance = -1.0;The program will never finish executing

  2. let bounds = (1.0, 0.1); The program will never search

Proposal

New and modified functions, operations, and UDTs

  1. LocalUnivariateMinimum source code

    Adding fact statement:

    Fact(tolerance > 0.0, "The tolerance value must be positive.");

  2. LocalUnivariateMinimum Width source code

    Adding fact statement:

    Fact(left <= right, "Left endpoint of bounds must be less than or equal to right endpoint.");

I hope I will be allowed to submit a pr as soon as possible because this logic problem is serious.

Code

namespace Test {
    open Microsoft.Quantum.Canon;
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Math;
    open Microsoft.Quantum.Diagnostics;
    open Microsoft.Quantum.Optimization;


    @EntryPoint()
    operation main () : Unit {
        //mutable tolerance = -1.0;
        mutable tolerance = 0.1;
        mutable fn = AbsD;
        let bounds = (1.0, 0.1);
        //let bounds = (0.1,1.0);
        let result = LocalUnivariateMinimum(fn, bounds, tolerance);
        Message($"{result}");
    }
}

@msoeken I hope that you can spare time to check this issue