rpn/test/06-real.txt
2017-05-31 16:50:24 +02:00

429 lines
4.4 KiB
Text

## REAL representation
default erase
# real decimal
1
-> stack size should be 1
-> stack should be 1
drop
# real decimal (2)
2.345
-> stack should be 2.345
erase
# real decimal (3)
1 2.345 3 4.9
-> stack size should be 4
-> stack should be 1, 2.345, 3, 4.9
erase
# real hex
0x1234 0x10.10
-> stack should be 0x1.234p+12, 0x1.01p+4
# real hex (2)
dec swap dec swap
-> stack should be 4660, 16.0625
erase
# real binary
0b11001100
-> stack should be 204
erase
# real binary (2)
0b11001100.1101
-> stack should be 204.8125
erase
# real inf, nan
inf
@inf@
+inf
+@inf@
-inf
-@inf@
nan
@nan@
-> stack should be inf, inf, inf, inf, -inf, -inf, nan, nan
erase
# prec (1)
default
2 prec pi
-> stack should be 3
drop
# prec (2)
10 prec pi
-> stack should be 3.140625
drop
# prec error (1)
1 prec
-> error should be 4
# prec error (2)
0x8000000000000000 prec
-> error should be 4
erase default
# round (1)
"nearest" round
-> error should be 0
erase
# round (2)
"toward zero" round
-> error should be 0
erase
# round (3)
"toward +inf" round
-> error should be 0
erase
# round (4)
"toward -inf" round
-> error should be 0
erase
# round (5)
"away from zero" round
-> error should be 0
erase
# round (6)
round
-> error should be 2
erase default
# add (1)
1.2 2.3 +
-> stack should be 3.5
drop
# add (2)
1.2 2.3+
-> stack should be 3.5
drop
# add (3)
2.3 +
-> error should be 2
-> stack size should be 1
drop
# add (4)
+
-> error should be 2
drop
# sub (1)
1.2 2.3 -
-> stack should be -1.1
drop
# sub (2)
1.2 2.3-
-> stack should be -1.1
drop
# sub (3)
2.3 -
-> error should be 2
-> stack size should be 1
drop
# sub (4)
-
-> error should be 2
drop
# mul (1)
1.2 2.3 *
-> stack should be 2.76
drop
# mul (2)
1.2 2.3*
-> stack should be 2.76
drop
# mul (3)
2.3 *
-> error should be 2
-> stack size should be 1
drop
# mul (4)
*
-> error should be 2
drop
# div (1)
1.2 2.3 /
-> stack should be 0.5217391304347826087
drop
# div (2)
1.2 2.3/
-> stack should be 0.5217391304347826087
drop
# div (3)
2.3 /
-> error should be 2
-> stack size should be 1
drop
# div (4)
/
-> error should be 2
drop
# chs (1)
3.14 chs
-> stack should be -3.14
drop
# chs (2)
chs
-> error should be 2
# neg (1)
3.14 neg
-> stack should be -3.14
drop
# neg (2)
neg
-> error should be 2
# inv (1)
2 inv
-> stack should be 0.5
drop
# inv (2)
inv
-> error should be 2
# % (1)
2 30 %
-> stack should be 0.6
erase
# % (2)
2 30%
-> stack should be 0.6
erase
# % (3)
2 %
-> error should be 2
-> stack size should be 1
drop
# % (4)
%
-> error should be 2
drop
# %CH (1)
2 0.6 %CH
-> stack should be 30
erase
# %CH (2)
2 0.6%CH
-> stack should be 30
erase
# %CH (3)
2 %CH
-> error should be 2
-> stack size should be 1
drop
# %CH (4)
%CH
-> error should be 2
drop
# ^ (1)
2 10 ^
-> stack should be 1024
erase
# ^ (2)
2 10^
-> stack should be 1024
erase
# ^ (3)
2 ^
-> error should be 2
-> stack size should be 1
erase
# ^ (4)
^
-> error should be 2
erase
# sqrt (1)
9 sqrt
-> stack should be 3
drop
# sqrt (2)
sqrt
-> error should be 2
# sq (1)
12 sq
-> stack should be 144
drop
# sq (2)
sq
-> error should be 2
# sqr (1)
12 sqr
-> stack should be 144
drop
# sqr (2)
sqr
-> error should be 2
# mod (1)
9 4 mod
-> stack should be 1
erase
# mod (2)
9 mod
-> error should be 2
-> stack size should be 1
erase
# mod (3)
mod
-> error should be 2
erase
# abs (1)
-9 abs
-> stack should be 9
erase
# abs (2)
9 abs
-> stack should be 9
erase
# abs (3)
abs
-> error should be 2
erase
# fact (1)
6 fact
-> stack should be 720
erase
# fact (2)
'r' fact
-> error should be 3
-> stack size should be 1
erase
# fact (3)
fact
-> error should be 2
erase
# sign (1)
23 sign -34 sign 0 sign
-> stack should be 1, -1, 0
erase
# sign (2)
sign
-> error should be 2
erase
# mant (1)
123.456 mant -123.456 mant 0 mant
-> stack should be 0.123456, 0.123456, 0
erase
# mant (2)
inf mant
-> error should be 4
-inf mant
-> error should be 4
nan mant
-> error should be 4
erase
# xpon (1)
123.456 xpon -123.456 xpon 0 mant
-> stack should be 3, 3, 0
erase
# xpon (2)
inf xpon
-> error should be 4
-inf xpon
-> error should be 4
nan xpon
-> error should be 4
erase
# min (1)
1 2 min 4 3 min
-> stack should be 1, 3
erase
# min (2)
'a' 'g' min
-> error should be 3
erase
# min (3)
1 min
-> error should be 2
erase
# min (4)
min
-> error should be 2
erase
# max (1)
1 2 max 4 3 max
-> stack should be 2, 4
erase
# max (2)
'a' 'g' max
-> error should be 3
erase
# max (3)
1 max
-> error should be 2
erase
# max (4)
max
-> error should be 2
erase
default