Error: HDL Compiler : 1660 : Procedural assignment to a non-register big_mant is not permitted, left-hand side should be reg/integer/time/genvar
The error says left-hand side should be reg/integer/time/genvar - in other words, on the line indicated, the left hand side of the &lt;= assignment must be one of those four types.

Your left-hand side is declared as output big_mant (same goes for output small_mant) which are of type wire. You cannot do a procedural assignment (assignment inside an always statement or initial block) to a wire type as the error message has told you.

Change the two outputs to output reg types if you wish to use them as the left hand side of a procedural assignment statement.