// Original CPU teaching model; not a device simulator or benchmark.
#include <iostream>
#include <vector>
#include <stdexcept>

void require(bool ok) { if (!ok) throw std::runtime_error("model check failed"); }

int main() {
 const std::vector<int> a{1,2,3,4},b{10,20,30,40};
 std::vector<int> oracle(4),candidate(4);
 for(std::size_t i=0;i<4;++i) oracle[i]=a[i]+b[i];
 for(std::size_t tile=0;tile<2;++tile) for(std::size_t j=0;j<2;++j) {
  const auto i=tile*2+j; candidate[i]=a[i]+b[i];
 }
 require(candidate==oracle);
 std::cout<<"result=";
 for(std::size_t i=0;i<4;++i) std::cout<<(i?" ":"")<<candidate[i];
 std::cout<<" match=1\n";
}

