package iid import ( "testing" ) func TestCompile(t *testing.T) { tests := []struct{ First uint64 Second uint64 Expected uint64 }{ { // v First: 0b0000000000000000000000000000000000000000000000000000000000000001, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000001000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000000000010, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000010000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000000000100, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000100000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000000001000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000001000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000000010000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000010000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000000100000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000100000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000001000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000001000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000010000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000010000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000000100000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000100000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000001000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000001000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000010000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000010000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000000100000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000100000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000001000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000001000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000010000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000010000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000000100000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000100000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000001000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000001000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000010000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000010000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000000100000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000100000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000001000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000001000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000010000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000010000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000000100000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000100000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000001000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000001000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000010000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000010000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000000100000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000100000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000001000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000001000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000010000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000010000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000000100000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000100000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000001000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000001000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000010000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000010000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000000100000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000100000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000001000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000001000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000010000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000010000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000000100000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000100000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000001000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000001000000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000010000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000010000000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000000100000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000100000000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000001000000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0001000000000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000010000000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0010000000000000000000000000000000000000000000000000000000000000, // ^ }, { // v First: 0b0000000000000000000000000100000000000000000000000000000000000000, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0100000000000000000000000000000000000000000000000000000000000000, // ^ }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0100000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0010000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0001000000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000100000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000010000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000001000000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000100000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000010000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000001000000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000100000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000010000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000001000000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000100000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000010000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000001000000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000100000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000010000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000001000000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000100000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000010000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000001000000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000100000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000010000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000001000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000100000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000010000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000001000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000100000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000010000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000001000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000100000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000010000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000001000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000100000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000010000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000001000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000100000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000010000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000001000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000100000000000000000000000, Expected: 0b0000000000000000000000000000000000000000100000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000010000000000000000000000, Expected: 0b0000000000000000000000000000000000000000010000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000001000000000000000000000, Expected: 0b0000000000000000000000000000000000000000001000000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000100000000000000000000, Expected: 0b0000000000000000000000000000000000000000000100000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000010000000000000000000, Expected: 0b0000000000000000000000000000000000000000000010000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000001000000000000000000, Expected: 0b0000000000000000000000000000000000000000000001000000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000100000000000000000, Expected: 0b0000000000000000000000000000000000000000000000100000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000010000000000000000, Expected: 0b0000000000000000000000000000000000000000000000010000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000001000000000000000, Expected: 0b0000000000000000000000000000000000000000000000001000000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000100000000000000, Expected: 0b0000000000000000000000000000000000000000000000000100000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000010000000000000, Expected: 0b0000000000000000000000000000000000000000000000000010000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000001000000000000, Expected: 0b0000000000000000000000000000000000000000000000000001000000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000100000000000, Expected: 0b0000000000000000000000000000000000000000000000000000100000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000010000000000, Expected: 0b0000000000000000000000000000000000000000000000000000010000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000001000000000, Expected: 0b0000000000000000000000000000000000000000000000000000001000000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000100000000, Expected: 0b0000000000000000000000000000000000000000000000000000000100000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000010000000, Expected: 0b0000000000000000000000000000000000000000000000000000000010000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000001000000, Expected: 0b0000000000000000000000000000000000000000000000000000000001000000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000100000, Expected: 0b0000000000000000000000000000000000000000000000000000000000100000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000010000, Expected: 0b0000000000000000000000000000000000000000000000000000000000010000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000001000, Expected: 0b0000000000000000000000000000000000000000000000000000000000001000, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000000100, Expected: 0b0000000000000000000000000000000000000000000000000000000000000100, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000000010, Expected: 0b0000000000000000000000000000000000000000000000000000000000000010, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v Second: 0b0000000000000000000000000000000000000000000000000000000000000001, Expected: 0b0000000000000000000000000000000000000000000000000000000000000001, }, { // v v First: 0b0000000000000000000000000100000000000000000000000000000000000001, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0100000000000000000000000000000000000001000000000000000000000000, // ^ ^ }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, // v v Second: 0b0100000000000000000000001000000000000000000000000000000000000000, Expected: 0b0000000000000000000000000000000000000000000000000000000000000000, }, { // v v First: 0b0000000000000000000000000100000000000000000000000000000000000001, // v v Second: 0b0000000000000000000000000000000000000000100000000000000000000001, Expected: 0b0100000000000000000000000000000000000001100000000000000000000001, // ^ ^^ ^ }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111011111111111111111111111, Expected: 0b0000000000000000000000000000000000000000011111111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111101111111111111111111111, Expected: 0b0000000000000000000000000000000000000000101111111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111110111111111111111111111, Expected: 0b0000000000000000000000000000000000000000110111111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111011111111111111111111, Expected: 0b0000000000000000000000000000000000000000111011111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111101111111111111111111, Expected: 0b0000000000000000000000000000000000000000111101111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111110111111111111111111, Expected: 0b0000000000000000000000000000000000000000111110111111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111011111111111111111, Expected: 0b0000000000000000000000000000000000000000111111011111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111101111111111111111, Expected: 0b0000000000000000000000000000000000000000111111101111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111110111111111111111, Expected: 0b0000000000000000000000000000000000000000111111110111111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111011111111111111, Expected: 0b0000000000000000000000000000000000000000111111111011111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111101111111111111, Expected: 0b0000000000000000000000000000000000000000111111111101111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111110111111111111, Expected: 0b0000000000000000000000000000000000000000111111111110111111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111011111111111, Expected: 0b0000000000000000000000000000000000000000111111111111011111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111101111111111, Expected: 0b0000000000000000000000000000000000000000111111111111101111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111110111111111, Expected: 0b0000000000000000000000000000000000000000111111111111110111111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111011111111, Expected: 0b0000000000000000000000000000000000000000111111111111111011111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111101111111, Expected: 0b0000000000000000000000000000000000000000111111111111111101111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111110111111, Expected: 0b0000000000000000000000000000000000000000111111111111111110111111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111011111, Expected: 0b0000000000000000000000000000000000000000111111111111111111011111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111101111, Expected: 0b0000000000000000000000000000000000000000111111111111111111101111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111110111, Expected: 0b0000000000000000000000000000000000000000111111111111111111110111, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111111011, Expected: 0b0000000000000000000000000000000000000000111111111111111111111011, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111111101, Expected: 0b0000000000000000000000000000000000000000111111111111111111111101, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111111110, Expected: 0b0000000000000000000000000000000000000000111111111111111111111110, }, { First: 0b0000000000000000000000000000000000000000000000000000000000000000, Second: 0b0111111111111111111111111111111111111111111111111111111111111111, Expected: 0b0000000000000000000000000000000000000000111111111111111111111111, }, { First: 0b0000000000000000000000000111111111111111111111111111111111111111, Second: 0b0000000000000000000000000000000000000000000000000000000000000000, Expected: 0b0111111111111111111111111111111111111111000000000000000000000000, }, } for testNumber, test := range tests { var actual uint64 = compile(test.First, test.Second) if expected := test.Expected; expected != actual { t.Errorf("For test #%d, the actual compiled result if not what was expected.", testNumber) t.Logf("FIRST: %064b", test.First) t.Logf("SECOND: %064b", test.Second) t.Logf("EXPECTED: %064b", expected) t.Logf("ACTUAL: %064b", actual) continue } } }