inverse:=func(d,m); r:=[1..25]; for j in [1..25] do r(j):=0; end; q:=r; s:=r; t:=r; u:=r; v:=r; s(1):=1; v(1):=1; r(1):=m; r(2):=d; j:=2; while r(j)>1 do q(j-1):=floor(r(j-1)/r(j)); r(j+1):= r(j-1)-q(j-1)*r(j); s(j):=u(j-1); t(j):=v(j-1); u(j):=s(j-1)-q(j-1)*u(j-1); v(j):=t(j-1)-q(j-1)*v(j-1); j:=j+1; end; if r(j)=1 then return v(j-1) mod m; else return ' no inverse, GCD is not 1'; end; end;