#N canvas 350 48 688 626 12;
#X text 19 579 see also:;
#N canvas 736 152 572 306 reference 0;
#X text 75 39 - calculate absolute value function., f 66;
#X text 75 63 - calculate exponential function (raise to the power of 'e')., f 66;
#X text 75 88 - calculate square root function., f 66;
#X text 75 111 - calculate remainder of "modulo 1" (wrap input between 0 and 1)., f 66;
#X obj 13 152 cnv 5 550 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 13 203 cnv 2 550 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X obj 13 240 cnv 2 550 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 12 277 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X text 252 251 NONE, f 5;
#X text 119 170 signal(s) - signal with one or more channels input.;
#X text 121 212 signal(s) - absolute value of input signal(s).;
#X obj 29 40 abs~;
#X obj 29 65 exp~;
#X obj 29 88 sqrt~;
#X obj 29 111 wrap~;
#X text 27 13 Audio rate unary (one-input) operators:;
#X restore 505 15 pd reference;
#X text 603 16 <= click;
#X obj 6 48 cnv 1 675 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 25 15 abs~;
#X obj 63 15 sqrt~;
#X obj 161 15 wrap~;
#X obj 209 15 exp~;
#X obj 75 271 snapshot~;
#X floatatom 33 172 5 0 0 0 - - - 0;
#X floatatom 75 301 7 0 0 0 - - - 0;
#X obj 33 234 abs~;
#X obj 33 200 sig~ -10;
#X floatatom 135 173 5 0 0 0 - - - 0;
#X floatatom 174 301 9 0 0 0 - - - 0;
#X obj 135 235 sqrt~;
#X obj 174 271 snapshot~;
#X obj 439 135 q8_sqrt~;
#X obj 135 201 sig~ 4;
#X msg 539 275 \; pd dsp \$1;
#X obj 539 240 set-dsp-tgl;
#X text 570 244 DSP on/off;
#X obj 448 277 metro 100;
#X obj 448 252 loadbang;
#X obj 448 301 s bang;
#X obj 75 235 r bang;
#X obj 108 15 rsqrt~;
#X obj 504 135 q8_rsqrt~;
#X floatatom 205 173 5 0 0 0 - - - 0;
#X floatatom 269 301 9 0 0 0 - - - 0;
#X obj 269 271 snapshot~;
#X obj 205 235 rsqrt~;
#X obj 205 201 sig~ 0.25;
#X floatatom 45 393 7 0 0 0 - - - 0;
#X floatatom 98 505 7 0 0 0 - - - 0;
#X obj 98 475 snapshot~;
#X obj 45 419 sig~;
#X obj 45 443 wrap~;
#X text 30 343 [wrap~] wraps the input between 0 and 1 by giving the difference between the input and the largest integer not exceeding it (for positive numbers this is the fractional part)., f 88;
#X obj 98 443 r bang;
#X obj 354 274 snapshot~;
#X floatatom 354 155 6 0 0 0 - - - 0;
#X floatatom 354 299 8 0 0 0 - - - 0;
#X obj 354 206 exp~;
#X text 415 188 [exp~] raises the Euler number 'e' (about 2.718) to the power of the input signal., f 34;
#X obj 354 179 sig~ 1;
#X obj 374 243 r bang;
#X obj 269 235 r bang;
#X obj 6 545 cnv 1 675 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#N canvas 511 174 755 397 compatibility 0;
#X msg 162 130 \; pd compatibility 0.47;
#X text 57 40 COMPATIBILITY NOTE: in Pd versions before 0.48 \, [wrap~] with an input of 0 did output 1 (but now correctly outputs 0). To get the old behavior \, set "compatibility" to 0.47 or below in Pd's command line or via the message:, f 43;
#X obj 71 251 wrap~;
#X obj 71 298 snapshot~;
#X obj 133 264 metro 250;
#X floatatom 71 332 5 0 0 0 - - - 0;
#X obj 133 235 loadbang;
#X obj 71 211 sig~ 0;
#X msg 228 294 \; pd dsp \$1;
#X obj 228 259 set-dsp-tgl;
#X text 259 263 DSP on/off;
#X msg 162 172 \; pd compatibility 0.48;
#X msg 493 159 \; pd compatibility 0.54;
#X msg 494 206 \; pd compatibility 0.55;
#X obj 532 287 sqrt~;
#X obj 585 287 rsqrt~;
#X text 409 70 Also \, in Pd versions before 0.55 \, [sqrt~] and [rsqrt~] were using a less accurate and slower algorithm. Set "compatibility" to 0.54 or below to get the old and bad behaviour back., f 41;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 6 0 4 0;
#X connect 7 0 2 0;
#X connect 9 0 8 0;
#X restore 519 482 pd compatibility;
#N canvas 793 183 357 405 multichannel 0;
#X obj 71 300 snapshot~;
#X floatatom 71 136 5 0 0 0 - - - 0;
#X floatatom 138 136 5 0 0 0 - - - 0;
#X obj 71 208 abs~;
#X msg 194 235 \; pd dsp \$1;
#X text 226 198 DSP on/off;
#X obj 194 194 set-dsp-tgl;
#X obj 96 255 r bang;
#X text 70 25 All of these objects work with multichannel signals \, where the operation is performed in all existing channels., f 32;
#X listbox 71 344 12 0 0 0 - - - 0;
#X obj 71 173 sig~ -2 -5;
#X connect 0 0 9 0;
#X connect 1 0 10 0;
#X connect 2 0 10 1;
#X connect 3 0 0 0;
#X connect 6 0 4 0;
#X connect 7 0 0 0;
#X connect 10 0 3 0;
#X restore 500 421 pd multichannel;
#X text 349 406 mutichannel signal support ----------->, f 20;
#X text 103 393 <-- shift-drag here to get non-integers to try, f 23;
#X obj 101 560 abs;
#X obj 373 560 +~;
#X obj 101 589 expr~;
#X obj 147 589 cos~;
#X text 246 15 - signal unary operators;
#X text 404 559 (etc.) - binary signal operators;
#X text 137 559 (etc.) - control rate versions;
#X obj 187 589 clip~;
#X text 446 589 updated for Pd version 0.55;
#X text 414 475 compatibility notes (open):, f 13;
#X text 576 135 (deprecated);
#X text 38 63 The [abs~] object passes nonnegative values unchanged \, but replaces negative ones with their (positive) inverses. The [sqrt~] and [rsqrt~] output \, respectively \, the square root and inverse square root - the same as 1/sqrt(input). By the way \, there used to be cheap versions accurate to 8 bits ([q8_sqrt~] and [q8_rsqrt~]) that have been "deleted" and are now the same as [sqrt~] and [rsqrt~]:, f 87;
#X text 198 453 see also:;
#X obj 187 475 expr~ fmod($v1 \, $v2);
#X connect 8 0 10 0;
#X connect 9 0 12 0;
#X connect 11 0 8 0;
#X connect 12 0 11 0;
#X connect 13 0 18 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 18 0 15 0;
#X connect 20 0 19 0;
#X connect 22 0 24 0;
#X connect 23 0 22 0;
#X connect 25 0 8 0;
#X connect 28 0 32 0;
#X connect 30 0 29 0;
#X connect 31 0 30 0;
#X connect 32 0 31 0;
#X connect 33 0 36 0;
#X connect 35 0 34 0;
#X connect 36 0 37 0;
#X connect 37 0 35 0;
#X connect 39 0 35 0;
#X connect 40 0 42 0;
#X connect 41 0 45 0;
#X connect 43 0 40 0;
#X connect 45 0 43 0;
#X connect 46 0 40 0;
#X connect 47 0 30 0;
#X connect 47 0 16 0;
