Re: [AD] div-by-zero... math3d.c |

[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]

aj wrote:

normalize_vector_f()
in /allegro419/src/math3d.c
could the vector_length_f() return zero ?

I replied:
> Certainly, e.g., if all three arguments are zero.

`Maybe I should elaborate a bit on that: If all three arguments are
``zero, then the local variable `length' becomes infinity and
``*x=*y=*z=NaN. However, it seems possible that, the arguments are
``initially moderately tiny but not zero, so that their squares are zero.
`` In this case `length' becomes infinity but *x=*y=*z=0.0, a little bit
``inconsistent with the previous case.
`

`OTOH, I think there is probably a problem in the user code in such a
``case; you shouldn't try to normalize so small vectors anyway.
`
> Btw, I think this routine would better be implemented as
>
> fixhypot(x, fixhypot(y,z))
>
> to avoid the current loss of precision.

`Um, sorry, I now changed context, and was of course referring to the
``implementation of `vector_length()'.
`
Sven