Rebol Programming/modulo

USAGE:

edit
MODULO a b 

DESCRIPTION:

edit

Wrapper for MOD that handles errors like REMAINDER. Negligible values (compared to A and B) are rounded to zero.

MODULO is a function value.

ARGUMENTS:

edit
  • a -- (Type: number money time)
  • b -- Absolute value will be used (Type: number money time)

(SPECIAL ATTRIBUTES)

edit
  • catch

SOURCE CODE

edit
modulo: func [
    {Wrapper for MOD that handles errors like REMAINDER. Negligible
^-^-values (compared to A and B) are rounded to zero.} 
    [catch] 
    a [number! money! time!] 
    b [number! money! time!] "Absolute value will be used" 
    /local r
][
    throw-on-error [
        any [number? a b: make a b] 
        r: mod a abs b 
        either any [a - r = a r + b = b] [make r 0] [r]
    ]
]