divz
Safely divides two numbers.
Syntax
ares divz xa, xb, ksubst
ires divz ia, ib, isubst
kres divz ka, kb, ksubst
... divz(ka, kb, ksubst)... (no rate restriction)
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 file divz.csd.
| Example of the divz opcode. |
|---|
| <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
See also
Opcode Equivalents of Functions
Credits
Author: John ffitch after an idea by Barry L. Vercoe
Example written by Kevin Conder.
Functional form available in csound Version 6.00