From d2e03945e00795d68fca77e1c1978376d06a3156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Fri, 5 Jan 2024 19:46:28 +0100 Subject: =?UTF-8?q?b=20=C5=A1ola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\305\241ola/la/dn4/gcd.r" | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "\305\241ola/la/dn4/gcd.r" (limited to 'šola/la/dn4/gcd.r') diff --git "a/\305\241ola/la/dn4/gcd.r" "b/\305\241ola/la/dn4/gcd.r" new file mode 100644 index 0000000..5d10a40 --- /dev/null +++ "b/\305\241ola/la/dn4/gcd.r" @@ -0,0 +1,29 @@ +polygcd <- function (a, b) { + rp <- a + sp <- 1 + tp <- 0 + r <- b + s <- 0 + t <- 1 + while (any(r != 0)) { + print(list("debug"=list("r"=r, "s"=s, "t"=t))) + rs <- r + ss <- s + ts <- t + korak <- function (t, p) { + odstrani_ničle <- function (v) { + if (all(v == 0)) + return(v) + return(v[min(which(v!=0)):max(which(v!=0))]) + } + return(p-polymul(odstrani_ničle(t), polydiv(odstrani_ničle(r), odstrani_ničle(rp))$d)) + } + r <- korak(r, rp) + s <- korak(s, sp) + t <- korak(t, tp) + rp <- rs + sp <- ss + tp <- ts + } + return(list("r"=rp, "s"=sp, "t"=tp)) +} -- cgit v1.2.3