27 lines
643 B
Text
27 lines
643 B
Text
var xor = Fn.new { |a, b| a&(~b) | b&(~a) }
|
|
|
|
var ha = Fn.new { |a, b| [xor.call(a, b), a & b] }
|
|
|
|
var fa = Fn.new { |a, b, c0|
|
|
var res = ha.call(a, c0)
|
|
var sa = res[0]
|
|
var ca = res[1]
|
|
res = ha.call(sa, b)
|
|
return [res[0], ca | res[1]]
|
|
}
|
|
|
|
var add4 = Fn.new { |a3, a2, a1, a0, b3, b2, b1, b0|
|
|
var res = fa.call(a0, b0, 0)
|
|
var s0 = res[0]
|
|
var c0 = res[1]
|
|
res = fa.call(a1, b1, c0)
|
|
var s1 = res[0]
|
|
var c1 = res[1]
|
|
res = fa.call(a2, b2, c1)
|
|
var s2 = res[0]
|
|
var c2 = res[1]
|
|
res = fa.call(a3, b3, c2)
|
|
return [res[1], res[0], s2, s1, s0]
|
|
}
|
|
|
|
System.print(add4.call(1, 0, 1, 0, 1, 0, 0, 1))
|