Программирование функции, параметризованной Доменом в Maple - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу реализовать расширенный евклидов алгоритм для произвольных евклидовых доменов в Maple.

Я попытался передать домен в качестве аргумента процедуры, но, похоже, он не работает.

EEA:=proc(ED,a,b) 
    description 
    "Extended Euclidean Algorithm"
    "INPUT: an Euclidean Domain ED and two elements from said domain"
    "Computes the GCD as a R-linear combination";
    local r_0, r_1, r_aux, s_0, s_1, s_aux, t_0, t_1, t_aux, q;
    # Initialization
    r_0 := a; r_1 := b;
    s_0 := 1; s_1 := 0;
    t_0 := 0; t_1 := 1;

    while r_1 <> 0 do;
        q := ED[quo](r_0, r_1);

        r_aux := r_0 - q * r_1;
        r_0 := r_1; r_1 := r_aux;

        s_aux := s_0 - q * s_1;
        s_0 := s_1; s_1 := s_aux;

        t_aux := t_0 - q * t_1;
        t_0 := t_1; t_1 := t_aux;
    od;
    return r_0, s_0, t_0;
    end proc:

Когда я выполняю:

with(Domains):
a := 30; b := 42; 
r, s, t := EEA(Z, a, b); 

Программа зацикливается.

Что происходит?

1 Ответ

0 голосов
/ 12 ноября 2018

Не важно, мне нужно было использовать Z[Quo].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...