Operator MOD
#25
Out of boredom I took some examples from Wikipedia. They are in the form of subprograms for when it's not tolerated if the result of division is zero, which is possible in some long-winded calculations. Using a subprogram is clumsy but I don't recommend using a "FUNCTION" to try to return more than one value, one which is the LHS of assignment (FUNCTION-NAME = value) and the other which is one of the parameters, because it confuses beginner and intermediate BASIC programmers. Side-effects are good only for those who know what they are doing. Some of you are saying, "oh just assign q and r as part of sub parameter list", but I did it this way to emphasize that the last two values are going to be changed by the subprogram.

Code: (Select All)
''from C functions displayed in:
''https://en.wikipedia.org/wiki/Modulo_operation
''by mnrvovrfc

''CHANGED: quot, remd
''remd = -1 if denom = 0, otherwise remd is expected to be positive
''must use integer division because "regular" division doesn't work properly in QB64
sub ldive(numer as _integer64, denom as _integer64, quot as _integer64, remd as _integer64)
    dim q as _integer64, r as _integer64
    if denom = 0 then
        quot = 0
        remd = -1
        exit sub
    end if
    q = numer \ denom
    r = numer MOD denom
    if r < 0 then
        if denom > 0 then
            q = q - 1
            r = r + denom
        else
            q = q + 1
            r = r - denom
        end if
    end if
    quot = q
    remd = r
end sub

''CHANGED: quot, remd
''remd = -1 if denom = 0
sub ldivf(numer as _integer64, denom as _integer64, quot as _integer64, remd as _integer64)
    dim q as _integer64, r as _integer64
    if denom = 0 then
        quot = 0
        remd = -1
        exit sub
    end if
    q = numer \ denom
    r = numer MOD denom
    if (r > 0 and denom < 0) or (r < 0 and denom > 0) then
        q = q - 1
        r = r + denom
    end if
    quot = q
    remd = r
end sub
Reply


Messages In This Thread
Operator MOD - by Chris - 11-27-2022, 07:09 PM
RE: Operator MOD - by Pete - 11-27-2022, 07:35 PM
RE: Operator MOD - by Chris - 11-27-2022, 07:47 PM
RE: Operator MOD - by SMcNeill - 11-27-2022, 08:03 PM
RE: Operator MOD - by Chris - 11-27-2022, 08:17 PM
RE: Operator MOD - by Pete - 11-27-2022, 08:23 PM
RE: Operator MOD - by Chris - 11-27-2022, 08:30 PM
RE: Operator MOD - by SMcNeill - 11-27-2022, 08:44 PM
RE: Operator MOD - by mnrvovrfc - 11-27-2022, 08:32 PM
RE: Operator MOD - by bplus - 11-27-2022, 08:42 PM
RE: Operator MOD - by Chris - 11-27-2022, 08:54 PM
RE: Operator MOD - by SMcNeill - 11-27-2022, 08:57 PM
RE: Operator MOD - by SMcNeill - 11-27-2022, 09:02 PM
RE: Operator MOD - by Jack - 11-27-2022, 09:02 PM
RE: Operator MOD - by Chris - 11-27-2022, 09:02 PM
RE: Operator MOD - by SMcNeill - 11-27-2022, 09:06 PM
RE: Operator MOD - by Chris - 11-27-2022, 09:08 PM
RE: Operator MOD - by Chris - 11-27-2022, 09:14 PM
RE: Operator MOD - by Jack - 11-27-2022, 09:18 PM
RE: Operator MOD - by Pete - 11-27-2022, 09:23 PM
RE: Operator MOD - by Chris - 11-27-2022, 09:28 PM
RE: Operator MOD - by Chris - 11-27-2022, 09:52 PM
RE: Operator MOD - by Pete - 11-27-2022, 10:41 PM
RE: Operator MOD - by mnrvovrfc - 11-28-2022, 01:17 AM
RE: Operator MOD - by mnrvovrfc - 11-28-2022, 04:01 AM
RE: Operator MOD - by mnrvovrfc - 11-28-2022, 02:57 AM
RE: Operator MOD - by Pete - 11-28-2022, 03:21 AM
RE: Operator MOD - by Jack - 11-28-2022, 10:13 AM
RE: Operator MOD - by Kernelpanic - 11-28-2022, 04:03 PM
RE: Operator MOD - by Jack - 11-28-2022, 11:56 AM
RE: Operator MOD - by Chris - 11-28-2022, 03:21 PM
RE: Operator MOD - by Chris - 11-28-2022, 04:06 PM
RE: Operator MOD - by Pete - 11-28-2022, 07:02 PM
RE: Operator MOD - by mnrvovrfc - 11-28-2022, 08:23 PM
RE: Operator MOD - by SMcNeill - 11-28-2022, 09:54 PM
RE: Operator MOD - by mnrvovrfc - 11-28-2022, 10:10 PM
RE: Operator MOD - by Pete - 11-28-2022, 10:23 PM
RE: Operator MOD - by Kernelpanic - 11-29-2022, 11:12 PM
RE: Operator MOD - by SMcNeill - 11-28-2022, 10:33 PM
RE: Operator MOD - by Kernelpanic - 11-28-2022, 11:46 PM
RE: Operator MOD - by mnrvovrfc - 11-29-2022, 12:10 AM
RE: Operator MOD - by Pete - 11-29-2022, 12:00 AM
RE: Operator MOD - by Kernelpanic - 11-29-2022, 12:05 AM
RE: Operator MOD - by SMcNeill - 11-29-2022, 12:35 AM
RE: Operator MOD - by Kernelpanic - 11-29-2022, 12:25 AM
RE: Operator MOD - by Pete - 11-29-2022, 12:36 AM
RE: Operator MOD - by bplus - 11-29-2022, 01:29 AM
RE: Operator MOD - by Pete - 11-29-2022, 01:42 AM
RE: Operator MOD - by bplus - 11-29-2022, 04:41 AM
RE: Operator MOD - by SMcNeill - 11-29-2022, 06:24 AM
RE: Operator MOD - by SMcNeill - 11-29-2022, 06:34 AM
RE: Operator MOD - by bplus - 11-29-2022, 12:27 PM
RE: Operator MOD - by Pete - 11-29-2022, 11:58 PM
RE: Operator MOD - by Kernelpanic - 11-30-2022, 02:50 AM
RE: Operator MOD - by SMcNeill - 11-30-2022, 03:49 AM
RE: Operator MOD - by Kernelpanic - 12-01-2022, 12:41 AM
RE: Operator MOD - by vince - 11-30-2022, 12:41 PM
RE: Operator MOD - by Chris - 12-03-2022, 08:19 AM
RE: Operator MOD - by SMcNeill - 12-03-2022, 08:31 AM
RE: Operator MOD - by Pete - 12-03-2022, 09:06 AM
RE: Operator MOD - by mnrvovrfc - 12-03-2022, 11:56 AM
RE: Operator MOD - by SMcNeill - 12-03-2022, 12:08 PM
RE: Operator MOD - by Kernelpanic - 12-03-2022, 05:07 PM
RE: Operator MOD - by Pete - 12-03-2022, 05:12 PM
RE: Operator MOD - by Kernelpanic - 12-03-2022, 05:20 PM
RE: Operator MOD - by SMcNeill - 12-03-2022, 12:30 PM
RE: Operator MOD - by mnrvovrfc - 12-03-2022, 12:31 PM
RE: Operator MOD - by Pete - 12-03-2022, 03:31 PM
RE: Operator MOD - by DSMan195276 - 12-03-2022, 05:57 PM
RE: Operator MOD - by Kernelpanic - 12-03-2022, 06:48 PM
RE: Operator MOD - by Pete - 12-03-2022, 06:05 PM



Users browsing this thread: 32 Guest(s)