I have a large list of $(x,y)$ pairs, and I want to find the index of a particular pair in order to extract some data from another array.
By way of an example,
samplelist = Flatten[Table[{i, j}, {i, 1, 5}, {j, 1, 5}], 1]; (* {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, {2, 5}, {3, 1}, {3, 2}, {3, 3}, {3, 4}, {3, 5}, {4, 1}, {4, 2}, {4, 3}, {4, 4}, {4, 5}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}} *) position = Last@Last@Position[(Boole[# == {1, 3}] & /@ samplelist), n_ /; n == 1]; (* 3 *) samplelist[[position]] (* {1, 3} *) Which is great. But I want to compile this, as the rest of my code is also compiled.
Just doing the following, with SetSystemOptions["CompileOptions" -> "CompileReportExternal" -> True], returns an error because n_ /; n == 1 cannot be compiled.
Note that without the above system options set, it returns no error message, but clearly hasn't compiled, as doing a CompilePrint on the function shows it hasn't.
myPos = Compile[{{list, _Real, 2}, {val, _Real, 1}}, Position[(Boole[# == val] & /@ list), n_ /; n == 1]]; Is there a way to overcome this and create a compiled function that does what I want?