# Continued fraction representation of a real: dfc

### 5.7.7 Continued fraction representation of a real: dfc

Any real number a can be written as a continued fraction:

a = a0 +

1

a1 +

1

a2 +

1

a3 + ⋯

, which is often abbreviated [a0;a1,a2,a3,…]. The dfc command writes a real number as a continued fraction.

- dfc takes one mandatory argument and one optional argument:
  - a, a real number.
  - Optionally, n an integer or epsilon, a positive real number.
- dfc(a) returns the list of the continued fraction representation of a with precision epsilon, which is given by Section 2.5.7, item 9.
- dfc(a,epsilon) returns the list of the continued fraction representation which approximates a or evalf(a) with the specified precision epsilon.
- dfc(a,n) returns the list of the continued fraction representation of a of order n.

Remarks.

- The convert command with the option confrac (see Section 5.23.26) has a similar functionality: in that case the value of epsilon is the value defined in the cas configuration and the answer may be stored in an optional third argument.
- If the last element of the result is a list, the representation is ultimately periodic, and the last element is the period. It means that the real is a root of an equation of order 2 with integer coefficients. So If dfc(a)=[a0,a1,a2,[b0,b1]] then:

  a=a0+

  1

  a1+

  1

  a2+

  1

  b0+

  1

  b1+

  1
  b0+…

- if the last element of the result is not an integer, it represents a remainder r (a=a0+1/…+1/an+1/r). So if dfc(a)=[a0,a1,a2,r] then:

  a=a0+

  1

  a1+

  1

  a2+

  1
  r

  Be aware that this remainder has lost most of its accuracy.

#### Examples.

- Input:
  dfc(sqrt(2),5)
  Output:

  | ⎡ ⎣ | 1,2, | ⎡ ⎣ | 2 | ⎤ ⎦ | ⎤ ⎦

- Input:
  dfc(evalf(sqrt(2)),1e-9)
  or:
  dfc(sqrt(2),1e-9)
  Output:

  | ⎡ ⎣ | 1,2,2,2,2,2,2,2,2,2,2,2,2 | ⎤ ⎦

- Input:
  convert(sqrt(2),confrac,’dev’)
  Output (if in the cas configuration epsilon=1e-9):

  | ⎡ ⎣ | 1,2,2,2,2,2,2,2,2,2,2,2,2 | ⎤ ⎦

  and [1,2,2,2,2,2,2,2,2,2,2,2,2] is stored in dev.
- Input:
  dfc(9976/6961,5)
  Output:

  ⎡
  ⎢
  ⎢
  ⎣

  1,2,3,4,5,

  43
  7

  ⎤
  ⎥
  ⎥
  ⎦

  Input (to verify):
  1+1/(2+1/(3+1/(4+1/(5+7/43))))
  Output:

  9976
  6961

- Input:
  convert(9976/6961,confrac,’l’)
  Output (if in the cas configuration epsilon=1e-9):

  | ⎡ ⎣ | 1,2,3,4,5,6,7 | ⎤ ⎦

  and [1,2,3,4,5,6,7] is stored in l.
- Input:
  dfc(pi,5)
  Output:

  ⎡
  ⎢
  ⎢
  ⎣

  3,7,15,1,292,

  −113 π +355
  33102 π −103993

  ⎤
  ⎥
  ⎥
  ⎦

- Input:
  dfc(evalf(pi),5)
  Output (if floats are hardware floats, e.g. for Digits=12):

  | ⎡ ⎣ | 3,7,15,1,292,1.57581843574 | ⎤ ⎦

- Input:
  dfc(evalf(pi),1e-9)
  or:
  dfc(pi,1e-9)
  or (if in the cas configuration epsilon=1e-9):
  convert(pi,confrac,’ll’)
  Output:

  | ⎡ ⎣ | 3,7,15,1,292 | ⎤ ⎦

  and [3,7,15,1,292] is stored in ll.