[ 
https://issues.apache.org/jira/browse/MATH-212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

jason updated MATH-212:
-----------------------

    Attachment: copy_constructor.patch

Adds copy constructors to:

Max
SumOfSquares
Sum
Product
FirstMoment
SecondMoment
ThirdMoment
FourthMoment
Median
Min
SumOfLogs
Percentile
Skewness
Variance
Mean
Kurtois
StandardDeviation 

> Provide a way to copy all instances of StorelessUnivariateStatistic (e.g. 
> Mean, Variance, Max, Kurtoise, etc), perhaps via a copy-constructor
> ---------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MATH-212
>                 URL: https://issues.apache.org/jira/browse/MATH-212
>             Project: Commons Math
>          Issue Type: Improvement
>         Environment: N/A
>            Reporter: jason
>            Priority: Minor
>         Attachments: copy_constructor.patch
>
>
> Below is the conversation related to this topic that was posted to the 
> Commons Users group. As soon as I figure out how, I'll attach my patch that 
> adds copy constructors to all intended classes exception GeometricMean and 
> SummaryStatistic, which both allow the user to specify arbitrary 
> implementations and thus cannot be copied. See below for details.
> Phil,
> Well, that was easy in some cases and I'm not sure how it went in others and 
> could use help. I had issue with creating a copy constructor for 
> GeometricMean and SummaryStatistic. Both of these classes allow the user to, 
> via the API, set a StorelessUnivariateStatistic as the implementation. For 
> instance take the following method in Geometric mean:
>    public void setSumLogImpl(
>            StorelessUnivariateStatistic sumLogImpl) {
>        checkEmpty();
>        this.sumOfLogs = sumLogImpl;
>    }
> There is no way to create a true deep copy of sumLogImpl, as we only know it 
> to be an instance of StorelessUnivariateStatistic. I think the solution is to 
> allow the copy constructors for the below classes into the baseline, but not 
> provide a copy constructor for GeometricMean or SummaryStatistic unless you 
> want to (1) deprecate the implementation business or (2) create a abstract 
> copy method in StorelessUnivariateStatistic forcing all implementations to be 
> 'copyable'.
> The following classes were able to be given copy constructors without issue:
> Max
> SumOfSquares
> Sum
> Product
> FirstMoment
> SecondMoment
> ThirdMoment
> FourthMoment
> Median
> Min
> SumOfLogs
> Percentile
> Skewness
> Variance
> Mean
> Kurtois
> StandardDeviation
> Phil Steitz wrote:
> > Jason C. HandUber wrote:
> >> Hello,
> >>
> >> I'm writing an evolutionary algorithm in which each individual contains 
> >> StandardDeviations and Means. From time to time I need a deep copy / clone 
> >> of an individual. Thus far I've actually had to keep a list of all data 
> >> and, when cloning, generate a new statistic and increment it with all that 
> >> data. Now that I'm moving to production level, turns out I'm running out 
> >> of memory (no huge surprise). I'm going to extend Mean, Variance, 
> >> StandardDeviation, FirstMoment, and SecondMoment for my application to 
> >> provide a copy constructor (which, according to Item 10, page 51 of 
> >> Bloch's effective java, beats out clone, and I buy that) for each. Anyway, 
> >> I think that addition would be easy and general enough to introduce into 
> >> the trunk. Any thoughts?
> > +1 on this enhancement, also for SummaryStatistics, implemented as you 
> > describe.
> >
> > Please follow instructions here 
> > <http://commons.apache.org/math/developers.html> to create a patch against 
> > either trunk or the 2.0 development branch (/branches/MATH_2_0) and attach 
> > it to a JIRA ticket.
> >
> > Thanks!
> >
> > Phil 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to