This idea assumes that we already have expression templates implemented via Boost.YAP.
Let's assume user writes following snippets of code using our expression template BLAS library :
Tensor a = {{1,1}, {1,1}, {1,1}};
#include <unistd.h> | |
#include <stdio.h> | |
#include <sys/socket.h> | |
#include <stdlib.h> | |
#include <sys/wait.h> | |
#include <sys/types.h> | |
#include <netinet/in.h> | |
#include <string.h> | |
#define PORT 12345 //Our Server will listen on this port |
#include <stdio.h> | |
#include <sys/socket.h> | |
#include <stdlib.h> | |
#include <netinet/in.h> | |
#include <string.h> | |
#define PORT 12345 | |
#define IP_ADDR_SERVER "192.168.43.51" //YOU MAY NEED TO CHANGE THIS ADDRESS | |
int main(){ | |
struct sockaddr_in address; |
#include <iostream> | |
#define Its int | |
#define most main | |
#define readable ( | |
#define And ) | |
#define deep { | |
#define cplusplus i | |
#define code =0 | |
#define Why for |
#include <sys/types.h> | |
#include <sys/stat.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <fcntl.h> | |
#include <errno.h> | |
#include <unistd.h> | |
#include <syslog.h> | |
#include <string.h> | |
#include <sys/inotify.h> |
#include <boost/yap/expression.hpp> | |
#include <algorithm> | |
#include <cassert> | |
#include <iostream> | |
#include <vector> | |
// TAKEN FROM BOOST.YAP EXAMPLES, BUT MODIFIED BY CODER3101 | |
/* |
struct apply_distributive_law { | |
constexpr apply_distributive_law() = default; | |
template <class Expr1, class Expr2> | |
constexpr decltype(auto) | |
operator()(boost::yap::expr_tag<boost::yap::expr_kind::plus>, Expr1 &&e1, | |
Expr2 &&e2) { | |
// We check if the left and right operands of + is a multiply expression. | |
// This returns true if expression is of form of multiply of ublas operands. |
#include <algorithm> | |
#include <iostream> | |
#include <type_traits> | |
#include <vector> | |
template <class T> | |
class LinkedList { | |
private: | |
struct Node { | |
Node(T v) : val(v) { |