==================================================================== Radix Expansion ==================================================================== It possible to expand numbers in general bases. Here we expand 111 in base 5. This means :: 10^2+10^1+10^0 = 4 * 5^2+2 * 5^1 + 5^0 111::RadixExpansion(5) 421 Type: RadixExpansion 5 You can expand fractions to form repeating expansions. :: (5/24)::RadixExpansion(2) __ 0.00110 Type: RadixExpansion 2 (5/24)::RadixExpansion(3) __ 0.012 Type: RadixExpansion 3 (5/24)::RadixExpansion(8) __ 0.152 Type: RadixExpansion 8 (5/24)::RadixExpansion(10) _ 0.2083 Type: RadixExpansion 10 For bases from 11 to 36 the letters A through Z are used. :: (5/24)::RadixExpansion(12) 0.26 Type: RadixExpansion 12 (5/24)::RadixExpansion(16) _ 0.35 Type: RadixExpansion 16 (5/24)::RadixExpansion(36) 0.7I Type: RadixExpansion 36 For bases greater than 36, the ragits are separated by blanks. :: (5/24)::RadixExpansion(38) _____ 0 . 7 34 31 25 12 Type: RadixExpansion 38 The RadixExpansion type provides operations to obtain the individual ragits. Here is a rational number in base 8. :: a := (76543/210)::RadixExpansion(8) ____ 554.37307 Type: RadixExpansion 8 The operation wholeRagits returns a list of the ragits for the integral part of the number. :: w := wholeRagits a [5,5,4] Type: List Integer The operations prefixRagits and cycleRagits return lists of the initial and repeating ragits in the fractional part of the number. :: f0 := prefixRagits a [3] Type: List Integer f1 := cycleRagits a [7,3,0,7] Type: List Integer You can construct any radix expansion by giving the whole, prefix and cycle parts. The declaration is necessary to let FriCAS know the base of the ragits. :: u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1) ____ 554.37307 Type: RadixExpansion 8 If there is no repeating part, then the list [0] should be used. :: v: RadixExpansion(12) := fractRadix([1,2,3,11], [0]) _ 0.123B0 Type: RadixExpansion 12 If you are not interested in the repeating nature of the expansion, an infinite stream of ragits can be obtained using fractRagits. :: fractRagits(u) _______ [3,7,3,0,7,7] Type: Stream Integer Of course, it's possible to recover the fraction representation: :: a :: Fraction(Integer) 76543 ----- 210 Type: Fraction Integer See Also: * )help DecimalExpansion * )help BinaryExpansion * )help HexadecimalExpansion * )show RadixExpansion