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.
Here is an example of the divz opcode. It uses the files divz.orc and divz.sco.
Example 110. 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