# Help / Release / J 5.04 / e.i.1: Improved

 e.i.1: Improved initial writing: 2004-08-18last updated: 2005-04-21

The dyad e.i.1: (and others, see below) are now supported by special code. These are similar to the dyads previously described in J5.02 and J5.03. A complete table of such dyads are as follows:

 f i. 0: i.&0@:f first place where not x f y f i. 1: i.&1@:f first place where x f y f i: 0: i:&0@:f last place where not x f y f i: 1: i:&1@:f last place where x f y [: + / f + /@:f number of places where x f y [: +./ f +./@:f x f y anywhere? [: *./ f *./@:f x f y everywhere? [: I.  f I. @:f indices where x f y
 Notes: • f is one of the verbs = ~: < <: > >: E. e. • Special code is available only for Boolean, integer, floating point, literal, and symbol arguments • Special code is used only for atoms and lists if f is not e. • If f is E. , special code only for   E.i.1:  +/@:E.  +./@:E.  I.@:E.

Moreover, if f is e. and the right argument is fixed, that is, (e.i.0:)&m , then that also is supported by special code. (See details here.)

The following benchmarks demonstrate the improvement:

```x=: 1e6 ?.@\$ 1e6
y=: 1e3 ?.@\$ 1e4

a=: 'abcdefghijklmnopqrstuvwxyz'
c=: a {~ 1e5 4 ?.@\$ #a
d=: a {~ 1e4 4 ?.@\$ #a

ts=: 6!:2 , 7!:2@]
ts 'Expression'
```
 Expression J 5.04 J 5.03 Ratio x(e.i.1:)y 0.0000119 17664 0.0309512 5244160 2600.01 296.88 x(e.i:1:)y 0.0000123 17664 0.0308734 5244160 2509.46 296.88 x +/@:e. y 0.0027426 17792 0.0248151 2098496 9.05 117.95 x I.@e. y 0.0031021 4211648 0.0265907 2098112 8.57 0.50 c(e.i.1:)d 0.0002968 132352 0.0045880 656640 15.46 4.96 c(e.i:1:)d 0.0002963 132352 0.0046068 656640 15.55 4.96 c +/@:e. d 0.0032609 132480 0.0039788 263488 1.22 1.99 c I.@e. d 0.0033605 656320 0.0041747 263104 1.24 0.40