commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amey Jadiye (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (NUMBERS-38) No unit tests for "LanczosApproximation" class
Date Mon, 05 Jun 2017 19:01:04 GMT

    [ https://issues.apache.org/jira/browse/NUMBERS-38?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16037408#comment-16037408
] 

Amey Jadiye commented on NUMBERS-38:
------------------------------------

Hi [~erans]

bq. It is still not clear to me what is the benefit of moving those lines ... 
Let me try to put this way .. Gamma is nothing but advanced factorial function with advantages
like we can have factorial of whole numbers as well as factional. Now [Gamma function| https://en.wikipedia.org/wiki/Gamma_function]
which is having general formula {{Gamma( x ) = integral( t^(x-1) e^(-t), t = 0 .. infinity)}}
and Lanczos approximation / Stirling's approximation /Spouge's Approximation  *is a* gamma
function so they should be extend Gamma.

Exact algorithm and formulas here :
 - [Lanczo's Approximation|https://en.wikipedia.org/wiki/Lanczos_approximation]
 - [Stirling's Approximation|https://en.wikipedia.org/wiki/Stirling%27s_approximation]
 - [Spouge's Approximation|https://en.wikipedia.org/wiki/Spouge%27s_approximation]

Why to refactor code is because basic gamma computes not so accurate values so someone who
need quick computation without precision can choose it, while someone who need precision overs
cost of performance _(Lanczos approximation is accurate so its slow)_ can choose which algorithm
they want which is not possible right now.

I'm proposing something like:
{quote}
Gamma gammaFun = new Gamma(); gammaFun.value( x );
Gamma gammaFun = new LanczosGamma(); gammaFun.value( x );
Gamma gammaFun = new StirlingsGamma(); gammaFun.value( x );
Gamma gammaFun = new SpougesGamma(); gammaFun.value( x );
{quote}

as the class name suggestion {{LanczosApproximation}} it should execute full _Lanczos Algoritham_
but we are just computing coefficients in that class which is incorrect, so just refactoring
is needed which wont break any dependency of this class anywhere.

All that said, will do 2 things now.

# I will propose this to commons-dev mailing list and lets see what others are thinking about
this ?
# I will change the PR code and will make test cases just to test what coefficients are we
generating with against 2 codes I found on internet._(which is you are suggesting)_

So if proposal fails we will have test cases anyway for existing code *or* if proposal passes
will create other JIRA and modify test cases according to different algorithms.

let me know your thoughts?


> No unit tests for "LanczosApproximation" class
> ----------------------------------------------
>
>                 Key: NUMBERS-38
>                 URL: https://issues.apache.org/jira/browse/NUMBERS-38
>             Project: Commons Numbers
>          Issue Type: Test
>            Reporter: Gilles
>              Labels: unit-test
>             Fix For: 1.0
>
>         Attachments: NUMBERS-38.patch
>
>
> The computation of the {{LanczosApproximation}} (package {{o.a.c.numbers.gamma}} in module
{{commons-numbers-gamma}}) function is not checked by unit tests.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message