blob: e6c9248ddc50bb77aca2d2657504a3f63100a30d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function [value,denom_com]=fixedpointgcd(v)
// This function computes the PGCD of a double vector.
x=log10(v);
f=round((min(x)+max(x))/2);
v=v./10^(f);
[N,D]=rat(v,1d-9);
denom_com=lcm(uint32(D));
N=uint32(N)*denom_com./uint32(D);
value=gcd(N);
if f>0 then value=value*10^f;
else denom_com=double(denom_com)*10^(-f);
end
endfunction
|