>>  <<  Ndx  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  wd  Help  Release

 c}x,y,:z Improved initial writing: 2000-00-00 last updated: 2004-10-26

The phrase b}x,:y for numeric x and y is equivalent to the well-known phrase (x*b)+y*-.b . Recently, special code has been implemented for the phrase name=: c}x,y,...,:z , with boolean c as a special case, and the amendment is done in place if name is x or y and c is boolean. (In-place amendment is eschewed for integral c due to the possibility of index error.)

A time-space comparison is as follows:
```   b=: ?(5\$10)\$2
x=: o.?(\$b)\$1000
y=: o.?(\$b)\$1000
z=: o.?(\$b)\$1000

c=: ?(\$b)\$3

ts=: 6!:2 , 7!:2@]

+/,b                 NB. roughly equal proportions of 1s and 0s
50185
ts 'q=: (x*b)+y*-.b'
0.0279061 3.27834e6
ts 'r=: (b)}y,:x'    NB. no special code
0.0570458 6.29325e6
ts 's=: b}y,:x'      NB. special code but makes copy
0.0102885 1.05018e6
ts 'y=: b}y,:x'      NB. special code, in place
0.00728388 1472
q&-:&> r;s;y
1 1 1

b1=: 0=?(5\$10)\$390
y=: o.?(\$b)\$1000

+/,b1                NB. many more 0s than 1s
243
ts 'q=: (x*b1)+y*-.b1'
0.0281466 3.27821e6
ts 'r=: (b1)}y,:x'   NB. no special code
0.0535643 6.29325e6
ts 's=: b1}y,:x'     NB. special code but makes copy
0.00813539 1.05018e6
ts 'y=: b1}y,:x'     NB. special code, in place
0.0012672 1600
q&-:&> r;s;y
1 1 1

y=: o.?(\$b)\$1000

ts 'q=: (x*0=c)+(y*1=c)+z*2=c'
0.0600914 5.63834e6
ts 'r=: (c)}x,y,:z'  NB. no special code
0.0848446 9.96352e6
ts 's=: c}x,y,:z'    NB. special code but makes copy
0.0119311 1.0505e6
q&-:&> r;s
1 1
```

>>  <<  Ndx  Usr  Pri  JfC  LJ  Phr  Dic  Rel  Voc  !:  wd  Help  Release