krispiekream wrote:
its it okay to leave it? it works fine?
Coercion dots should ALWAYS be carefully inspected. "Works fine" are often "famous last words", right before it crashes hard. 😮
Every coercion can cause trouble further down the line. For every coercion dot, you need to check what is coerced to what datatype and then you need to make an informed decision what you actually want.
Different datatypes have different valid numerical ranges, try e.g. to multiply an U32 value of 1 with an I32 diagram constant of -1.
I am pretty sure you would not expect a U32 result of 4294967295 (well, I would! ;)).
Basically, a coercion dot is always a big warning sign. It is much safer to eliminate them whenever possible to make things clear.
There is also a performance issue, which comes into play whenever you are coercing large data structures (e.g. arrays). Every coercion forces a datacopy in memory, so coercions can easily double the memory use of your program.
You can easily avoid coercions. For example for the Q&R case, wire the upper input first and then right-click on the lower input and "create constant" it will have a matching type without coercion. To create a diagram constant of the right type, you can also right-click a wire, control, or indicator and "create constant". Now just wire it up where needed.