divz

Name

divz --  Safely divides two numbers.

Syntax

ar divz xa, xb, ksubst
ir divz ia, ib, isubst
kr divz ka, kb, ksubst

Description

Safely divides two numbers.

Initialization

Whenever b is not zero, set the result to the value a / b; when b is zero, set it to the value of subst instead.

Examples

Here is an example of the divz opcode. It uses the files divz.orc and divz.sco.

Example 15-1. Example of the divz opcode.

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

; Instrument #1.
instr 1
  ; Define the numbers to be divided.
  ka init 200
  ; Linearly change the value of kb from 200 to 0.
  kb line 0, p3, 200
  ; If a "divide by zero" error occurs, substitute -1.
  ksubst init -1
  
  ; Safely divide the numbers.
  kresults divz ka, kb, ksubst

  ; Print out the results.
  printks "%f / %f = %f\\n", 0.1, ka, kb, kresults
endin
/* divz.orc */
        
/* divz.sco */
; Play Instrument #1 for one second.
i 1 0 1
e
/* divz.sco */
        
Its output should include lines like:
200.000000 / 0.000000 = -1.000000
200.000000 / 19.999887 = 10.000056
200.000000 / 40.000027 = 4.999997
      

See Also

=, init, tival

Credits

Example written by Kevin Conder.