Gamma Functions

Gamma Functions - rapid speed with precision - Сообщения

#1 Опубликовано: 07.06.2021 17:07:11
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Gamma function,
Lower Incomplete Gamma function,
Upper Incomplete Gamma function,
with almost instant speed and high precision.

Regards

gamma.sm (34 КиБ) скачан 56 раз(а). <---- least accurate
gamma_r2.sm (11 КиБ) скачан 56 раз(а).
gamma_r3.sm (11 КиБ) скачан 54 раз(а).
gamma_r4.sm (13 КиБ) скачан 52 раз(а).
gamma_r5.sm (11 КиБ) скачан 54 раз(а).
gamma_r6.sm (17 КиБ) скачан 49 раз(а).
gamma_r7.sm (28 КиБ) скачан 59 раз(а).
gamma_r8.sm (31 КиБ) скачан 48 раз(а).
gamma_r9.sm (36 КиБ) скачан 87 раз(а). <----imaginary numbers added

2021-06-13_07-19.png
#2 Опубликовано: 08.06.2021 14:57:24
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Thanks, will explore.

AboveMax.PNG


Main limitation is smath floating points.
Python gives much more accurate results with same algorithms.
Try the other one for gamma calculation.

gamma_r2.sm (11 КиБ) скачан 56 раз(а).

2021-06-08_21-01.png
#3 Опубликовано: 08.06.2021 19:21:30
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

Try the other one for gamma calculation.


round(■ ,■ ,■ ) ... undefined
H.T.Davis [Abramowitz & Stegun] -> very objective.
In the mean time I'm finishing two superb applications examples
... examples based on your first Gamma(a,x) version,
Thanks for that one, gorgeous ... Jean.

gamma_r2 [H.T.Davis].sm (57 КиБ) скачан 46 раз(а).



#4 Опубликовано: 08.06.2021 19:55:03
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Wrote

Try the other one for gamma calculation.


round(■ ,■ ,■ ) ... undefined
H.T.Davis [Abramowitz & Stegun] -> very objective.
In the mean time I'm finishing two superb applications examples
... examples based on your first Gamma(a,x) version,
Thanks for that one, gorgeous ... Jean.


Undefined because you have an old version of smath.
Round(#,#,#) is not parsed through your program.
Use trunc() instead. And with more constants.

gamma_r3.sm (11 КиБ) скачан 54 раз(а).

2021-06-09_01-52.png
#5 Опубликовано: 08.06.2021 20:34:03
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Technically this should be the most accurate one.

gamma_r4.sm (13 КиБ) скачан 52 раз(а).

2021-06-09_04-52.png
#6 Опубликовано: 08.06.2021 21:34:29
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

As offered ... two applications.
Now, the old Rooster is going in the bed marmite ... Jean.

gamma(a,x) Applications.sm (23 КиБ) скачан 55 раз(а).
#7 Опубликовано: 08.06.2021 22:08:00
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

As offered ... two applications.
Now, the old Rooster is going in the bed marmite ... Jean.

gamma(a,x) Applications.sm (23 КиБ) скачан 55 раз(а).


I suggest you to change gamma function with gamma_r4.
It is 3 times faster and much more precise.
#8 Опубликовано: 09.06.2021 13:46:58
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

I suggest you to change gamma function with gamma_r4.
It is 3 times faster and much more precise.


Thanks for gamma_r4
1. NO gain timing both applications
2. gamma_r4 Does NOT solve ... first version solves.
#9 Опубликовано: 09.06.2021 14:06:13
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Thanks for gamma_r4
1. NO gain timing both applications
2. gamma_r4 Does NOT solve ... first version solves.


Speed may differ between linux and windows.
gamma_r4 is faster 3 times in linux.
What do you mean by 'does not solve'?
How should this page look like?

gamma(a,x) Applications.pdf (125 КиБ) скачан 58 раз(а).
#10 Опубликовано: 09.06.2021 14:19:23
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

What do you mean by 'does not solve'?



SR.4.PNG

#11 Опубликовано: 09.06.2021 14:36:55
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Wrote

What do you mean by 'does not solve'?



SR.4.PNG


I think this is the same bug I mentioned earlier. Some functions don't like to be in another function.

2021-06-06_14-44.png

Solution was to put a line but that method is not working in this case.

gamma.png

@Andrey or @Davide has to look at this.
#12 Опубликовано: 09.06.2021 16:03:46
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

1. NO gain timing both applications


Latest version is faster about 4 times.

faster_gamma.png
#13 Опубликовано: 09.06.2021 16:23:05
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Wrote

What do you mean by 'does not solve'?



SR.4.PNG


It solves, not with conventional methods.
They tend to give errors, not gamma_r4's fault.
alglib is the answer, it usually gives result.

gamma_solve.png
#14 Опубликовано: 09.06.2021 21:50:11
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

It solves, not with conventional methods.
They tend to give errors, not gamma_r4's fault.
alglib is the answer, it usually gives result.


Good rescue ... OK.
As it looks, sr4 resides at the kernel level.
Thus, it plots but not solve(,,,,)
because not scalar wrt 'x' for the solve bloc.
#15 Опубликовано: 09.06.2021 22:06:36
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Good rescue ... OK.
As it looks, sr4 resides at the kernel level.
Thus, it plots but not solve(,,,,)
because not scalar wrt 'x' for the solve bloc.


Nope, not related with kernel, blocks, scalability, etc.
It is probably a bug of solve(), roots(), FindRoot().
Gamma Function has nothing to do with it.
Even very simple ones suffer from this too.
Check below.

2021-06-10_04-03.png
#16 Опубликовано: 09.06.2021 22:22:56
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

It seems solve(), roots(), FindRoot() doesn't like if statements.
I have updated the bugreport in Bugs and Problems > solve() bug.
Using cases() seems to solve the issue. Check the sample below.

gamma_r5.sm (11 КиБ) скачан 54 раз(а).

2021-06-10_04-19.png
#17 Опубликовано: 10.06.2021 11:16:16
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

Check the sample below


Doctored version confirmed.
#18 Опубликовано: 10.06.2021 22:56:05
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

gamma_r5 has a serious flaw. It can't calculate a<0.5.
My bad, should check it carefully. Corrected page is below.
Refactored so it is faster, also get rid of recursive call.
I had to get around some smath bugs with line, if/cases, recursive.
Correlation of them gives weird errors.
Hope this version solves all issues and be the last one.
I know I have flooded this topic too much, sorry for inconvenience.

Regards

gamma_r6.sm (17 КиБ) скачан 49 раз(а).

PS: gamma for negative non-integer values support corrected

2021-06-11_08-40.png
#19 Опубликовано: 11.06.2021 10:16:24
Jean Giraud

Jean Giraud

983 сообщений из 6866 понравились пользователям.

Группа: User

Wrote

I know I have flooded this topic too much


You may not like my verdicts:
1. on-line faster has no or little interest, neither up ^307.
2. Your first version runs fine the two applications.
3. The champion is the long time ago published Alvaro Γ(x)
4. for these two applications [2] & [3] are same
but => [3] drops timing [2] from 24 s down 18 s
The drop in timing results from Alvaro Γ(x)
running at the kernel scalar level.
BTW, my original H.T. Davis sanity Mathcad & Alvaro Γ(x)
By same token, thanks Alvaro for your Γ(x).
Cheers ... Jean

Maths Special Gamma(a,x) Incomplete APPLICATIONS [Alvaro G(x)].sm (26 КиБ) скачан 53 раз(а).
#20 Опубликовано: 11.06.2021 12:45:20
overlord

overlord

554 сообщений из 1333 понравились пользователям.

Группа: Moderator

Wrote

Wrote

I know I have flooded this topic too much


You may not like my verdicts:
1. on-line faster has no or little interest, neither up ^307.
2. Your first version runs fine the two applications.
3. The champion is the long time ago published Alvaro Γ(x)
4. for these two applications [2] & [3] are same
but => [3] drops timing [2] from 24 s down 18 s
The drop in timing results from Alvaro Γ(x)
running at the kernel scalar level.
BTW, my original H.T. Davis sanity Mathcad & Alvaro Γ(x)
By same token, thanks Alvaro for your Γ(x).
Cheers ... Jean

Maths Special Gamma(a,x) Incomplete APPLICATIONS [Alvaro G(x)].sm (26 КиБ) скачан 53 раз(а).


1. 10^308 feature added for fully use IEEE capability.
2. gamma_r6 runs every possible applications.
3. don't want to disrespect, Alvaro's is a single line awesome code.
4. mine has same algorithm with more features, with faster calculation.
4. gamma_r6 is faster from gamma_r2 and gamma_r3 while trying to have all feature.

gamma_r6_app.sm (33 КиБ) скачан 63 раз(а).

Here is a side by side comparison with Alvaro's algorithm with mine.
On linux, gamma_r6 is faster about 20 percent.

Показать спойлер






  • Новые сообщения Новые сообщения
  • Нет новых сообщений Нет новых сообщений