The overflow is because of an infinite loop (and compiler shows it). Your proc 
`-` does nothing, except of calling itself with same argument. It doesn't call 
the `-` of `float32`, as you probably expect - the arguments type is still 
`F_TYPE`. So just say to compiler to call the `-` of `float32`, by calling it 
for an `F_TYPE` value:
    
    
    proc `-`*(a:F_TYPE): F_TYPE =
      return (-a.float32).F_TYPE
    

The same for two other procs.

Or you can do simpler - just borrow parent type's procs:
    
    
    proc `-`*(a:F_TYPE): F_TYPE {.borrow.}
    

Reply via email to