/* Copyright (C) 2003 David Bateman This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In addition to the terms of the GPL, you are permitted to link this program with any Open Source program, as defined by the Open Source Initiative (www.opensource.org) */ #include #include #include #include static bool do_isprimitive (const int& a, const int& m) { // Fast return since primitive polynomial can't be even if (!(a & 1)) return false; RowVector repr(1< 24) { error("isprimitive: order of the primitive polynomial must be less than 22"); return retval; } Matrix b(a.rows(),1); for (int i=0; i (1<<(m+1))) m++; b(i,0) = do_isprimitive(tmp, m); } retval = octave_value (b); } else { for (int i=0; i (1<<23)) { error("isprimitive: order of the primitive polynomial must be less than 22"); return retval; } Matrix b(a.rows(),a.columns()); for (int i=0; i (1<<(m+1))) m++; b(i,j) = do_isprimitive((int)a(i,j), m); } } retval = octave_value (b); } return retval; } /* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: *** */