summaryrefslogtreecommitdiff
path: root/modules/scicos/macros/scicos_utils/fixedpointgcd.sci
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