Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Matrices/standard_integer_norms.adb, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Common_Divisors; use Standard_Common_Divisors;
2:
3: package body Standard_Integer_Norms is
4:
5: function gcd ( v : Vector ) return integer is
6:
7: tmp : Vector(v'range);
8: res : integer;
9:
10: begin
11: for i in v'range loop
12: if v(i) < 0
13: then tmp(i) := -v(i);
14: else tmp(i) := v(i);
15: end if;
16: end loop;
17: res := tmp(tmp'first);
18: for i in (tmp'first+1)..tmp'last loop
19: res := gcd(res,tmp(i));
20: exit when (res = 1);
21: end loop;
22: return res;
23: end gcd;
24:
25: procedure Normalize ( v : in out Vector ) is
26:
27: g : constant integer := gcd(v);
28:
29: begin
30: if (g /= 0) and then (g /= 1)
31: then for i in v'range loop
32: v(i) := v(i)/g;
33: end loop;
34: end if;
35: end Normalize;
36:
37: end Standard_Integer_Norms;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>