RosettaCodeData/Task/Arithmetic-Rational/REXX/arithmetic-rational.rexx

59 lines
1.3 KiB
Rexx
Raw Permalink Normal View History

2026-04-30 12:34:36 -04:00
-- 21 Feb 2026
2026-02-01 16:33:20 -08:00
include Setting
2023-07-01 11:58:00 -04:00
2025-08-11 18:05:26 -07:00
say 'RATIONAL ARITHMETIC'
2025-06-11 20:16:52 -04:00
say version
say
2026-04-30 12:34:36 -04:00
a='1 2'; b='-3 4'; c='5 -6'; d='-7 -8'; e=3; f=1.666666666
2025-02-27 18:35:13 -05:00
say 'VALUES'
2026-04-30 12:34:36 -04:00
say 'a =' Rat2form(a)
say 'b =' Rat2form(b)
say 'c =' Rat2form(c)
say 'd =' Rat2form(d)
2025-02-27 18:35:13 -05:00
say 'e =' e
say 'f =' f
say
say 'BASICS'
2026-04-30 12:34:36 -04:00
say 'a+b =' Rat2form(AddQ(a,b))
say 'a-b =' Rat2form(SubQ(a,b))
say 'a*b =' Rat2form(MulQ(a,b))
say 'a/b =' Rat2form(DivQ(a,b))
say '-a =' Rat2form(NegQ(a))
say '1/a =' Rat2form(InvQ(a))
2025-02-27 18:35:13 -05:00
say
2026-04-30 12:34:36 -04:00
say 'COMPARE'
2025-08-11 18:05:26 -07:00
say 'a<b =' LtQ(a,b)
say 'a<=b =' LeQ(a,b)
say 'a=b =' EqQ(a,b)
say 'a>=b =' GeQ(a,b)
say 'a>b =' GtQ(a,b)
say 'a<>b =' NeQ(a,b)
2025-02-27 18:35:13 -05:00
say
say 'BONUS'
2026-04-30 12:34:36 -04:00
say 'Abs(c) =' Rat2form(AbsQ(c))
2025-08-11 18:05:26 -07:00
say 'Float(b) =' FloatQ(b)
2026-04-30 12:34:36 -04:00
say 'Neg(d) =' Rat2form(NegQ(d))
say 'Power(a,e) =' Rat2form(PowQ(a,e))
say 'Rational(f) =' Rat2form(RatQ(f))
2025-02-27 18:35:13 -05:00
say
say 'FORMULA'
2026-04-30 12:34:36 -04:00
g=SquareQ(a); h=MulQ(-2,MulQ(a,b)); i=MulQ(3,c); j=MulQ(-4,MulQ(a,PowQ(d,4))); k=5
say 'a^2-2ab+3c-4ad^4+5 =' Rat2form(AddQ(g,AddQ(h,AddQ(i,AddQ(j,k)))))
2025-02-27 18:35:13 -05:00
say
2026-04-30 12:34:36 -04:00
say 'PERFECT NUMBERS'
2025-02-27 18:35:13 -05:00
numeric digits 20
2026-04-30 12:34:36 -04:00
do c=6 to 2**19
s=1 c; m=Isqrt(c)
do f=2 to m
if c//f=0 then
s=AddQ(s,AddQ(1 f,f c))
end f
2025-08-11 18:05:26 -07:00
if EqQ(s,1) then
2025-02-27 18:35:13 -05:00
say c 'is a perfect number'
end
2026-04-30 12:34:36 -04:00
call Timer
2025-02-27 18:35:13 -05:00
exit
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
-- All procedures ending with 'Q'; Rat2form; Isqrt; Timer
2025-08-11 18:05:26 -07:00
include Math