#pragma once#include<cstddef>#include<stdexcept>#include<vector>namespacegraduate{// Exercise G06.06. Preserve the signatures; implement validation and both methods.inlinevoidvalidate(conststd::vector<double>&,conststd::vector<double>&,std::size_t,std::size_t,std::size_t){throwstd::logic_error("Implement dimension and finite-input checks");}inlinevoidcheck_result(conststd::vector<double>&){throwstd::logic_error("Implement finite-result checks");}inlinestd::vector<double>naive(conststd::vector<double>&,conststd::vector<double>&,std::size_t,std::size_t,std::size_t){throwstd::logic_error("Implement the direct reference method");}inlinestd::vector<double>blocked(conststd::vector<double>&,conststd::vector<double>&,std::size_t,std::size_t,std::size_t,std::size_t=24){throwstd::logic_error("Implement the bounded blocked method");}}