Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

LocalUnivariateMinimum parameter range positive and negative problem #672

Open
@AidPaike

Description

@AidPaike

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}");
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions