source of highlighter
plain | download
    1 template <typename T>
    2 class matrix3x3 {
    3 public:
    4         T x[3][3];
    5 
    6         matrix3x3() {}
    7 
    8         matrix3x3(const T (&_x)[3][3]) {
    9                 int i, j;
   10                 for (i = 0; i < 3; ++i)
   11                         for (j = 0; j < 3; ++j)
   12                                 x[i][j] = _x[i][j];
   13         }
   14 };
   15 
   16 typedef void (*binop)(void *, const void *, const void *);
   17 void tajny_algoritmus(void *, const void *, const void *, long, binop, binop);
   18 
   19 template<typename T>
   20 matrix3x3<T> operator*(const matrix3x3<T> &a, const matrix3x3<T> &b) {
   21         matrix3x3<T> r;
   22 
   23         auto plus = [](void *er, const void *ea, const void *eb) {
   24                 T &ter = * (T *) er;
   25                 const T &tea = * (const T *) ea;
   26                 const T &teb = * (const T *) eb;
   27                 ter = tea + teb;
   28         };
   29 
   30         auto krat = [](void *er, const void *ea, const void *eb) {
   31                 T &ter = * (T *) er;
   32                 const T &tea = * (const T *) ea;
   33                 const T &teb = * (const T *) eb;
   34                 ter = tea * teb;
   35         };
   36 
   37         tajny_algoritmus((void *) &r, (const void *) &a, (const void *) &b, sizeof(T), plus, krat);
   38 
   39         return r;
   40 }