How to find double output?

import java.math.*;
>> p=BigInteger('11');
>> m=BigInteger('2');
>> [A,B]=m.gcd(p);
Error using java.math.BigInteger/gcd
Java methods cannot be called with multiple output arguments
How to resolve this issue? I need both A and B.
Thanking in anticipation

7 Commenti

Rik
Rik il 2 Mar 2022
What is the second output? There might be a way to compute it separately.
Ammy
Ammy il 2 Mar 2022
Modificato: Ammy il 2 Mar 2022
[A,B]=gcd(2,11)
A=1; B=-5;
Ammy
Ammy il 2 Mar 2022
It works when the integers are not in the above format, but showing error with the above format.
Rik
Rik il 2 Mar 2022
Ok, I admit I wasn't clear enough with my question: what is the second output supposed to be in a more general sense? There is only 1 greatest common denominator, so what second value could you extract from it?
I have no experience interfacing with Java (except for copy-paste examples), so I can only help you to try to find a method to calculate the second output another way.
AndresVar
AndresVar il 2 Mar 2022
@Ammy gcd usually just gives 1 output. The matlab function with more than 1 output is returning the Bezout coefficients. Which you can calculate yourself.
You can see Matlab calculates it: edit gcd
Or you can find the algorithm online
Ammy
Ammy il 2 Mar 2022
@Rik Thank you ver much!
I want to extract the following
[A,B] = gcd(m,p);
if A =1 then
a = mod(B,p)
otherwise a=0
I want to find a which depends on both A and B
Ammy
Ammy il 2 Mar 2022
@AndresVar, thank you very much but I want to deal with both the outputs.

Accedi per commentare.

 Risposta accettata

import java.math.*;
p = BigInteger('11');
m = BigInteger('2');
A = m.gcd(p)
A = 1
B = m.modInverse(p)
B = 6
m.multiply(B).mod(p)
ans = 1

3 Commenti

Ammy
Ammy il 2 Mar 2022
Modificato: Rik il 2 Mar 2022
@Walter Roberson Thank you very much, Yes I had tried this, but can you please help me is there any way to deal it in a function.
If I have a function inverse.m
import java.math.*;
p = BigInteger('11');
m = BigInteger('2');
ans= m.inverse(p);
where
function a = inverse(b, p)
b = mod(b, p);
[A,B] = gcd(b, p);
if A==1
a = mod(B,p);
else
a = 0;
end
end
import java.math.*;
p = BigInteger('11');
m = BigInteger('2');
a = inverse(m, p)
a = 6
%cross-check
cross_check = m.multiply(a).mod(p)
cross_check = 1
function a = inverse(b, p)
import java.math.*;
A = b.gcd(p);
if A == BigInteger('1')
a = b.modInverse(p);
else
a = BigInteger('0');
end
end
Ammy
Ammy il 2 Mar 2022
Thank you very much!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by