let rec v_larger_than_zero v = match v with
|N i -> if i > 0 then return_N 1 else return_N 0
|R f -> if f > 0. then return_N 1 else return_N 0
|Vec (size, vec) -> make_vector size (fun i -> v_larger_than_zero (vec i))
|Zero -> return_N 0
|W -> W