divz — Safely divides two numbers.
ares divz xa, xb, ksubst
ires divz ia, ib, isubst
kres divz ka, kb, ksubst
...divz(ka, kb, ksubst)... (no rate restriction)
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 file divz.csd.
Example 243. Example of the divz opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -n ; no sound ; For Non-realtime ouput leave only the line below: ; -o divz.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ka init 200 ; Define the numbers to be divided. kb line 0, p3, 200 ; Linearly change the value of kb from 200 to 0. ksubst init -1 ; If a "divide by zero" error occurs, substitute -1. kresults divz ka, kb, ksubst ; Safely divide the numbers. printks "%f / %f = %f\\n", 0.1, ka, kb, kresults ; Print out the results. endin </CsInstruments> <CsScore> i 1 0 .3 e </CsScore> </CsoundSynthesizer>
Its output should include lines like:
200.000000 / 0.000000 = -1.000000 200.000000 / 66.757370 = 2.995924 200.000000 / 133.514739 = 1.497962