divz

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 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.