Skip to content
Back to formatted view

Raw Message

Message-ID: <59d7961d1001221029m2f938866y509028ac3a511f85@mail.gmail.com>
Date: 2010-01-22T18:29:58Z
From: Henrik Bengtsson
Subject: Optimizing C code
In-Reply-To: <4B59E5C8.2050203@u-paris10.fr>

A side note: The NA vs NaN does not seem to play a role here, because:

#define both_non_NA(a,b) (!ISNAN(a) && !ISNAN(b))

So, it is the same type of test used in line 9 and in line 11.

/Henrik

On Fri, Jan 22, 2010 at 9:52 AM, Christophe Genolini
<cgenolin at u-paris10.fr> wrote:
> Thanks both of you.
>
>>
>> > Inf - Inf
>> [1] NaN
>
> So isn't the line 9 useless ? If either x[i] or y[i] are NA, then dev will
> be NA and !ISNAN(dev) will detect it...
> Sothe loop cool be
>
> 8. ? ?for(i = 0 ; i < taille ; i++) {
> 10. ? ? ? ?dev = (x[i] - y[i]);
> 11. ? ? ? ?if(!ISNAN(dev)) {
> 12. ? ? ? ? ?dist += dev * dev;
> 13. ? ? ? ? ?count++;
> 15. ? ? ?}
> 16. }
>
> No ?
>
> Christophe
>>
>> Duncan Murdoch
>>>
>>> Christophe
>>>
>>>
>>> #define both_FINITE(a,b) (R_FINITE(a) && R_FINITE(b))
>>> #define both_non_NA(a,b) (!ISNAN(a) && !ISNAN(b))
>>>
>>> 1. static double R_euclidean2(double *x, double *y, int taille)
>>> 2. {
>>> 3. ? ?double dev, dist;
>>> 4. ? ?int count, i;
>>> 5.
>>> 6. ? ?count= 0;
>>> 7. ? ?dist = 0;
>>> 8. ? ?for(i = 0 ; i < taille ; i++) {
>>> 9. ? ?if(both_non_NA(x[i], y[i])) {
>>> 10. ? ? ? ?dev = (x[i] - y[i]);
>>> 11. ? ? ? ?if(!ISNAN(dev)) {
>>> 12. ? ? ? ?dist += dev * dev;
>>> 13. ? ? ? ?count++;
>>> 14. ? ? ? ?}
>>> 15. ? ?}
>>> 16. ? ?}
>>> 17. ? ?if(count == 0)return NA_REAL;
>>> 18. ? ?if(count != taille) dist /= ((double)count/taille);
>>> 19. ? ?return sqrt(dist);
>>> 20.}
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>