In arbitrary-precision arithmetics, the sign of the result of trigonometric and exponential functions is sometimes wrong.

Here's an excerpt of a formula printing some debug results:

``````complex m1 = exp(flip(#pi))
print("exp(i * #pi)=",m1)
float sin1=sin(#pi)
float cos1=cos(#pi)
print("cos(#pi)=",cos1, ", sin(#pi)=", sin1)
``````

When I run this without additional precision, I get the following results:

``````exp(i * #pi)=(-1, 1.22460635382238E-016)
cos(#pi)=-1, sin(#pi)=1.22460635382238E-016
``````

This (aside from some floating-point imprecision) is the result I and Leonhard Euler would expect.

If however I request enough additional precision to trigger arbitrary-precision math, I get:

``````exp(i * #pi)=(1, 0)
cos(#pi)=1, sin(#pi)=0
``````

The exp and cos results don't have the correct sign.

The power function also doesn't work correctly with arbitrary precision. Example formula:

``````complex st=(-0.698827118771579245233, 0)
complex st_power2 = sqr(st)
complex st_power4 = sqr(st_power2)
complex st_power5 = st_power4*st
complex st_power5a = st^5
print("st=", st, ", st^2=", st_power2, ", st^4=", st_power4)
print(" st^5 should be ", st_power5, ", st^5 is ", st_power5a)
``````

Result with double precision:

``````st=(-0.698827118771579, 0), st^2=(0.488359341930587, 0), st^4=(0.238494846850876, 0)
st^5 should be (-0.166666666666666, 0), st^5 is (-0.166666666666666, -9.03501810404586E-021)
---
``````

Correct, except for floating-point imprecision.

With arbitrary precision:

``````st=(-0.698827118771579245233, 0), st^2=(0.4883593419305869251049, 0), st^4=(0.2384948468508759168409, 0)
st^5 should be (-0.1666666666666666666667, 0), st^5 is (0.1666666666666666666667, 0)
---
``````

Again, the sign is wrong.

In arbitrary-precision arithmetics, the sign of the result of trigonometric and exponential functions is sometimes wrong. Here&#039;s an excerpt of a formula printing some debug results: complex m1 = exp(flip(#pi)) print(&quot;exp(i * #pi)=&quot;,m1) float sin1=sin(#pi) float cos1=cos(#pi) print(&quot;cos(#pi)=&quot;,cos1, &quot;, sin(#pi)=&quot;, sin1) When I run this without additional precision, I get the following results: exp(i * #pi)=(-1, 1.22460635382238E-016) cos(#pi)=-1, sin(#pi)=1.22460635382238E-016 This (aside from some floating-point imprecision) is the result I and Leonhard Euler would expect. If however I request enough additional precision to trigger arbitrary-precision math, I get: exp(i * #pi)=(1, 0) cos(#pi)=1, sin(#pi)=0 The exp and cos results don&#039;t have the correct sign. The power function also doesn&#039;t work correctly with arbitrary precision. Example formula: complex st=(-0.698827118771579245233, 0) complex st_power2 = sqr(st) complex st_power4 = sqr(st_power2) complex st_power5 = st_power4*st complex st_power5a = st^5 print(&quot;st=&quot;, st, &quot;, st^2=&quot;, st_power2, &quot;, st^4=&quot;, st_power4) print(&quot; st^5 should be &quot;, st_power5, &quot;, st^5 is &quot;, st_power5a) Result with double precision: st=(-0.698827118771579, 0), st^2=(0.488359341930587, 0), st^4=(0.238494846850876, 0) st^5 should be (-0.166666666666666, 0), st^5 is (-0.166666666666666, -9.03501810404586E-021) --- Correct, except for floating-point imprecision. With arbitrary precision: st=(-0.698827118771579245233, 0), st^2=(0.4883593419305869251049, 0), st^4=(0.2384948468508759168409, 0) st^5 should be (-0.1666666666666666666667, 0), st^5 is (0.1666666666666666666667, 0) --- Again, the sign is wrong.

0

Thanks for pointing this out, I'll look into it!

Thanks for pointing this out, I&#039;ll look into it!

Ultra Fractal author

0

I found the error and it will be fixed in the next UF6 update.

I found the error and it will be fixed in the next UF6 update.

Ultra Fractal author

0
49
views
3
replies
2
followers
live preview
Enter at least 10 characters.
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing