pnum ← {fmt←1} (##.phinary) nums ⍝ Phinary representation of numbers ⍵. phinary 4 ⍝ A "phinary" number. 101.01 Phi "The Golden Mean" has many interesting properties. A rectangle with sides of ratio Phi:1 is considered to have a particularly pleasing shape and appears in many classical works of art. Appending a square to this rectangle produces a larger rectangle, whose sides are also in the ratio Phi:1. ┌──────Ø──────┐ ┌─┌─────────────┐─┐ │ │ │ │ │ │ │ 1 Ø │ │ │ + ├─────────────┤─┤ 1 │ │ │ Golden Rectangles │ │ │ │ │ │ │ Ø Ø+1 Ø │ │ │ │ --- = --- │ │ │ │ Ø 1 │ │ │ │ └─└─────────────┘─┘ └──────Ø──────┘ Therefore: (Ø*2) = Ø+1 ⍝ from above. [1] → 0 = (Ø*2) + (-Ø) + ¯1 ⍝ by rearranging terms. → 0 = Ø⊥1 ¯1 ¯1 ⍝ from definition of ⊥. Solving this quadratic equation in Ø, with coefficients 1 ¯1 ¯1, yields a posit- ive root (see →roots←) of (1+(1-¯4)*0.5)÷2 or (0.5×1+5*0.5), giving Phi a value of: 1.61803398874989484820458683436563811772030917980576286213544862270526046... See: http://en.wikipedia.org/wiki/Golden_ratio Using Phi as a number base -------------------------- We are accustomed to representing rational numbers using various integral bases such as binary, octal, hexadecimal and, of course, regular decimal. See →ary←. (5/2) ⊤ 19 ⍝ base-2 encode (binary). 1 0 0 1 1 (5/3) ⊤ 19 ⍝ base-3 encode (ternary). 0 0 2 0 1 Bases could also be non-integral rational numbers: (5/7÷3) ⊤ 19 ⍝ base-7÷3 encode. 0 1 0.6666666667 1 0.3333333333 or even irrational numbers: (5/○1) ⊤ 19 ⍝ base-Pi encode. 0 0 1 2.858407346 0.1504440785 In particular Phi may be used as a number base: Ø ← 0.5×1+5*0.5 ⍝ Phi is "root five plus one over two". (5/Ø) ⊤ 19 ⍝ base-Ø encode. 1 1.381966011 1.145898034 1.291796068 1.201626124 Positional number systems tend to have a "canonical" or "normal" form. For ex- ample, when using decimal notation, we prefer "forty-two" to "thirty-twelve", and 42.0 to 41.99... A normal form for phinary numbers suggests that: [a] Only digits 1 and 0 be used. [b] There be no adjacent 1 digits. Notice that, in phinary, 100 = 011: [2] 100 ⍝ [base Ø] → Ø ⊥ 1 0 0 ⍝ defn of base → (Ø*2) + 0 + 0 ⍝ defn of ⊤ → 0 + Ø + 1 ⍝ from [1] above. → Ø ⊥ 0 1 1 ⍝ defn of ⊤ → 011 ⍝ [base Ø] Of course, we can multiply both sides of an equation by any constant, including a power of Phi, so: 100=011 => 1000=0110 => 1.00=0.11 => 0.1=0.011 => ... This gives us a rule for addition of phinary numbers in normal form: 1 + 1 → 1 + 1.00 ⍝ ⍵ = ⍵.00.. → 1 + 0.11 ⍝ from [2] above → 1.11 ⍝ ..1.. + ..0.. → ..1.. → 1.10 + 0.01 ⍝ ..1.. + ..0.. → ..1.. → 10.00 + 0.01 ⍝ from [2] → 10.01 ⍝ ..1.. + ..0.. → ..1.. Arranged in a traditional tableau: 1.00 1.00 + ----- 10.01 ----- Notice how addition overflow causes a "carry" to propogate both one place to the left AND two places to the right! From this, it is clear that successive natural numbers, generated by adding 1 to the previous number, each has a finite number of phinary digits. In other words, natural phinary numbers all have a finite representation, despite being the sums of powers of an irrational base. 0 0 1 1 2 10.01 3 100.01 4 101.01 5 1000.1001 6 1010.0001 See http://en.wikipedia.org/wiki/Phinary Function [phinary] takes a numeric right argument and returns its "phinary" rep- resentation, in normal form, as character vectors of '0' and '1' digits, togeth- er with a phinary point where necessary. For example: phinary 42 ⍝ phinary from decimal. 10100010.00100001 If optional left argument [fmt] is passed as 0, the formatting is suppressed and a vector of powers of Phi is returned: 0 phinary 42 ⍝ raw powers of phi. 7 5 1 ¯3 ¯8 Ø +.* 7 5 1 ¯3 ¯8 ⍝ reconstituted decimal number. 42 [phinary] is a self-inverse (or "involution") in that: ⍵ ≡ (phinary⍣2) ⍵ ⍝ self-inverse: phinary⍣2 ←→ ⊢ phinary'10100010.00100001' ⍝ decimal from phinary. 42 The round-trip, applied to non-normal phinary numbers, returns the normal form: phinary⍣2 ,'111.111' '222' ⍝ normal form of phinary numbers. 1010.1 10101 The phinary representation of numbers with components that are exclusively non- negative powers of Phi, have no '1's to the right of the phinary point: phinary Ø +.*¨ (2 4)(3 5) ⍝ powers of Phi => clean phinary. 10100 101000 whereas, apart from 0 and 1, regular counting numbers, expressed in phinary, in- clude components that are negative powers of Phi. This means that such numbers always have '1's to the right of the phinary point: phinary 24 35 ⍝ counting numbers => scruffy phinary. 1001010.000101 10001010.00001001 (muse: This raises the question: what constitutes a "whole" or "natural" phinary number? Is it: [a] those numbers with only zeros to the right of the point, or is it [b] those that are conversions of decimal whole numbers into phinary? The answer is that the concept of "natural number" is deeper than its rep- resentation in any particular base. Such numbers have the property that they are closed under addition: adding any two produces a third as result. We can test which of the above sets of numbers is "natural", geometrically, using a rule and compass (if we accept compass steps as a model for addit- ion). 0 1 10 100 101 1000 1001 1010 10000 │ │ │ │ │ │ │ │ │ ├─────────┼─────┴───┬─────┴───┬─────┴───┬─┴───────┬─┴─────┴─┬───────┴─... │ │ │ │ │ │ │ 0 1 10.01 100.01 101.01 1000.1001 1010.0001 ... so the evenly spaced members of the second set (0 1 10.01 100.01 ...) are the natural numbers, despite their untidy appearance. Perhaps, in this context, there is a distinction between whole- and natural- numbers. ) Ref: http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/phigits.html http://www.goldennumber.net Examples: phinary 1 2 3 4 ⍝ some small phinary numbers. 1 10.01 100.01 101.01 align←{(-∘(⌈/)⍨⍵⍳¨'.')⌽↑⍵} ⍝ align '.'s in char matrix. ,∘align∘phinary⍨ ¯4 to 10 ⍝ integers with their phinary equivalents. ¯4 ¯101.01 ¯3 ¯100.01 ¯2 ¯10.01 ¯1 ¯1 0 0 1 1 2 10.01 3 100.01 4 101.01 5 1000.1001 6 1010.0001 7 10000.0001 8 10001.0001 9 10010.0101 10 10100.0101 phinary 3÷17 ⍝ rational number (non-terminating). 0.000100010100001010100101000001001000000100010100001010100101000001001 phinary 2*÷2 ⍝ irrational number (non-terminating). 1.010000010100101001000000010100000000010101010101010010000000101 Ø ← +∘÷/40/1 ⍝ Phi from continued fraction →cfract←. phinary Ø*¯3 to 3 ⍝ powers of Phi have simple phinary reps. 0.001 0.01 0.1 1 10 100 1000 Ø ≡ +∘(*∘0.5)/0,40/1 ⍝ Phi ≡ sqrt 1 + sqrt 1 + ... sqrt 1 1 pcan ← phinary⍣2 ⍝ round-tripping produces canonical form. pcan '111.111' ⍝ canonical form. 1010.1 {↑⍵(pcan ⍵)},\9/'1' ⍝ non- and canonical forms. 1 11 111 1111 11111 111111 1111111 11111111 111111111 1 100 1001 10100 101001 1010100 10101001 101010100 1010101001 See also: ary ratrep ratsum bt mayan hex See also: eval.dws/notes.bta eval.dws/notes.sba See also: nats rats fibonacci See also: numbers Back to: contents Back to: Workspaces