Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function x = poly(arr1, arr2)
- sum = add(arr1, arr2)
- mul = multiplication(arr1, arr2)
- [q, r] = division(arr1, arr2)
- gcd = gcd_poly(arr1, arr2)
- end
- function ans = add(arr1, arr2)
- if (length(arr2) > length(arr1))
- c = arr1;
- arr1 = arr2;
- arr2 = c;
- end
- ans = zeros(1, length(arr1));
- n = length(arr1);
- m = length(arr2);
- for i=n:-1:1
- if (m > 0)
- ans(i) = arr1(i) + arr2(m);
- m -= 1;
- else
- ans(i) = arr1(i);
- end
- end
- end
- function ans = multiplication(arr1, arr2)
- n = length(arr1) + length(arr2) - 1;
- ans = zeros(1, n);
- for i=1:length(arr1)
- pw1 = length(arr1) - i;
- for j=1:length(arr2)
- pw2 = length(arr2) - j;
- ans(n - pw1 - pw2) += arr1(i) * arr2(j);
- end
- end
- end
- function [ans1, ans2] = division(arr1, arr2)
- ans1 = [];
- while (length(arr1) >= length(arr2) && (arr1(1) != 0))
- d = arr1(1) / arr2(1);
- ans1 = [ans1 d];
- for i=1:length(arr2)
- arr1(i) -= arr2(i) * d;
- end
- t = length(arr1);
- while (t > 1)
- arr1(1) = [];
- end
- end
- ans2 = arr1;
- end
- function ans = gcd_poly(arr1, arr2)
- if (length(arr2) > length(arr1))
- c = arr1;
- arr1 = arr2;
- arr2 = c;
- end
- r = 1;
- while ((length(arr1) > 1 && length(arr2) > 1) && (r != 0))
- fx = arr1;
- gx = arr2;
- [~, r]= division(fx, gx);
- i = 1;
- while ((r(i) == 0) && (length(r) > 1))
- r(i) = [];
- end
- if (r == 0)
- break;
- end
- arr1 = gx;
- arr2 = r;
- end
- ans = r;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement