本論とは別に、少しだけ気になったので。

require 'narray'
p (NArray[0]==NArray[1])          #=> 'NArray.byte(1)\n[ 0 ]'
p (NArray[0, 1] == NArray[1])     #=> 'NArray.byte(2)\n[ 0, 1 ]'
p (NArray[0] == NArray[1, 0])     #=> 'NArray.byte(2)\n[ 0, 1 ]'
p (NArray[0, 0] == NArray[0, 1, 0]) #=> Array size mismatch

は、作者の方の意図とあってますか。サイズが 1 の NArray との比較は
例外的にふるまうように作られています。 試した NArray の version は 0.5.3 です。

比較の動作についてよくわかってないので外していたらごめんなさい。
--
池上 大介
Daisuke IKEGAMI <daisu-ik / is.aist-nara.ac.jp>
奈良先端科学技術大学院大学 情報科学研究科
情報処理学専攻 情報基礎学講座 関研究室