#N canvas 0 0 1024 768 10;
#X obj 0 0 cnv 15 1024 30 empty empty empty 20 12 0 14 20 -66577 0;
#X text 10 0 op name;
#X text 96 0 description;
#X text 512 0 effect on pixels;
#X text 768 0 effect on coords;
#X obj 0 48 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 48 op ignore;
#X text 96 48  A ;
#X text 512 48 no effect;
#X text 768 48 no effect;
#X obj 0 80 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 80 op put;
#X text 96 80  B ;
#X text 512 80 replace by;
#X text 768 80 replace by;
#X obj 0 112 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 112 op +;
#X text 96 112  A + B ;
#X text 512 112 brightness \,  crossfade;
#X text 768 112 move \,  morph;
#X obj 0 144 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 144 op -;
#X text 96 144  A - B ;
#X text 512 144 brightness \,  motion detection;
#X text 768 144 move \,  motion detection;
#X obj 0 176 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 176 op inv+;
#X text 96 176  B - A ;
#X text 512 176 negate then contrast;
#X text 768 176 180 degree rotate then move;
#X obj 0 208 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 208 op *;
#X text 96 208  A * B ;
#X text 512 208 contrast;
#X text 768 208 zoom out;
#X obj 0 240 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 240 op /;
#X text 96 240  A / B \,  rounded towards zero ;
#X text 512 240 contrast;
#X text 768 240 zoom in;
#X obj 0 272 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 272 op div;
#X text 96 272  A / B \,  rounded downwards ;
#X text 512 272 contrast;
#X text 768 272 zoom in;
#X obj 0 304 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 304 op inv*;
#X text 96 304  B / A \,  rounded towards zero ;
#X obj 0 336 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 336 op swapdiv;
#X text 96 336  B / A \,  rounded downwards ;
#X obj 0 368 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 368 op %;
#X text 96 368  A % B \,  modulo (goes with div) ;
#X text 512 368 --;
#X text 768 368 tile;
#X obj 0 400 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 400 op swap%;
#X text 96 400  B % A \,  modulo (goes with div) ;
#X obj 0 432 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 432 op rem;
#X text 96 432  A % B \,  remainder (goes with /) ;
#X obj 0 464 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 464 op swaprem;
#X text 96 464  B % A \,  remainder (goes with /) ;
#X obj 0 496 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 496 op gcd;
#X text 96 496 greatest common divisor;
#X obj 0 528 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 528 op lcm;
#X text 96 528 least common multiple;
#X obj 0 560 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 560 op |;
#X text 96 560  A or B \,  bitwise ;
#X text 512 560 bright munchies;
#X text 768 560 bottomright munchies;
#X obj 0 592 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 592 op ^;
#X text 96 592  A xor B \,  bitwise ;
#X text 512 592 symmetric munchies (fractal checkers);
#X text 768 592 symmetric munchies (fractal checkers);
#X obj 0 624 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 624 op &;
#X text 96 624  A and B \,  bitwise ;
#X text 512 624 dark munchies;
#X text 768 624 topleft munchies;
#X obj 0 656 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 656 op <<;
#X text 96 656  A * (2**(B % 32)) \,  which is left-shifting ;
#X text 512 656 like *;
#X text 768 656 like *;
#X obj 0 688 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 688 op >>;
#X text 96 688  A / (2**(B % 32)) \,  which is right-shifting ;
#X text 512 688 like / \, div;
#X text 768 688 like / \, div;
#X obj 0 720 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 720 op ||;
#X text 96 720  if A is zero then B else A ;
#X obj 0 752 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 752 op &&;
#X text 96 752  if A is zero then zero else B;
#X obj 0 784 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 784 op min;
#X text 96 784  the lowest value in A \, B ;
#X text 512 784 clipping;
#X text 768 784 clipping (of individual points);
#X obj 0 816 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 816 op max;
#X text 96 816  the highest value in A \, B ;
#X text 512 816 clipping;
#X text 768 816 clipping (of individual points);
#X obj 0 848 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 848 op cmp;
#X text 96 848  -1 when A&lt \; B \;  0 when A=B \;  1 when A&gt \; B. ;
#X obj 0 880 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 880 op ==;
#X text 96 880  is A equal to B ? 1=true \,  0=false ;
#X obj 0 912 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 912 op !=;
#X text 96 912  is A not equal to B ? ;
#X obj 0 944 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 944 op >;
#X text 96 944  is A greater than B ? ;
#X obj 0 976 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 976 op <=;
#X text 96 976  is A not greater than B ? ;
#X obj 0 1008 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1008 op <;
#X text 96 1008  is A less than B ? ;
#X obj 0 1040 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1040 op >=;
#X text 96 1040 is A not less than B ? ;
#X obj 0 1072 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1072 op sin*;
#X text 96 1072  B * sin(A) in centidegrees ;
#X text 512 1072 --;
#X text 768 1072 waves \,  rotations;
#X obj 0 1104 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1104 op cos*;
#X text 96 1104  B * cos(A) in centidegrees ;
#X text 512 1104 --;
#X text 768 1104 waves \,  rotations;
#X obj 0 1136 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1136 op atan;
#X text 96 1136  arctan(A/B) in centidegrees ;
#X text 512 1136 --;
#X text 768 1136 find angle to origin (part of polar transform);
#X obj 0 1168 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1168 op tanh*;
#X text 96 1168  B * tanh(A) in centidegrees ;
#X text 512 1168 smooth clipping;
#X text 768 1168 smooth clipping (of individual points) \,  neural sigmoid \,  fuzzy logic;
#X obj 0 1200 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1200 op log*;
#X text 96 1200  B * log(A) (in base e) ;
#X obj 0 1232 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1232 op gamma;
#X text 96 1232  floor(pow(a/256.0 \, 256.0/b)*256.0) ;
#X text 512 1232 gamma correction;
#X obj 0 1264 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1264 op **;
#X text 96 1264  A**B \,  that is \,  A raised to power B ;
#X text 512 1264 gamma correction;
#X obj 0 1296 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1296 op abs-;
#X text 96 1296  absolute value of (A-B) ;
#X obj 0 1328 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1328 op rand;
#X text 96 1328  randomly produces a non-negative number below A ;
#X obj 0 1360 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1360 op sqrt;
#X text 96 1360  square root of A \,  rounded downwards ;
#X obj 0 1392 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1392 op sq-;
#X text 96 1392  (A-B) times (A-B) ;
#X obj 0 1424 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1424 op avg;
#X text 96 1424  (A+B)/2 ;
#X obj 0 1456 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1456 op hypot;
#X text 96 1456  square root of (A*A+B*B) ;
#X obj 0 1488 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1488 op clip+;
#X text 96 1488  like A+B but overflow causes clipping instead of wrapping around (coming soon) ;
#X obj 0 1520 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1520 op clip-;
#X text 96 1520  like A-B but overflow causes clipping instead of wrapping around (coming soon) ;
#X obj 0 1552 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1552 op erf*;
#X text 96 1552  integral of e^(-x*x) dx ... (coming soon \;  what ought to be the scaling factor?) ;
#X obj 0 1584 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1584 op weight;
#X text 96 1584  number of "1" bits in an integer;
#X obj 0 1616 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1616 op sin;
#X text 96 1616 sin(A-B) in radians \,  float only;
#X obj 0 1648 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1648 op cos;
#X text 96 1648 cos(A-B) in radians \,  float only;
#X obj 0 1680 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1680 op atan2;
#X text 96 1680 atan2(A \, B) in radians \,  float only;
#X obj 0 1712 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1712 op tanh;
#X text 96 1712 tanh(A-B) in radians \,  float only;
#X obj 0 1744 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1744 op exp;
#X text 96 1744 exp(A-B) in radians \,  float only;
#X obj 0 1776 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1776 op log;
#X text 96 1776 log(A-B) in radians \,  float only;
#X obj 0 1824 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1824 op C.*    ;
#X text 96 1824 A*B;
#X obj 0 1856 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1856 op C.*conj;
#X text 96 1856 A*conj(B);
#X obj 0 1888 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1888 op C./    ;
#X text 96 1888 A/B;
#X obj 0 1920 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1920 op C./conj;
#X text 96 1920 A/conj(B);
#X obj 0 1952 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 1952 op C.sq-  ;
#X text 96 1952 (A-B)*(A-B);
#X obj 0 1984 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 1984 op C.abs- ;
#X text 96 1984 abs(A-B);
#X obj 0 2016 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 2016 op C.sin  ;
#X text 96 2016 sin(A-B);
#X obj 0 2048 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 2048 op C.cos  ;
#X text 96 2048 cos(A-B);
#X obj 0 2080 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 2080 op C.tanh ;
#X text 96 2080 tanh(A-B);
#X obj 0 2112 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0;
#X msg 10 2112 op C.exp  ;
#X text 96 2112 exp(A-B);
#X obj 0 2144 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0;
#X msg 10 2144 op C.log  ;
#X text 96 2144 log(A-B);
#X obj 10 2176 outlet;
#X obj 95 0 cnv 0 0 2176 empty empty empty -1 12 0 14 0 -66577 0;
#X obj 511 0 cnv 0 0 2176 empty empty empty -1 12 0 14 0 -66577 0;
#X obj 767 0 cnv 0 0 2176 empty empty empty -1 12 0 14 0 -66577 0;
#X obj 0 32 cnv 15 1024 14 empty empty empty 20 12 0 14 -248881 -66577 0;
#X text 10 32 numops;
#X obj 0 1808 cnv 15 1024 14 empty empty empty 20 12 0 14 -248881 -66577 0;
#X text 10 1808 vecops for complex numbers;