Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #102635

Re: Passing values from structure arrays to a generic geometrical mean function

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Passing values from structure arrays to a generic geometrical mean function
Date 2017-01-28 14:49 +0000
Organization A noiseless patient Spider
Message-ID <87poj7utmr.fsf@bsb.me.uk> (permalink)
References (6 earlier) <0a48658d-968a-4ddf-8c3e-5a856e298ec1@googlegroups.com> <87lgtwxxjp.fsf@bsb.me.uk> <50df88d5-9db9-401b-bf2d-bf1846d68b7b@googlegroups.com> <87wpdgvzmp.fsf@bsb.me.uk> <522dd411-1a86-49fb-8df7-a1384f3c5da8@googlegroups.com>

Show all headers | View raw


Alla _ <modelling.data@gmail.com> writes:

> On Saturday, January 28, 2017 at 2:42:29 AM UTC+3, Ben Bacarisse wrote:
>> Alla _ <modelling.data@gmail.com> writes:
>> 
>> > On Friday, January 27, 2017 at 7:44:33 PM UTC+3, Ben Bacarisse wrote:
>> >> Alla _ <modelling.data@gmail.com> writes:
>> >> 
>> >> > On Friday, January 27, 2017 at 1:34:06 PM UTC+3, Richard Heathfield wrote:
>> >> >> On 27/01/17 09:53, Alla _ wrote:
>> >> > <snip>
>> >> > Here is how everything looks now. Far from being generic
>> >> > because I still have no idea how to name parameters to make
>> >> > them generic. Maybe I shouldn't try it now, and leave it for later:
>> >> > (oh, and, yes, offsets - they are still here; enum tool is yet to be 
>> >> > learned)
>> >> >
>> >> > /** Function to fill assumptions: rates
>> >> >  for depreciation, interest **/
>> >> > void assump_rates_2(income_st *income_ptr, assets *ba_ptr,
>> >> > assumptions *rates)
>> >> 
>> >> Putting aside the parameters, the function name is wrong.  There is very
>> >> rarely any reason to call a function something_2.  If you are doing that
>> >> it suggests you are not really sure what the purpose if the function is.
>> >> 
>> >> And this function is 'void'.  Do you recall what I said about that?
>> >> 
>> >> > {
>> >> >     int dep_amor_offs = offsetof(assumptions, av_dep_amor);
>> >> 
>> >> You really must stop using offsetof.  It is a terrible hack that is only
>> >> very occasionally useful.  Reaching for it should be an indication that
>> >> you have the wrong design -- either of the function or of the data
>> >> structure.
>> >> 
>> > I can't stop doing it now. I have spent  more than 2 days
>> > working on the code, when everyone suddenly told me to 
>> > move away from offsets;
>> 
>> You have to stop using it *here*.  The offset has a purpose in the other
>> code but it has no place here.  At best, it is working like a complex
>> unsafe pointer; at worst it is mixing up the proper role of the calling
>> and called function.  Give the sketched parameters, it's hard to be sure
>> but it looks like a little of both.
>> 
>> Let me try to get some detail into this despite the sketching.  If the
>> parameter "rates" is in fact a pointer to a "struct assumptions" then
>> this:
>> 
>>      int dep_amor_offs = offsetof(assumptions, av_dep_amor);
>>      *(double*)((char*)rates + dep_amor_offs) = gm_dep;
>> 
>> is a complex way of writing
>> 
>>     rates->av_dep_amor = gm_dep;
>> 
>> But, in general, programs should do calculations by calling functions
>> and alter data structures by assigning the result of those calls.  When
>> you write a function to add two numbers you don't expect it to do some
>> offsetof calculation to decide where to put the sum -- you expect it to
>> return the sum so that it can be used in any situation where a sum is
>> needed.
>> 
> I am sorry for picking up pieces of this message when I reply. 
> I have read this message again.
> Referring to the above paragraph, this is precisely why I have come 
> here with the question on how can I write a correct function declaration,
> how can I pass parameters to it, etc. 
> Actually the assumptions_rates function (now that second one is called
> balance_rates) is computing two values - depreciation rate and interest 
> rate; both are computed in the same way but, apparently, using different
> members of arrays of structures, and assigning those rates to two
> different members of the assumptions structure. 
> Therefore the function computes two values.

I did not see a function that does that.  If I had I would have made
different comments.

Write your basic functions to compute only one value.

> (1) I am passing the assumptions structure as on of the parameters;
> but what if I make this function return the pointer to that same assumptions structure,
> will it be all right if the function alters only two out of three members
> of that structure (the first member is filled by the previous rates computing
> function)?

I can tell because I don't know what your program does.  It sounds
simple, but everything you write about it seem hugely complex.  I can
only assume that the calculations involve all sorts of inputs you have
not yet told me about.  In another post, your calculation looks very
simple: a number of years and three arrays.

> (2) I see that I indeed don't need any offsets here because the assumptions 
> structure is not an array, and hence I have a straightforward access to its
> members. Huge mistake on my side.

Good.  That's a very important step.

> (3) I need to compute two values, but I can't use the same mean functions 
> because, as has been discussed here, there is no good way to have generic 
> parameters in a function declaration,

What?  You must be using the words in some note-quite-standard way.  You
don't need generic parameters in the highly technical sense (it often
means parameters of any type) because all your data are 'double'.  I
can't see any reason why you can't use the same mean function for more
than one calculation.

> which could have taken pointers to members
> of an array of structures, and to make the calling function pass to it only 
> the required members to loop through. 
> This means that for now I have to repeat the exact same code of the mean
> function twice, but using two different structure members within that function to
> compute this. I wish I could call the mean function twice by doing this, and hence
> avoiding repeating the same code for that function twice in a program:
>
> mean(income_ptr->depreciation, bs_ptr->gr_ppe, bs_ptr->intang);
> mean(income_ptr->int_exp, bs_ptr->ltd, NULL);
>
> But I can't do that because I declare the mean function as:
> double mean(income_st *income_ptr, balance *bs_ptr)

That's incomprehensible without the typedefs being used.  Most of the
problems are probably due to having the wrong data structures, so I need
to see them.  A function called mean should look like this:

  double mean(int n, double *data);

Also, please choose better names.  mean should calculate the mean of
some data.  If you are calculating the mean of some ratios derived from
the data, call it mean_of_ratios or something like that (I can't choose
the name because I don't know the subject).

> passing pointers to whole arrays of relative structures.

I don't know what a relative structure is.

> void balance_rates(income_st *income_ptr, balance *bs_ptr, assumptions *rates)
> {
>     //Compute rate for depreciation and amortization
>     double gr_dep = mean(income_ptr, bs_ptr);
>     if(gr_dep != 0.0)
>         rates->av_dep_amor = gr_dep;
>     
>     //Compute rate for interest rate
>     double gr_int = mean(income_ptr, bs_ptr);
>     if(gr_int != 0.0)
>         rates->av_int_exp = gr_int;
> }

Is this real code?  I'm getting confused with what's a sketch and what's
real.

>> > I have tried to use the enum approach, 
>> > but it was too difficult, so I asked if I can learn it later, and I 
>> > have understood that you have agreed to that; but then, after
>> > I have moved quite far, you have said to switch away from it.
>> 
>> Thats's a red herring here.  Neither approach is needed in these
>> functions.  Stick with offsetof for the other parts but I see no need
>> for anything like it here.
>> 
>> > You know that I am still learning, and that some things are 
>> > too comprehensive for me now. 
>> >
>> >> >     //Compute rate for depreciation and amortization
>> >> >     double gm_dep = mean(income_ptr, ba_ptr);
>> >> >     if(gm_dep != 0.0)
>> >> >         *(double*)((char*)rates + dep_amor_offs) = gm_dep;
>> >> 
>> >> And when gm_dep is zero you are happy to leave the target unchanged?
>> > This part is dealt with by the calling routine.
>> 
>> That is not usually the best way to do it.  It creates a logical linkage
>> between distant parts of the program.
>> 
>> > And actually a zero depreciation rate during 5 (let alone 10 years) is
>> > hardly ever possible for a company that has depreciable assets.
>> 
>> That it's rare is not relevant.  If it's *impossible* you should either
>> ignore the situation or stop the program dead if it ever occurs.  But if
>> it is possible, however unlikely, then the program must do the right
>> thing whatever that is.
>> 
>> >> > }
>> >> >
>> >> > /** Function to compute the mean
>> >> >     for two numbers
>> >> >  **/
>> >> > double mean_twonums(double number1, double number2)
>> >> > {
>> >> >   if(number1 < 0 || number2 < 0)
>> >> >       return (number1+number2)/2;
>> >> 
>> >> What do you know for certain at this point after the if?
>> > After this 'if' the function stops and returns the simple
>> > arithmetic average, because at least one of the values
>> > is negative (which is actually also very rarely possible 
>> > for depreciation values, it would mean appreciation 
>> > of the asset, but that is not truly relative for now).
>> 
>> I meant after the whole if.  You know that the negation of the condition
>> is true, so...
>> 
>> >> >   if(fabs(number1) < 1 && fabs(number1) > 0)
>> >> >       number1 += 1.0;
>> >> >   if(fabs(number2) < 1 && fabs(number2) > 0)
>> >> >       number2 += 1.0;
>> >> >   return pow((number1*number2), 1.0/2);
>> >> 
>> >> This function is very odd.  It does not do one simple thing.  It does a
>> >> weird bunch of things depending on the data and this is very rarely a
>> >> good idea.
>> > By this code I check if any number is between 1 and zero. I don't see
>> > what wrong with this test :(
>> 
>> The function is odd, not the test.  The comment (and the name) says it
>> computes the mean of two numbers, but it doesn't.  It does not even
>> compute one of two means (the arithmetic or geometric) of two numbers.
>> It computed something even odder than that.
> Oh, please ) Not having a math background, I still don't believe this is 
> something purely finance - everything used in finance is based on 
> math, and I use very simple concepts here.
> This is a geo mean, or
> also called compound growth rate, though here I apply it only for
> two numbers.

Here is the function:

  /** Function to compute the mean
      for two numbers
   **/
  double mean_twonums(double number1, double number2)
  {
    if(number1 < 0 || number2 < 0)
        return (number1+number2)/2;

    if(fabs(number1) < 1 && fabs(number1) > 0)
        number1 += 1.0;
    if(fabs(number2) < 1 && fabs(number2) > 0)
        number2 += 1.0;
    return pow((number1*number2), 1.0/2);
  }

This is not an arithmetic mean nor is it a geometric mean.  As far as I
know, this calculation has no established name in mathematics.  It may
have a name in finance but it looks very odd even then.  It seems to be
trying to do several things at once.

> I have showed this above:
> if two values are between 1 and zero (i.e. if they are ratios, or percents,
> whatever one calls it), then to compute a geometric mean I do the following:
> ((1 + number2)*(1 + number2)*.....(1 + numberN))^(1/N)
> Therefore, I take the absolute value of each number and see if it's 
> between 1 and zero; if it is, then I add 1 to it, which also helps if 
> some of those numbers are negative.

I know what the function does because I can see the code.  I'm just
complaining about the comment and the name.  If this baroque calculation
is standard in finance, then it will have a name and you should use it.
What is certain is that it is not a mean

>> If this is a standard financial computation, what it is called?  I need
>> to look it up to see how it is usually done.

Please answer this.  Can you give me a name or a citation so I can go
study this calculation and it's uses?  I asked the same about the later
computation as well.
>
>> 
>> >> 
>> >> > }
>> >> >
>> >> > /** Function to compute arithmetic average
>> >> >     for depreciation and amortization
>> >> >  **/
>> >> > double arithmetic_av(income_st *income_ptr, assets *ba_ptr)
>> >> 
>> >> This is the wrong name.  Whatever it is that this function calculates it
>> >> is not the arithmetic average of anything!
>> > It computes an arithmetic average of ratios.
>> 
>> No.  If it did, it would not treat zero in any special way.
> I used zero here because I needed something for the test.

What test?  My point is that arithmetic averages don't treat a sum of
zero in any special way so why do you?

>> >> > {
>> >> >     double sum = 0.0;
>> >> >     double average = 0.0;
>> >> >     double mean_twonum1 = 0.0;
>> >> >     double mean_twonum2 = 0.0;
<snip> 
>> >> >     if(DATA_SIZE > 0)
>> >> >     {
>> >> >         for (int i = 1; i < DATA_SIZE; i++)
>> >> >         {
>> >> >             mean_twonum1 = mean_twonums(ba_ptr[i-1].gross_ppe, ba_ptr[i].gross_ppe);
>> >> >             mean_twonum2 = mean_twonums(ba_ptr[i-1].intang, ba_ptr[i].intang);
>> >> >             
>> >> >             if(mean_twonum1 != 0 || mean_twonum2 != 0)
>> >> >                 sum += income_ptr[i].dep_amor/(mean_twonum1 + mean_twonum2);
>> >> >             else
>> >> >             {
>> >> >                 sum = 0.0;
>> >> >                 break;
>> >> >             }
>> >> >         }
>> >> >         if(sum != 0.0)
>> >> >             average = sum / (DATA_SIZE-1);
>> >> >     }
>> >> >     return average;
>> >> > }
<snip>
>> >> >
>> >> > /** Function to compute pro forma rate
>> >> >     for depreciation and amortization
>> >> >  **/
>> >> > double mean(income_st *income_ptr, assets *ba_ptr)
>> >> > {
>> >> >     double product = 1.0;
>> >> >     double mean = 0.0;
>> >> >     double mean_twonum1 = 0.0;
>> >> >     double mean_twonum2 = 0.0;
>> >> >     if(DATA_SIZE > 0)
>> >> >     {
>> >> >         //Take data for each year
>> >> >         for (int i = 1; i < DATA_SIZE; i++)
>> >> >         {
>> >> >             //Compute arithmetic average if negative depreciation
>> >> >             if (income_ptr[i].dep_amor < 0)
>> >> >                 return arithmetic_av(income_ptr, ba_ptr);
>> >> >             
>> >> >             mean_twonum1 = mean_twonums(ba_ptr[i-1].gross_ppe, ba_ptr[i].gross_ppe);
>> >> >             mean_twonum2 = mean_twonums(ba_ptr[i-1].intang, ba_ptr[i].intang);
>> >> >             
>> >> >             if(mean_twonum1 != 0 || mean_twonum2 != 0)
>> >> >                 product *= (1 + (income_ptr[i].dep_amor)/(mean_twonum1 + mean_twonum2) );
>> >> >             else
>> >> >                 product = 0.0;
>> >> >         }
>> >> >         if(product != 0.0)
>> >> >             mean = pow(product, 1.0/DATA_SIZE)-1;
>> >> 
>> >> Really?  I don't think so but I can't guess what you meant.
>> > Why? I don't understand your question.
>> > For example: mean = ( (1+x) x (1+y) x (1+z) ) ^ (1/number of periods)
>> > Actually I should have subtracted 1 from DATA_SIZE, but that gives 
>> > a better rate, so it's better to keep it lower. It's just an assumption
>> > to "play" around later in valuations and scenarios.
>> 
>> That answers one thing: you meant 1.0/(DATA_SIZE-1).  OK.  Why is
>> product == 0.0 special? 
> Because if it is zero (which I agree not the best test value), then 
> the above condition is false, and hence the rate could have not
> been computed.

This is not a good idea.  If something can't be computed you should
report that fact to the function's caller.  Using 'magic' values to skip
subsequent parts of the calculation makes the code very hard to follow.
Better just to write the test an return immediately you see that
something is wrong.

But one even simpler solution (so you can imagine I would urge you to
consider it) is to take no special action at all.  On most modern
computers, division by floating-point zero will generate a special
"infinity" value.  The caller can report a problem if it sees the result
is infinity or it can simply leave the value there for the user of the
program to see.

>> Why is mean_twonum1 == 0 && mean_twonum2 == 0
>> special (rather than mean_twonum1 + mean_twonum2 == 0 which makes the
>> division illegal)? 
> Agree. I have not written a correct test here, actually wanting to write
> the test for illegal division.

Ah.  I hope you can see why I was a bit perplexed.

-- 
Ben.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-26 12:15 -0800
  Re: Passing values from structure arrays to a generic geometrical mean f unction Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-26 21:25 +0000
    Re: Passing values from structure arrays to a generic geometrical mean f unction Alla _ <modelling.data@gmail.com> - 2017-01-26 22:48 -0800
  Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-26 22:09 +0000
    Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 00:25 -0800
      Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-27 08:35 +0000
        Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 01:53 -0800
          Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-27 10:33 +0000
            Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 13:29 +0100
              Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-27 13:05 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 16:05 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-27 15:31 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 17:11 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function Ian Collins <ian-news@hotmail.com> - 2017-01-28 07:45 +1300
                Re: Passing values from structure arrays to a generic geometrical mean function BartC <bc@freeuk.com> - 2017-01-27 15:35 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 17:16 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function raltbos@xs4all.nl (Richard Bos) - 2017-01-27 17:13 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-29 14:26 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function BartC <bc@freeuk.com> - 2017-01-29 14:51 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-29 23:05 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function raltbos@xs4all.nl (Richard Bos) - 2017-01-31 11:23 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-31 13:21 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-02 00:59 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-27 16:57 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function raltbos@xs4all.nl (Richard Bos) - 2017-01-27 17:16 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-28 00:41 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-28 05:05 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function James Kuyper <jameskuyper@verizon.net> - 2017-01-27 11:29 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-27 09:25 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function supercat@casperkitty.com - 2017-01-27 10:00 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-27 11:50 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-29 14:41 +0100
              Re: Passing values from structure arrays to a generic geometrical mean function Manfred <noname@invalid.add> - 2017-01-27 15:36 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 16:22 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function Manfred <noname@invalid.add> - 2017-01-27 16:53 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 17:17 +0100
            Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 05:38 -0800
              Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-27 16:44 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-27 16:59 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 09:44 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-27 23:42 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 21:59 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function luser droog <luser.droog@gmail.com> - 2017-01-27 22:23 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-28 11:15 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 09:51 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 03:43 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-28 14:49 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 10:15 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 14:13 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 12:55 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 05:11 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 14:38 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 09:00 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 17:11 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 10:09 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 10:45 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 10:26 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 14:54 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:54 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 10:38 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 14:52 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-28 19:00 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function James Kuyper <jameskuyper@verizon.net> - 2017-01-28 22:54 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:33 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 10:37 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 15:57 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 09:19 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function fir <profesor.fir@gmail.com> - 2017-01-29 11:49 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:40 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 10:48 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 09:59 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 13:52 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 12:48 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 16:27 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 04:57 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-30 12:26 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 10:04 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 10:28 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-30 14:38 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 12:45 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 10:39 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-30 12:41 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 13:02 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-31 13:37 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-02 21:36 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-02-03 08:32 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-03 10:39 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-02-03 19:07 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-02-03 11:40 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-03 21:25 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-02-04 09:01 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-04 03:13 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-04 11:37 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-04 11:33 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-03 11:02 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-04 11:46 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-30 21:19 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 13:10 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-31 21:18 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 13:26 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-30 16:29 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 13:14 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-31 16:46 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-02-02 21:40 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function luser droog <luser.droog@gmail.com> - 2017-01-30 21:26 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-31 11:15 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-31 10:35 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function mark.bluemel@gmail.com - 2017-01-31 02:59 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-31 12:20 +0100
                Re: Passing values from structure arrays to a generic geometrical mean function raltbos@xs4all.nl (Richard Bos) - 2017-01-31 11:52 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function mark.bluemel@gmail.com - 2017-01-31 06:52 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Richard Heathfield <rjh@cpax.org.uk> - 2017-01-31 13:28 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 13:20 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function BartC <bc@freeuk.com> - 2017-01-31 23:33 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 21:55 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-30 11:48 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 09:15 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-30 14:27 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 12:41 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-31 16:38 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-30 19:54 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 12:51 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-31 16:54 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-30 12:19 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-30 13:54 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-31 12:57 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-31 13:35 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-31 17:01 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function raltbos@xs4all.nl (Richard Bos) - 2017-02-06 14:38 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-30 10:09 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 10:24 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:48 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 11:07 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:52 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 11:25 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-04 13:26 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 15:08 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 01:20 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-29 11:17 -0500
                Re: Passing values from structure arrays to a generic geometrical mean function Barry Schwarz <schwarzb@dqel.com> - 2017-01-29 08:42 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-27 09:58 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-27 22:45 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 00:56 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-28 11:46 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 05:08 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-28 05:26 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-28 13:01 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function supercat@casperkitty.com - 2017-01-30 09:46 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-30 12:45 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-28 15:05 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 10:23 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 13:06 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 05:17 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 14:51 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-29 12:34 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 06:31 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-29 16:03 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-29 10:04 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 00:00 -0800
                Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-30 11:06 +0000
                Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-30 00:13 -0800
            Re: Passing values from structure arrays to a generic geometrical mean function supercat@casperkitty.com - 2017-01-27 07:39 -0800
              Re: Passing values from structure arrays to a generic geometrical mean function David Brown <david.brown@hesbynett.no> - 2017-01-27 17:30 +0100
            Re: Passing values from structure arrays to a generic geometrical mean function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-27 16:16 +0000
  Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-27 11:49 -0800
    Re: Passing values from structure arrays to a generic geometrical mean function Alla _ <modelling.data@gmail.com> - 2017-01-28 00:48 -0800
      Re: Passing values from structure arrays to a generic geometrical mean function Keith Thompson <kst-u@mib.org> - 2017-01-28 11:02 -0800
    Re: Passing values from structure arrays to a generic geometrical mean function "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-28 11:09 -0500
  Re: Passing values from structure arrays to a generic geometrical mean function Ike Naar <ike@iceland.freeshell.org> - 2017-01-28 18:56 +0000

csiph-web