The strange ordering of Sharkovskii
JavaScript (ES6), 53 49 bytes

f=(a,b)=&gt;b&lt;2||a&gt;1&amp;&amp;(a&amp;b&amp;1?a&lt;=b:a&amp;1|~b&amp;f(a/2,b/2))


Explanation:


If b is 1, then a precedes (or equals) b
Otherwise, if a is 1, then a does not precede b
Otherwise, if both a and b are odd, then use regular inequality check
Otherwise, if a is odd, then it precedes b
Otherwise, if b is odd, then a does not precede b
Otherwise, divide both a and b by 2 and try again.


Edit: Saved 2 bytes thanks to @Arnauld.