< i. 1: Improved |
initial writing: 2002-02-13 last updated: 2004-10-26 |
Boolean, integer, floating point, or literal vectors or scalars:
comp i. 0: | i.&0@:comp | ||
comp i. 1: | i.&1@:comp | ||
comp i: 0: | i:&0@:comp | ||
comp i: 1: | i:&1@:comp | ||
[: +/ comp | +/@:comp |
where comp is one of = ~: < <: >: > E.
(< <: >: > not available for literal).
Time and space savings depend on the arguments used.
For example:
ts=: 6!:2 , 7!:2@] NB. time and space x=: ?1e6$1e9 y=: 1.5e9 ts '+/x<y' 0.0339839 1.04973e6 ts 'x +/@:< y' NB. scan entire x 0.0205264 1280 ts '(x<y) i. 1' 0.0295772 1.04941e6 ts 'x (< i. 1:) y' NB. immediate hit 4.1346e_5 1216 ts '(x>:y) i. 1' 0.0393262 1.04954e6 ts 'x (>: i. 1:) y' NB. scan entire x 0.0218871 1216 x1=: y 5e5}x ts '(x1>:y)i.1' 0.036011 1.04941e6 ts 'x1 (>: i. 1:) y' NB. scan half of x1 0.0109947 1216