Proposal: Digit Strings which Represent Continued Fractions

From Lojban
Jump to: navigation, search

This article is a proposed description of a means by which to express numbers in a generalized continued fraction format as represented by a string of digits. It will not discuss other notations for continued fractions. By way of analogy, the subject matter of this article would be similar to a description of the decimal system (base) and will not touch on subject matter which is similar to means of expressing numbers as summations (big operator "[math]\sum[/math]") or formal polynomials in [math]10[/math] with coefficients in [math]\mathbb{Z} \cap [0,9][/math], even though all of these are mutually equivalent.

For the purposes of this article: All expressions are big-endian and microdigits are in traditional decimal. PEMDAS is obeyed.

Mode Activation

Original Explanation

Let [math]z = a_0 + b_0/(a_1 + b_1/(a_2 + b_2/(\dots))) = a_0 + \underset{i=0}{\overset{\infty}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big)[/math], where [math]a_i[/math] and [math]b_i[/math] are integers for all [math]i[/math] (see Kettenbruch notation here). In fact, for all i, we will canonically restrict [math]a_{(i+1)}[/math] and [math]b_i[/math] to nonnegative integers such that if [math]b_j = 0[/math], then [math]a_k = 1[/math] and [math]b_k = 0[/math] for all [math]k \geq j[/math]; this is a perfectly natural and standard set of restrictions to make and does not actually diminish the set of numbers which are expressible in this format, but the restriction is not technically necessary for Lojban. Then we will denote [math]z[/math] by the continued fraction representation [math]z = (a_0 : b_0, a_1 : b_1, a_2 : b_2, \dots)[/math]; the whole rhs representation is called a string. Notice that the integer part is included. In this format, for each [math]i[/math], "[math]a_i : b_i[/math]" forms a single unit called a macrodigit; for each [math]i[/math], "[math]a_i[/math]" and "[math]b_i[/math]" each are microdigits; the colon ("[math]:[/math]") separates microdigits and the comma ("[math],[/math]") separates macrodigits. Microdigits can be expressed in any base or other representation and macrodigits could be reversed or slightly rearranged (such as being of form "[math]b_i : a_{(i+1)}[/math]"; however, for our purposes here microdigits will be expressed in big-endian traditional decimal and macrodigits will be formed and ordered as shown; the specification herein proposed will obligate the user to express the macrodigits in the form which is shown (id est: of form "[math]a_i : b_i[/math]"; within any given macrodigit, the first microdigit expressed represents [math]a_i[/math] and the second (and final) microdigit expressed represents [math]b_i[/math], only) but the other features aforementioned are not guaranteed, although they may normally be assumed as a contextless default. In order to be clear: in this representation, each macrodigit will consist of exactly two microdigits - namely, [math]a_i[/math] and [math]b_i[/math] in that order, for all [math]i[/math] - and these microdigits will be separated explicitly by "pi'e"; meanwhile, macrodigits will be separated explicitly by "pi". In this representation, I will denote a not-explicitly-specified microdigit by a pair of consecutive underscores ("[math]\_\_[/math]"). In the 'big-endian' arrangement of the macrodigits (as herein depicted), the first microdigit ([math]a_0[/math]) represents the 'integer part' of the expression.

In this system, let "pi'e" represent ":" and let "pi" represent ",", each bijectively. Then the basic method of expressing a continued fraction is to just read [math](a_0 : b_0, a_1 : b_1, a_2 : b_2, \dots)[/math] where each microdigit is expressed in some base which represents integers, the parenthesis are not mentioned, the separators being named/pronounced as before, "ra'e" being used in order to create cyclic patterns or to extend the string indefinitely, and the string being terminated as any numeral string could or would be. The interpretation of the whole string according to these rules for continued fractions would be specified via JUhAU.

A string terminates if and only if "ra'e" is not explicitly used. "ra'e" will couple with exactly one microdigit, and exactly every following explicitly mentioned microdigit in that position of their macrodigits will be considered to be part of a repetitious sequence applying to/running over the microdigits in that position of their macrodigits; the other microdigit is unaffected by it. Moreover, it can couple with "pi'e" as well (see below), but this occurs iff "ra'e" is explicitly mentioned immediately prior to exactly an explicitly mentioned "pi'e". If it couples with [math]a_j[/math] for some [math]j[/math], then it will cyclically repeat that [math]a_j[/math] and all explicitly mentioned [math]a_{(j+k)}[/math] for all [math]k\gt 0[/math] in each [math]a_i[/math] spot until the last [math]b_i[/math] (which either will be explicitly mentioned and defined as last by the closure of the string scope (formally, all subsequent [math]b_i[/math] will be trivial), or will be nonexistent according to the next point); iff it couples with [math]b_j[/math] for some [math]j[/math], then the string is extended to infinite length and there exists no 'last [math]b_i[/math]' (meaning that any repetition on [math]a_i[/math] will also continue ad infinitum). Thus, [math](a_0:b_0, a_1:b_1, \operatorname{ra'e} a_2:b_2, a_3:b_3, \_\_:b_4, \_\_:b_5, \_\_:b_6, \dots, \_\_:b_{10}, \_\_:\operatorname{ra'e} b_{11}) = (a_0:b_0, a_1:b_1, a_2:b_2, a_3:b_3, a_2:b_4, a_3:b_5, a_2:b_6, a_3:b_7, a_2:b_8, a_3:b_9, a_2:b_{10}, a_3:b_{11}, a_2:b_{11}, a_3:b_{11}, a_2:b_{11}, a_3:b_{11}, a_2:b_{11}, \dots)[/math].

Additional rules:

  • For any [math]i\gt 0[/math], if [math]a_i[/math] is not explicitly mentioned, then it is assumed to take on the appropriate value according to an ongoing formula which applies to it (such as by "ra'e") or, otherwise, it defaults to [math]1[/math]. [math]a_0 = 0[/math] if it is not explicitly mentioned unless context very clearly indicates otherwise. These are called "context-dependent defaults".
  • For any [math]i[/math], if [math]b_i[/math] is not explicitly mentioned, then it is assumed to take on the appropriate value according to an ongoing formula which applies to it (such as by "ra'e") or, otherwise, it defaults to [math]1[/math] if the string continues (explicitly or by sufficient "ra'e") and [math]0[/math] otherwise. This is especially true if the verbal expression of the string is terminated and "ra'e" was not explicitly used (on [math]b_j[/math] for some [math]j[/math]): all finite strings can infinitely extended by right-concatenating "[math]1:0, 1:0, 1:0, \dots)[/math] to them (this is similar to decimal notation; for example: [math]8.23 = 8.23000\dots[/math]). These are called "context-dependent defaults".
  • If exactly one microdigit is explicitly mentioned in a given macrodigit, then: it is to be understood to be [math]a_i[/math] iff "ra'e" did not couple with "pi'e"; regardless of the prior presence of "ra'e pi'e" in the string, the implicit microdigit will assume the generic default value or (preferably) the value according to a repetition or formula which it inherited (see the aforementioned context-dependent defaults).

Even though the basic and assumed notation for [math]a_0 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big)[/math] is [math](a_0:b_0, a_1:b_1, a_2:b_2, a_3:b_3, \dots)[/math] (this is so-called 'big-endian' in the macrodigits), other formats can be supported iff they are explicitly specified. For example, with a change of endianness in the macrodigits, [math]a_0 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big) = (\dots, a_3:b_3, a_2:b_2, a_1:b_1, a_0:b_0)[/math]. It is also reasonable that the microdigits could be reordered (note that this is not a change in the endianness of each microdigit (which would change [math]12:34[/math] to [math]21:43[/math]); rather, it is a transposition of the microdigits within each macrodigit) like so: [math]a_0 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big) = (\dots, b_3:a_3, b_2:a_2, b_1:a_1, b_0:a_0)[/math]; notice that in this example, I also changed the endianness of the macrodigits because the expression does not make much intuitive sense otherwise (but it would nonetheless be possible to do merely one of these changes in isolation, even if it is not advisable or sensical).

The string will terminate and be interpreted as a number formed from the specified continued fraction as all other digits strings do (see my other work).

-- Krtisfranks (talk) 08:10, 9 March 2018 (UTC)

Alternative Explanation

The description in this section is intended to provide the same results as those in the "Original Explanation" section.

Zeroth, the mode must be activated (as described previously).

Throughout the following discussions, I shall assume that such mode activation has been performed as appropriate.

For some [math]n \in \mathbb{N} \cup \{0, +\infty\}[/math] and some sequences [math](a_i)_i, (b_i)_i[/math], we will map [math]z = a_0 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big)[/math] (math form) to a string of form [math](a_0:b_0, a_1:b_1, a_2:b_2, \dots, a_n:b_n)[/math] (this is the notational form), which would be pronounced more or less as "a0 pi'e b0 pi a1 pi'e b1 pi a2 pi'e b2 pi ... an pi'e bn" (this is the verbal form). In other words, each ":" in the notational form is expressed as "pi'e" and each "," in the notational form is expressed as "pi", and vice-versa, where "pi'e" and "pi" are exactly the cmavo that you think that they are. Notice that the parenthesis in the notation form are not pronounced; they are used in the notational form so that readers understand that everything between them forms some sort of unit - however, in Lojban, the terms are read and first understood as digits which compile into some sort of numeric string, so this is not necessary; moreover, mode activation makes it clear that they are indeed a single unit (and what that unit means: namely, a continued fraction).

(Technical aside: In the original math form, each ai and bi are terms in their respective sequences and can be more or less understood as indirect terms in the continued fraction (really, the ordered pairs are the operands of the K operator and the entries of the pairs are the terms of the sequences); we are performing an implicit sleight of hand in mapping these numbers to digits in the string form, and we notate them exactly the same. This latter fact can be seen if one realizes the "pi'e" and "pi" are themselves digits and can only be concatenated to other digits. So, I may end up using the words "term" and "digit" more or less interchangeably (making the assumption that the reader knows when I am not including "pi'e" and "pi" in my reference set); they are technically distinct in concept and domain, but they are isomorphic. For the record, each 'term' in string notation may actually be constituted by more than one 'digit' in the expansion; for example, a0 = 3*4 would mean that the expression "a0" in the string would have to be represented by the multidigit expression "12" in decimal notation. Technically, I would call "ai" and "ab" macrodigits (and "12", standing in for such a macrodigit, is itself a macrodigit) and these can be composed of microdigits (which, in the example, would be "1" and "2" in that order). I will assume that microdigits are to be interpreted in decimal form (so a "1" followed by a "2", and nothing else being involved, compiles to "12" and means the number twelve) throughout this page; this assumption can be changed by certain cmavo if so desired.)

Now, it might be nice to avoid having to talk forever in the case of [math]n = +\infty[/math] or to not have to say or repeat digits that follow a pattern. The following sections address these concerns. However, we first must cover the simplest cases - at the very least because they serve as good entry-level examples.

Step 1: Simplest (and Finite) Case

Let [math]n \in \mathbb{N} \cup \{0\}[/math]. Consider the continued fraction [math]z = a_0 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{b_i}{a_{i+1}}\big)[/math], where [math]\forall i, a_i[/math] & [math]b_i[/math] will be explicitly defined, particularly as they arise. We can enforce conditions on the sequences [math](a_i)_i[/math] & [math](b_i)_i[/math], but we will ignore such details, because we just need formal continued fractions. Since n is finite, we will not use the word "ra'e" on any of the bi terms in this case/section.

We can transform the representation of [math]z[/math] from the previous notation (which is the application of a mathematical operator) to a string of digits. This is similar to changing "2*5" to "10".

The simplest subcase is if [math]b_i = 0 \forall i[/math]. In that subcase, z = a0. In string form, z would be written as "(a0:0, 0:0, 0:0, ...)", which collapses to "(a0)". Since we are assuming that n is finite and that we are explicitly stating the value of any nontrivial term (ai and bi), we take the sequence to 'terminate' with the last explicitly mentioned term (and all subsequent terms to be trivial - which is to say that they need not be mentioned). In particular, if the last explicitly mentioned term is ai, then bi = 0; if the last explicitly mentioned term is bi, then a(i+1) = 1 and b(i+1) = 0; these particular values are 'trivial'. It does not matter what the later terms in the sequences are due to the nature of fractions (so long as we do not divide by zero - which we shall assume). Note that explicitly mentioned terms need not be nontrivial; however, if the last explicitly mentioned term was trivial, then the expression could have been simplified by having not explicitly mentioned it either. In the string representation, only the explicitly mentioned terms need be shown/said (and simplifications such as the one just stated are always welcome); in other words, we do not need to say any later ai or bi or - indeed - even the "pi" (",") immediately after the last explicitly mentioned term. We also introduce the rule - used throughout this page - that (unless a certain condition is satisfied, which shall be addressed later), if exactly one macrodigit is explicitly mentioned between "pi"s, then it represents ai (for appropriate i). Thus "(a0)" is pronounced simply as "a0", whatever that is. In that situation, the bi with which it is paired will take the default value - in this example, 0. For example, the extremely trivial continued fraction 12 (twelve), which equals [math]12 + \underset{i=0}{\overset{n}{\mathrm K}} \big(\frac{0}{a_{i+1}}\big)[/math] for any sequence [math](a_i)_i: a_0 = 12 \& a_i \neq 0\forall i[/math], is pronounced simply as "pa re" (assuming that continued fraction interpretation has been activated and microdigits are expressed in decimal notation).