nvec ← P ##.efract Q ⍝ Egyptian fractions. Any rational number in the range 0<⍵≤1 may be expressed as the sum of the reci- procal of a finite vector of distinct whole numbers. Such sequences of reciproc- als are called "Egyptian fractions". For example: 2 1 1 --- = --- + --- = +/ ÷2 6 3 2 6 9 1 1 1 --- = --- + --- + --- = +/ ÷2 3 15 10 2 3 15 355 1 1 1 1 1 --- = --- + --- + ---- + ------- + ------------- = +/ ÷2 29 .. 452 2 29 1093 1790881 6414507721441 NB: a given rational number has any number of Egyptian fraction expansions. Ref: http://en.wikipedia.org/wiki/Egyptian_fraction Veli-Matti Jantunen's function [efract] returns an integer vector such that: (⍺÷⍵) = +/÷ ⍺ efract ⍵ ⍝ quotient = sum of reciprocals. {⍵≡∪⍵} ⍺ efract ⍵ ⍝ reciprocals are unique. For example: 9 efract 10 ⍝ Egyptian fractions for 9÷10 2 3 15 rational +/÷ 2 3 15 ⍝ check result. 9 10 Technical notes: There are many ways to find Egyptian fractions; Veli-Matti suggests: efract←{⎕ML←3 (,⍵){ 0∊⍴⍵:⍺[⍋⍺] x←{⍵ 1×⍵+1}↑⍵ n←2ׯ1++/⍵=↑⍵ (⍺,x)∇(n⍴x),⍵~↑⍵ }(⍺-1)/⍵ } efract←{⎕ML←3 ⍝ Egyptian fractions: Splitting method (,⍵){ 0∊⍴⍵:⍺[⍋⍺] q←↑⍵ ⋄ x←q 1×q+1 ⋄ b←(x∊⍺)<≠\x (⍺,b/x)∇((~b)/x),((2ׯ1++/⍵=q)⍴x),⍵~q }(⍺-1)/⍵ } efract←{ ⍝ Egyptian fractions: Golomb algorithm (⎕ML ⎕IO)←3 1 ⍬{ (p q)←⍵÷(↑⍵){⍵=0:|⍺ ⋄ ⍵ ∇ ⍵|⍺}↑⌽⍵ p=1:{⍵[⍋⍵]}⍺,q r←(0=p|1+q×⍳q-1)⍳1 s←(1+q×r)÷p (⍺,s×q)∇ r s }⍺ ⍵ } efract←{ ⍝ Egyptian fractions: Binary method (⎕ML ⎕IO)←3 1 ∆G←{⍵=0:|⍺ ⋄ ⍵ ∇ ⍵|⍺} (p q)←⍺ ⍵÷⍺ ∆G ⍵ ⋄ p=1:q n←⌈2⍟q ⋄ b←2*n r←⌊(p×b)÷q ⋄ s←(p×b)-r×q (a c)←{2*((n⍴2)⊤⍵)/⌽¯1+⍳n}¨r s (a,c){⍵÷⍺ ∆G¨⍵}((⍴a),⍴c)/b×1 q } Examples: 3 efract 7 ⍝ Egyptian fraction rep of 3÷7 3 11 231 rational +/÷ 3 efract 7 ⍝ round-trip to check. 3 7 rational +/÷ ⎕← 355 efract 452 ⍝ (coarse approximation to ○÷4). 2 4 29 1093 1790881 6.414507721E12 355 452 2 3 5 7 ∘.efract 11 13 17 19 ⍝ ... some more. ┌──────┬─────────┬─────────┬─────────┐ │6 66 │7 91 │9 153 │10 190 │ ├──────┼─────────┼─────────┼─────────┤ │4 44 │5 33 2145│6 102 │7 67 8911│ ├──────┼─────────┼─────────┼─────────┤ │3 9 99│3 20 780 │4 23 1564│4 76 │ ├──────┼─────────┼─────────┼─────────┤ │2 8 88│2 26 │3 13 663 │3 29 1653│ └──────┴─────────┴─────────┴─────────┘ See also: rational Back to: contents Back to: Workspaces