1 # Implementation of FORTRAN maxloc in python
2 # Copyright (C) Luke Kenneth Casson Leighton <lkcl@lkcl.net>
4 # https://bugs.libre-soc.org/show_bug.cgi?id=676#c2
6 from random
import randint
15 while (i
<n
and a
[i
]<=m
) :
16 print("%d idx %d <= m %d" % ( i
, a
[i
], m
))
18 while (i
< n
and a
[i
] > m
) :
19 print("%d idx %d > m %d" % (i
, a
[i
], m
))
25 def sv_maxu(gpr
, CR
, vl
, ra
, rb
, rt
):
28 CR
[0] = cmpd(gpr
[ra
+i
], gpr
[rb
])
29 log("sv_maxss test", i
, gpr
[ra
+ i
], gpr
[rb
], CR
[0], int(CR
[0]))
30 gpr
[rt
] = gpr
[ra
+i
] if CR
[0].lt
else gpr
[rb
]
36 # this version is more akin to SVP64, using an implementation of sv.minmax
45 while (i
<n
and a
[i
]<=m
) :
46 print("%d idx %d <= m %d" % ( i
, a
[i
], m
))
48 while (i
< n
and a
[i
] > m
) :
49 print("%d idx %d > m %d" % (i
, a
[i
], m
))
58 ([5,2,8,1,3,7,9,4], 6),
59 ([5,2,8,9,9,7,9,4], 3),
60 ([0,0,0,0,0,0,0,0], 0),
61 ([5,5,5,5,5,5,5,5], 0),
64 if __name__
== '__main__':
65 for arr
, expected
in test_data
:
66 print("search list", arr
)
68 print("Index of the maximum value in an array is: %d" % result
)
69 assert (result
== expected
)
73 array_len
= randint(2, 15)
75 for j
in range(array_len
):
76 array
.append(randint(0, 20))
77 print("randomised search list", array
)
79 print("Index of the maximum value in an array is: %d" % expected
)
80 assert (m3(array
) == expected
)