So, I am using Python to test some of mine ideas.
me@amadeus:~$ python3 -q # 🐍
>>> def sin(x):
... prod = a = 1
... for i in range(1, 30):
... prod *= x / i
... if not i & 1: continue
... prod *= -1
... a += prod
... return 1 - a
...
>>> x = 0
>>> for _ in range(3):
... x += sin(3 + x)
...
>>> x
0.14159265358979323 ❤️🔥
>>>
me@amadeus:~$
I am not a professional programmer,
I am just playing around, because I am curious to see,
how code is made?
me@amadeus:~$ python3 -q # 🐍
>>> def exp(x):
... prod = a = 1
... for i in range(1, 30):
... prod *= x / i
... a += prod
... return a
...
>>> def ln(x):
... a = 0
... for _ in range(1, 30):
... a -= 1 - x / exp(a)
... return a
...
>>> def sin(x):
... prod = a = 1
... for i in range(1, 30):
... prod *= x / i
... if not i & 1: continue
... prod *= -1
... a += prod
... return 1 - a
...
>>> x = 3
>>> for _ in range(3):
... x += sin(x)
...
>>> x
3.141592653589793
>>>
>>> exp(1/x * ln(x))
1.4396194958475905
>>> x ** (1/x)
1.4396194958475907
>>>
>>> exp(x * ln(x))
36.46215960720795
>>> x ** x
36.4621596072079
>>>
>>> exp(1/3 * ln(2))
1.2599210498948732
>>> 2 ** (1/3)
1.2599210498948732
>>>
me@amadeus:~$
So, the next what I’ve tried, is to use exponentiation trough different base conversion,
therefore the one of method needed float to binary and binary to float conversion.
So, that is what motivated me to ask for this feature request:
binary to float and float to binary conversion.
I did also exponentiation using decimal base:
def root(x, k, tolerance = 1e-15):
a = m = 2.0
while abs(m) > tolerance:
m = (a ** k - x) / (k * a ** (k-1))
a -= m
return a
def exp(base, x):
a, b = int(x), x - int(x)
result = base ** a
for i in f'{b:.15f}'.split(".")[1]:
base = root(base, 10)
result *= base ** int(i)
return result
from math import pi as π
print(root(27, 3))
print(log(2, 8))
print(exp(2, log(2, 10)))
print(exp(π, 1/π))
print(π ** (1/π))
print(exp(π, π))
print(π ** π)
print(log(2, 2 ** 10))
print(exp(2, 10))
/home/me/Pycharm/WelcomeScreen/.venv/bin/python script.py
3.0
3.0
10.0
1.439619495847591
1.4396194958475907
36.46215960720791
36.4621596072079
10.0
1024.0
Process finished with exit code 0