Vocabulary/numberdot
>> << Down to: Dyad Back to: Vocabulary Thru to: Dictionary
#. y Base 2
Rank 1 -- operates on lists of y, producing an atom for each one -- WHY IS THIS IMPORTANT?
The corresponding number of a binary numeral, given as a Boolean list
#. 1 0 1 0 1 21 #. 1 0 1 0 10 #. 1 1 1 1 1 31 #. 1 1 1 7
Generalizes to a Boolean table, which gets treated as a list of binary numerals
] z=: > 1 0 1 0 1 ; 0 1 0 1 0 ; 1 1 1 1 1 ; 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 1 #. z 21 10 31 7
Common uses
1. Binary to decimal conversion
z=: '.....X.X' NB. sample binary form 'X'=z 0 0 0 0 0 1 0 1 #. 'X'=z 5
Related Primitives
Antibase 2 (#: y)
x #. y Base
Rank 1 1 -- operates on lists of x and y -- WHY IS THIS IMPORTANT?
Generalizes #.y to bases other than 2 (including mixed bases)
#. 1 0 1 0 1 NB. base-2 numeral --> number 21 2 #. 1 0 1 0 1 NB. ditto, but base (=2) is explicitly specified 21 10 #. 1 0 1 0 1 NB. base-10 numeral --> number 10101
If x is an atom, it is reshaped to the shape of y.
Each atom of x gives the place value of the corresponding position of y.
Common uses
1. Convert list of decimal digits to number
numberOf=: 10 & #. numberOf 9 0 8 0 1 90801
2. Convert time-interval in (hours,minutes,seconds) to seconds
seconds=: 24 60 60 & #. NB. use of mixed bases, viz. 24 and 60 seconds 23 59 59 86399 */24 60 60 86400
3. Evaluate a polynomial, specified by its coefficients in y, at the value of the variable given by x. The coefficients are ordered in descending powers of the variable.
x must be an atom.
Example: sum the exponential series to 10 terms, to approximate the value of exp y
exp=: ^ ] a=: % !i.10 NB. The first 10 coefficients of the exponential series, in ascending-power order 1 1 0.5 0.166667 0.0416667 0.00833333 0.00138889 0.000198413 2.48016e_5 2.75573e_6 1 #. |. a NB. Use |. to put into descending-power order 2.71828 exp 1 2.71828 2 #. |. a 7.38871 exp 2 7.38906
Can also use (p.) to evaluate the polynomial
a p. 1 NB. coefficients of p. are in ascending-power order 2.71828 a p. 2 7.38871
Related Primitives
Polynomial (x p. y), Antibase (x #: y)
More Information
1. To remember which is which, note that #. (whose inflection is a single dot) produces an atom. Whereas #: (multiple dots) produces a list.
Details
1. x is converted to a list of weights w =. */\.}.x,1; then x #. y is +/w*y. It can be seen from this definition that the first atom of x is immaterial
24 60 60 #. 4 0 0 14400 0 60 60 #. 4 0 0 14400
2. y must be numeric, even if it is empty.