user47827: There is a OP_EQUAL opcode that returns (from the Bitcoin wiki):

1 if the inputs are exactly equal, 0 otherwise

And a OP_NUMEQUAL opcode that returns:

1 if the numbers are equal, 0 otherwise

In the case where you want to use OP_NOTEQUAL it is suggested to use OP_NUMNOTEQUAL so it seems like OP_EQUAL and OP_NUMEQUAL can be used interchangeably when dealing with integers:
//case OP_NOTEQUAL: // use OP_NUMNOTEQUAL
What is the point of the OP_NUMEQUAL opcode? Can't you just always use OP_EQUAL instead? Is OP_NUMEQUAL more efficient than OP_EQUAL when dealing with integers?

user47827: OP_NUMEQUAL doesn't provide a subset of the functionality of OP_EQUAL as they evaluate differently when comparing 0x01 with 0x0001. OP_NUMEQUAL evaluates 0x01 and 0x0001 as equal as it compares 1 with 1 whilst OP_EQUAL does not deem them equal as it compares a different number of bytes. Hence which one you use in your script will be determined by whether you want such a comparison to evaluate to equal or not.

47827: <p>There is a OP_EQUAL <a href="https://github.com/bitcoin/bitcoin/blob/master/src/script/interpreter.cpp#L886" rel="nofollow noreferrer">opcode</a> that returns (from the Bitcoin <a href="https://en.bitcoin.it/wiki/Script" rel="nofollow noreferrer">wiki</a>):</p>
<blockquote>
<p>1 if the inputs are exactly equal, 0 otherwise</p>
</blockquote>
<p>And a OP_NUMEQUAL <a href="https://github.com/bitcoin/bitcoin/blob/master/src/script/interpreter.cpp#L97698073cdfab01/src/script/interpreter.cpp#L976" rel="nofollow noreferrer">opcode</a> that returns:</p>
<blockquote>
<p>1 if the numbers are equal, 0 otherwise</p>
</blockquote>
<p>In the case where you want to use OP_NOTEQUAL it is <a href="https://github.com/bitcoin/bitcoin/blob/master/src/script/interpreter.cpp#L888" rel="nofollow noreferrer">suggested</a> to use OP_NUMNOTEQUAL so it seems like OP_EQUAL and OP_NUMEQUAL can be used interchangeably when dealing with integers:</p>
<p><code>//case OP_NOTEQUAL: // use OP_NUMNOTEQUAL</code></p>
<p>What is the point of the OP_NUMEQUAL opcode? Can't you just always use OP_EQUAL instead? Is OP_NUMEQUAL more efficient than OP_EQUAL when dealing with integers?</p>
 47827: <p>OP_NUMEQUAL doesn't provide a subset of the functionality of OP_EQUAL as they evaluate differently when comparing <code>0x01</code> with <code>0x0001</code>. OP_NUMEQUAL evaluates <code>0x01</code> and <code>0x0001</code> as equal as it compares <code>1</code> with <code>1</code> whilst OP_EQUAL does <strong>not</strong> deem them equal as it compares a different number of bytes. Hence which one you use in your script will be determined by whether you want such a comparison to evaluate to equal or not.</p>
