#!/usr/bin/ruby # Tests for base conversions. func dec2bin(n) { Num(n.base(2), 10) } func bin2dec(n) { Num(n.base(10), 2) } assert_eq(dec2bin(23.34375), 10111.01011) assert_eq(bin2dec(1011.11101), 11.90625) assert_eq(dec2bin(23.34375.float), 10111.01011.float) assert_eq(bin2dec(1011.11101.float), 11.90625.float) assert_eq(dec2bin(23.34375.complex), 10111.01011.complex) assert_eq(bin2dec(1011.11101.complex), 11.90625.complex) assert_eq(Num("101010", 2), 42) assert_eq(Num("h.i", 36), 17.5) assert_eq(Num("63/2b", 16), 99/43) assert_eq(Num("(h.i 5)", 36), 17.5+5i) for t in [ 42, -42, bern(42), bern(44), sqrt(2), -sqrt(3), complex(Num.pi, Num.e), -complex(Num.pi, Num.e), complex(0, Num.pi), complex(0, -sqrt(2)) ] { assert_eq(Num(t.base(2), 2), t) assert_eq(Num(t.base(9), 9), t) assert_eq(Num(t.base(10), 10), t) assert_eq(Num(t.base(12), 12), t) assert_eq(Num(t.base(33), 33), t) assert_eq(Num(t.base(36), 36), t) } say "** Test passed!"