Scilab Bag Of Tricks - Claymore
Scilab Bag Of Tricks - Claymore
Scilab Bag Of Tricks - Claymore
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 4. Unknown Spots<br />
[p_red, q_red] = reduce_int(p0, q0)<br />
else<br />
p_red = p0<br />
q_red = q0<br />
end<br />
else<br />
[p_red, q_red] = reduce_int(p0, q0) – reduce_int defined in complete example<br />
end<br />
f = tlist([’frac’; ’num’; ’denom’], p_red, q_red)<br />
function s = %frac_p(f)<br />
// display function for fractions<br />
s = string(f)<br />
disp(s)<br />
//<br />
// addition<br />
//<br />
function r = %frac_a_frac(f1, f2)<br />
d1 = gcd_int(f1(’denom’), f2(’denom’))<br />
if d1 == 1 then<br />
r = frac(f1(’num’)*f2(’denom’) + f1(’denom’)*f2(’num’), ..<br />
f1(’denom’)*f2(’denom’))<br />
else<br />
t = f1(’num’)*(f2(’denom’) / d1) + f2(’num’)*(f1(’denom’) / d1)<br />
d2 = gcd_int(t, d1)<br />
r = frac(t/d2, (f1(’denom’) / d1)*(f2(’denom’) / d2))<br />
end<br />
//<br />
// conversion<br />
//<br />
function fl = frac2float(f)<br />
// convert a fraction to a floating point number<br />
fl = f(’num’) / f(’denom’)<br />
function s = %frac_string(f)<br />
// string( frac(...) )<br />
if f(’denom’) == 1 then<br />
s = sprintf(’%.0f’, f(’num’))<br />
else<br />
s = sprintf(’%.0f/%.0f’, f(’num’), f(’denom’))<br />
end<br />
After loading these definitions a new type named frac exists. It can be used like this:<br />
46