gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] algorithm for arithmetic operations between t_ratio


From: Vanuxem Grégory
Subject: [Gcl-devel] algorithm for arithmetic operations between t_ratio
Date: Fri, 20 Aug 2004 15:39:47 +0200

Hi,

>From support request [support #103220]:

I tried this for for + (and - with modification) operation, but i don't
know if I had to push objects created:

case t_ratio:{ 
        object g, num, den, num1, den1, tmp; 
        vs_mark; 
        den1 = get_gcd(x->rat.rat_den,          y->rat.rat_den); 
        vs_push(den1); 
        num = integer_divide1(x->rat.rat_den, den1); 
        vs_push(num); 
        den = integer_divide1(y->rat.rat_den, den1); 
        vs_push(den); 
        num1 = number_times(den,x->rat.rat_num);
        vs_push(num1);
        tmp = number_times(num,y->rat.rat_num); 
        vs_push(tmp);
        num1 = number_plus(num1, tmp); //or number_minus
        vs_push(num1); 
        g = get_gcd(num1, den1); 
        vs_push(g); 
        num1 = integer_divide1(num1, g); 
        vs_push(num1); 
        den1 = integer_divide1(den1, g); 
        vs_push(den1); 
        tmp = number_times(den1, num); 
        vs_push(tmp); 
        den1 = number_times(tmp, den); 
        vs_push(den1); 
        if(type_of(den1) == t_fixnum &&  fix(den1) == 1) { 
                vs_reset; 
                return(num1); 
        } 
        z = alloc_object(t_ratio); 
        z->rat.rat_num = num1; 
        z->rat.rat_den = den1; 
        vs_reset; 
} 
return(z); 


is this code correct ? 

Cheers, Greg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]