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

ModPowL may entry a loops when set exponent to "0L" #1106

Open
hofirstb19 opened this issue Nov 8, 2022 · 1 comment
Open

ModPowL may entry a loops when set exponent to "0L" #1106

hofirstb19 opened this issue Nov 8, 2022 · 1 comment
Labels
bug Something isn't working needs triage An initial review by a maintainer is needed

Comments

@hofirstb19
Copy link

Description

When set exponent and modulus to 0L, in the source code, the function ModPowL should not enter the loop and return 1L. However, in the following test case, there is a Unhandled exception which indicates there is a divide by zero operation.

source code

while runningExponent > 0L {

Testcase

namespace NISLNameSpace {
	open Microsoft.Quantum.Math;
	open Microsoft.Quantum.Intrinsic;

	@EntryPoint()
	operation main() : Unit {
		let value = 1L;
		let exponent = 0L;
		let modulus = 0L;
		let NISLModPowL = ModPowL(value,exponent,modulus);
		Message($"{value}");
		Message($"{exponent}");
		Message($"{modulus}");
		Message($"{NISLModPowL}");
	}
}

Environment

operating system : Windows 10 and Ubuntu 18.06
dotnet version : 6.0.400
QDK : 0.25.228311

@hofirstb19 hofirstb19 added bug Something isn't working needs triage An initial review by a maintainer is needed labels Nov 8, 2022
@weucode
Copy link

weucode commented Mar 30, 2023

The real running code is here.

public override Func<(BigInteger, BigInteger, BigInteger), BigInteger> __Body__ => (args) => BigInteger.ModPow(args.Item1, args.Item2, args.Item3);

It raises an exception correctly because this program tries to make the divisor 0. Moreover, I'd like to know when this code will execute, because this may decide whether it is necessary to add more operation for the situation that modulus=0.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working needs triage An initial review by a maintainer is needed
Projects
None yet
Development

No branches or pull requests

2 participants