bug 672: add python-based maxloc.py for unit testing
[openpower-isa.git] / src / openpower / decoder / isa / maxloc.py
1 # Implementation of FORTRAN maxloc in python
2 # Copyright (C) Luke Kenneth Casson Leighton <lkcl@lkcl.net>
3 # License: LGPLv3+
4 # https://bugs.libre-soc.org/show_bug.cgi?id=676#c2
5
6 def m2(a):
7 m = 0;
8 nm = 0;
9 i = 0;
10 n = len(a)
11
12 while (i<n):
13 while (i<n and a[i]<=m) :
14 print("%d idx %d <= m %d" % ( i, a[i], m))
15 i += 1
16 while (i < n and a[i] > m) :
17 print("%d idx %d > m %d" % (i, a[i], m))
18 m = a[i]
19 nm = i
20 i += 1
21 return nm;
22
23 # /*Testbench*/
24
25 if __name__ == '__main__':
26 arr = [5,2,8,1,3,7,9,4]
27 print("search list", arr)
28 result = m2(arr)
29 print("Index of the maximum value in an array is: %d" % result)
30 assert (result == 6)
31
32 arr = [5,2,8,9,9,7,9,4]
33 print("search list", arr)
34 result = m2(arr)
35 print("Index of the maximum value in an array is: %d" % result)
36 assert (result == 3)
37
38 arr = [0,0,0,0,0,0,0,0]
39 print("search list", arr)
40 result = m2(arr)
41 print("Index of the maximum value in an array is: %d" % result)
42 assert (result == 0)
43
44 arr = [5,5,5,5,5,5,5,5]
45 print("search list", arr)
46 result = m2(arr)
47 print("Index of the maximum value in an array is: %d" % result)
48 assert (result == 0)