Given SR constant, I want to extract the first L base B digits
of the fractional part.
So far the best solution I found is:
floor((SR(expression)*B**L).numerical_approx(digits=L)).digits(B)
Can I do better?
Why the following approach fails numerically:
```
def base_B_digits(A, B,prot=False):
digits=[]
fractional_part = A - int(A)
while fractional_part != 0:
digit = int(fractional_part * B)
digits.append(digit)
fractional_part = fractional_part * B - digit
if prot: print(fractional_part)
return digits
```
tt=base_B_digits(SR(1/3).numerical_approx(digits=10),10,1)
The fractional part starts:
0.3333333333
0.3333333331
0.3333333314
0.3333333139
0.3333331393
...
0.
7812500000
0.
8125000000
0.1250000000
0.2500000000
0.5000000000
0.0000000000
I am not sure the program must terminate.
For A=1/4, the base 10 digits are computed correctly.