Hola,
Antes que nada, estaría bueno que digan exactamente cuál es el error, así no nos obliga a ejecutar el código para ver qué ocurrió.
Luego de ejecutarlo veo que no me da error, me da un warning (es un aviso, un "prestá atención a esto que te digo"). No significa que haya algo mal.
El warning que te da dice: "warning: Matlab-style short-circuit operation performed for operator &". Eso significa que te avisa que en el if, o en el elseif el & va a funcionar como &&. Esto está definido así para Octave y ante eso podés hacer dos cosas, o configurar Octave para que ese warning no te aparezca más, o sustituir todos los & por &&, y los | por || (si los hubiese), así no aparece el warning para avisarte de lo que va a hacer.
Entonces, si hacés ese cambio (& por &&) te desaparecerán los warnings.
Si por el contrario, no querés cambiar el código y querés configurar Octave para que ese warning no aparezca más, poné en la ventana de comandos:
>> warning("off", "Octave:possible-matlab-short-circuit-operator")
A mi me funcionó.
Espero que esto aclare tus dudas.
Lo más importante de todo lo que escribí es que no es lo mismo un warning que un error. Atención para la próxima.
saludos atentos,
Eduardo