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