• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List

mat2.cc

00001 // Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE)
00002 //
00003 // This file is part of Olena.
00004 //
00005 // Olena is free software: you can redistribute it and/or modify it under
00006 // the terms of the GNU General Public License as published by the Free
00007 // Software Foundation, version 2 of the License.
00008 //
00009 // Olena is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License
00015 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 // As a special exception, you may use this file as part of a free
00018 // software project without restriction.  Specifically, if other files
00019 // instantiate templates or use macros or inline functions from this
00020 // file, or you compile this file and link it with other files to produce
00021 // an executable, this file does not by itself cause the resulting
00022 // executable to be covered by the GNU General Public License.  This
00023 // exception does not however invalidate any other reasons why the
00024 // executable file might be covered by the GNU General Public License.
00025 
00026 #include <mln/algebra/mat.hh>
00027 #include <mln/value/int_u8.hh>
00028 
00029 
00030 int main()
00031 {
00032   using namespace mln;
00033 
00034   // FIXME: A test should not print!
00035 
00036   //   const int
00037   //     tab1[18] = {3, 6, 5, 2, 4, 8,
00038   //            5, 7, 4, 6, 9, 2,
00039   //            2, 7, 1, 1, 5, 3},
00040   //     tab2[6]  = {2, 5, 1, 0, 7, 2},
00041   //     tab3[6]  = {3, 1, 6, 2, 1, 0};
00042 
00043   //   algebra::mat<3,6,int> mat36   = make::mat<3,6,18>(tab1);
00044   //   algebra::mat<2,3,int> mat23_1 = make::mat<2,3,6>(tab2);
00045   //   algebra::mat<2,3,int> mat23_2 = make::mat<2,3,6>(tab3);
00046 
00047   //   algebra::mat<2,3,float> mat23_3 = mat23_1 - mat23_2;
00048 
00049   //   std::cout << mat23_3 << std::endl << mat23_3 * mat36 << std::endl;
00050 
00051   using algebra::vec;
00052   vec<2,int> v = make::vec(5,1);
00053 
00054   using algebra::mat;
00055   mat<2,2, vec<2,int> > mv;
00056   mv.set_all(v);
00057   // std::cout << mv << std::endl;
00058 
00059   {
00060     mat<2,2,float> tmp = mv * mv;
00061     // std::cout << tmp << std::endl;
00062     tmp(0,0) = 0;
00063   }
00064   {
00065     vec<2, vec<2,float> > tmp = mv * v;
00066     // std::cout << (mv * v) << std::endl;
00067     tmp[0] = v;
00068   }
00069   {
00070     mat<2,2,float> tmp = value::scalar(v) * mv;
00071     // std::cout << (value::scalar(v) * mv) << std::endl;
00072     tmp(0,0) = 0;
00073   }
00074   {
00075     vec<2, mat<2,2, vec<2,float> > > tmp = v * value::scalar(mv);
00076     // std::cout << (v * value::scalar(mv)) << std::endl;
00077     tmp[0](0,0) = v;
00078   }
00079   {
00080     value::int_u8 i = 0;
00081     mat<2,2, vec<2,int> > tmp = mv * i;
00082     // std::cout << mv * i << std::endl;
00083     tmp(0,0) = v;
00084   }
00085 
00086 }

Generated on Tue Oct 4 2011 15:24:03 for Milena (Olena) by  doxygen 1.7.1