mdsplus icon indicating copy to clipboard operation
mdsplus copied to clipboard

Fix: Add better handling of division by 0 (int and float) for MOD()

Open santorofer opened this issue 2 months ago • 1 comments

This is intended to be a discussion, there are several ways this can be handled for integers. Regardless, $ROPRAND is well suited for handling divide by zero errors for floating points.

Option 1: We could make both DIVIDE and MOD return the new TdiDIV_BY_ZERO error when dividing by zero Option 2: We could make only MOD return this, and leave DIVIDE returning 0 Option 3: Make MOD return 0 as well and not add TdiDIV_BY_ZERO

This moves MOD (mod_float, mod_bin, OperateBin, Tdi3Mod) into TdiDivide.c This currently adds a new TdiDIV_BY_ZERO error to tdishr_messages.xml (see above)

This is intended to fix the error handling for 0 % 0, which currently segfaults.

santorofer avatar Dec 03 '25 20:12 santorofer

I've glanced at this PR and it looks good, however I will do a more thorough review later.

Here are some initial comments . . .

  • I favor adding the new DIV_BY_ZERO status code for division even though it might be a breaking change for some customers. However, as per this morning's team meeting, this proposed change merits additional discussion.

  • The $ROPRAND constant (for missing data) should be included in the new TDI documentation. (It is described in the existing Wiki, but not with the other constants.)

mwinkel-dev avatar Dec 04 '25 22:12 mwinkel-dev