#
redef class AUnaryNopInstruction
super ADigitSuffixed
- redef fun digit_max do return 1.lshift(2)-1
+ redef fun digit_max do return (1 << 2)-1
end
redef class ANotInstruction
redef class ARetInstruction
super ADigitSuffixed
- redef fun digit_max do return 1.lshift(3)-1
+ redef fun digit_max do return (1 << 3)-1
end
redef abstract class AArithmeticInstruction
private fun set_value(array: Array[Int], start_index: Int, value: Int)
do
array[start_index] = value.bin_and(0x000000FF)
- array[start_index + 1] = value.rshift(8).bin_and(0x000000FF)
- array[start_index + 2] = value.rshift(16).bin_and(0x000000FF)
- array[start_index + 3] = value.rshift(24).bin_and(0x000000FF)
+ array[start_index + 1] = (value >> 8).bin_and(0x000000FF)
+ array[start_index + 2] = (value >> 16).bin_and(0x000000FF)
+ array[start_index + 3] = (value >> 24).bin_and(0x000000FF)
end
# Saves the bitmap into a file
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
- var red = pixel.rshift(16)
- var green = pixel.bin_and(0x00FF00).rshift(8)
+ var red = pixel >> 16
+ var green = pixel.bin_and(0x00FF00) >> 8
var blue = pixel.bin_and(0x000000FF)
fw.write(red.ascii.to_s)
fw.write(green.ascii.to_s)
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
- var red = pixel.rshift(16)
- var green = pixel.bin_and(0x00FF00).rshift(8)
+ var red = pixel >> 16
+ var green = pixel.bin_and(0x00FF00) >> 8
var blue = pixel.bin_and(0x000000FF)
var lum = (0.2126 * red.to_f + 0.7152 * green.to_f + 0.0722 * blue.to_f).to_i
pixel = lum * 256 * 256 + lum * 256 + lum
var i = mask.highest_bit
while i != 0 do
if mask.getbit(i) == 1 then
- newmask = mask.bin_xor(1.lshift(i))
+ newmask = mask.bin_xor(1 << i)
# If there is no collision, replace the old mask
if phandp(ids, newmask) then
do
var mask = phand(ids) -1
var i = 0
- while n+ids.length > (1.lshift(mask.number_bits(1))) do
+ while n+ids.length > (1 << mask.number_bits(1)) do
# When there are not enough 1-bits
if mask.getbit(i) == 0 then
- mask = mask.bin_xor(1.lshift(i))
+ mask = mask ^ (1 << i)
end
i += 1
end
redef fun zero do return 0.to_b
redef fun value_of(val) do return val.to_b
- # `i` bits shift fo the left (aka <<)
+ # `i` bits shift fo the left
#
- # assert 5.to_b.lshift(1) == 10.to_b
- fun lshift(i: Int): Byte is intern
+ # assert 5u8 << 1 == 10u8
+ fun <<(i: Int): Byte `{ return self << i; `}
- # alias of `lshift`
- fun <<(i: Int): Byte do return lshift(i)
-
- # `i` bits shift fo the right (aka >>)
+ # `i` bits shift fo the right
#
- # assert 5.to_b.rshift(1) == 2.to_b
- fun rshift(i: Int): Byte is intern
-
- # alias of `rshift`
- fun >>(i: Int): Byte do return rshift(i)
+ # assert 5u8 >> 1 == 2u8
+ fun >>(i: Int): Byte `{ return self >> i; `}
redef fun to_i is intern
redef fun to_f is intern
redef fun zero do return 0
redef fun value_of(val) do return val.to_i
- # `i` bits shift fo the left (aka <<)
+ # `i` bits shift fo the left
#
- # assert 5.lshift(1) == 10
- fun lshift(i: Int): Int is intern
+ # assert 5 << 1 == 10
+ fun <<(i: Int): Int `{ return self << i; `}
- # alias of `lshift`
- fun <<(i: Int): Int do return lshift(i)
-
- # `i` bits shift fo the right (aka >>)
+ # `i` bits shift fo the right
#
- # assert 5.rshift(1) == 2
- fun rshift(i: Int): Int is intern
-
- # alias of `rshift`
- fun >>(i: Int): Int do return rshift(i)
+ # assert 5 >> 1 == 2
+ fun >>(i: Int): Int `{ return self >> i; `}
redef fun to_i do return self
redef fun to_f is intern
if o == 0 then return self
if self.bin_and(1) == 0 then
if o.bin_and(1) == 1 then
- return self.rshift(1).gcd(o)
+ return (self >> 1).gcd(o)
else
- return self.rshift(1).gcd(o.rshift(1)).lshift(1)
+ return (self >> 1).gcd(o >> 1) << 1
end
end
- if o.bin_and(1) == 0 then return self.gcd(o.rshift(1))
- if self > o then return (self - o).rshift(1).gcd(o)
- return (o - self).rshift(1).gcd(self)
+ if o & 1 == 0 then return self.gcd(o >> 1)
+ if self > o then return ((self - o) >> 1).gcd(o)
+ return ((o - self) >> 1).gcd(self)
end
# Is `self` even ?
for i in [0..length[ do
var char = chars[i]
- h = h.lshift(5) + h + char.ascii
+ h = (h << 5) + h + char.ascii
end
hash_cache = h
var myitems = items
while i <= last_byte do
- h = h.lshift(5) + h + myitems[i].to_i
+ h = (h << 5) + h + myitems[i].to_i
i += 1
end
else if pname == "%" then
v.ret(v.new_expr("{arguments[0]} % {arguments[1]}", ret.as(not null)))
return true
- else if pname == "lshift" then
- v.ret(v.new_expr("{arguments[0]} << {arguments[1]}", ret.as(not null)))
- return true
- else if pname == "rshift" then
- v.ret(v.new_expr("{arguments[0]} >> {arguments[1]}", ret.as(not null)))
- return true
else if pname == "==" then
v.ret(v.equal_test(arguments[0], arguments[1]))
return true
else if pname == "%" then
v.ret(v.new_expr("{arguments[0]} % {arguments[1]}", ret.as(not null)))
return true
- else if pname == "lshift" then
- v.ret(v.new_expr("{arguments[0]} << {arguments[1]}", ret.as(not null)))
- return true
- else if pname == "rshift" then
- v.ret(v.new_expr("{arguments[0]} >> {arguments[1]}", ret.as(not null)))
- return true
else if pname == "==" then
v.ret(v.equal_test(arguments[0], arguments[1]))
return true
else if pname == "%" then
v.ret(v.new_expr("{arguments[0]} % {arguments[1]}", ret.as(not null)))
return true
- else if pname == "lshift" then
+ else if pname == "<<" then
v.ret(v.new_expr("{arguments[0]} << {arguments[1]}", ret.as(not null)))
return true
- else if pname == "rshift" then
+ else if pname == ">>" then
v.ret(v.new_expr("{arguments[0]} >> {arguments[1]}", ret.as(not null)))
return true
else if pname == "==" then
else if pname == "%" then
v.ret(v.new_expr("(byte)({arguments[0]} % {arguments[1]})", ret.as(not null)))
return true
- else if pname == "lshift" then
+ else if pname == "<<" then
v.ret(v.new_expr("(byte)({arguments[0]} << {arguments[1]})", ret.as(not null)))
return true
- else if pname == "rshift" then
+ else if pname == ">>" then
v.ret(v.new_expr("(byte)({arguments[0]} >> {arguments[1]})", ret.as(not null)))
return true
else if pname == "==" then
var n = 10
if args.not_empty then n = args.first.to_i
-var nn = 1.lshift(n)
+var nn = 1 << n
var a = new Array[Numeric]
var b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var depth = min_depth
while depth <= max_depth do
- var iterations = 1.lshift(max_depth - depth + min_depth)
+ var iterations = 1 << (max_depth - depth + min_depth)
var check_res = 0
for i in [1..(iterations+1)[ do
nb = args.first.to_i
end
-s.run_for(1.lshift(nb))
+s.run_for(1 << nb)
print(c1.count)
fun test(n: Int)
do
- var m = 1000.lshift(n)
+ var m = 1000 << n
print("Primes up to {m} {nsieve(m)}")
end
var n = 10
if args.not_empty then n = args.first.to_i
-while i < 1.lshift(n) do
+while i < 1 << n do
a.hop(b, c, d)
i = i + 1
end
a[i*6+4] = new E
a[i*6+5] = new F
end
-for i in [0..1.lshift(n)[ do
+for i in [0..1 << n[ do
for j in [0..nb[ do
a[j].foo
end
var depth = min_depth
while depth <= max_depth do
- var iterations = 1.lshift(max_depth - depth + min_depth)
+ var iterations = 1 << (max_depth - depth + min_depth)
var check_res = 0
for i in [1..(iterations+1)[ do
end
if zr*zr+zi*zi > limit*limit then
- byte_acc = (byte_acc.lshift(1))
+ byte_acc = byte_acc << 1
else
- byte_acc = (byte_acc.lshift(1)) + 1u8
+ byte_acc = (byte_acc << 1) + 1u8
end
bit_num = bit_num + 1
byte_acc = 0u8
bit_num = 0
else if x == w - 1 then
- byte_acc = byte_acc.lshift(8-w%8)
+ byte_acc = byte_acc << (8-w%8)
stdout.write_byte(byte_acc)
byte_acc = 0u8
bit_num = 0
fun test(n: Int)
do
- var m = 10000.lshift(n)
+ var m = 10000 << n
print("Primes up to {m} {nsieve(m)}")
end
fun test(n: Int)
do
- var m = 10000.lshift(n)
+ var m = 10000 << n
print("Primes up to {m} {nsieve(m)}")
end