%

% --  Modulus operator.

Description

Arithmetic operators perform operations of change-sign (negate), don't-change-sign, logical AND logical OR, add, subtract, multiply and divide. Note that a value or an expression may fall between two of these operators, either of which could take it as its left or right argument, as in

a + b * c.
      

In such cases three rules apply:

1. * and / bind to their neighbors more strongly than + and −. Thus the above expression is taken as

  
a + (b * c)
      

with * taking b and c and then + taking a and b * c.

2. + and bind more strongly than &&, which in turn is stronger than ||:

  
a && b - c || d
      

is taken as

  
(a && (b - c)) || d
      

3. When both operators bind equally strongly, the operations are done left to right:

  
a - b - c i
      

is taken as

  
(a - b) - c
      

Parentheses may be used as above to force particular groupings.

The operator % returns the value of a reduced by b, so that the result, in absolute value, is that of the absolute value of b, by repeated subtraction. This is the same as modulus function in integers. New in Csound version 3.50.

Syntax

a % b (no rate restriction)

where the arguments a and b may be further expressions.

Examples

Here is an example of the % operator. It uses the files modulus.orc and modulus.sco.

Example 1. Example of the % operator.

/* modulus.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  i1 = 5 % 3
  print i1
endin
/* modulus.orc */
        
/* modulus.sco */
; Play Instrument #1 for one second.
i 1 0 1
e
/* modulus.sco */
        
Its output should include a line like this:
instr 1:  i1 = 2.000
      

See Also

-, +, &&, ||, *, /, ^

Credits

Example written by Kevin Conder.