00001 /* 00002 00003 Copyright (C) 1994-2012 John W. Eaton 00004 00005 This file is part of Octave. 00006 00007 Octave is free software; you can redistribute it and/or modify it 00008 under the terms of the GNU General Public License as published by the 00009 Free Software Foundation; either version 3 of the License, or (at your 00010 option) any later version. 00011 00012 Octave is distributed in the hope that it will be useful, but WITHOUT 00013 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00015 for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with Octave; see the file COPYING. If not, see 00019 <http://www.gnu.org/licenses/>. 00020 00021 */ 00022 00023 #if !defined (octave_mx_defs_h) 00024 #define octave_mx_defs_h 1 00025 00026 // Classes we declare. 00027 00028 class Matrix; 00029 class ComplexMatrix; 00030 class FloatMatrix; 00031 class FloatComplexMatrix; 00032 class boolMatrix; 00033 class charMatrix; 00034 00035 class NDArray; 00036 class ComplexNDArray; 00037 class FloatNDArray; 00038 class FloatComplexNDArray; 00039 class boolNDArray; 00040 class charNDArray; 00041 00042 class ColumnVector; 00043 class ComplexColumnVector; 00044 class FloatColumnVector; 00045 class FloatComplexColumnVector; 00046 00047 class RowVector; 00048 class ComplexRowVector; 00049 class FloatRowVector; 00050 class FloatComplexRowVector; 00051 00052 class DiagMatrix; 00053 class ComplexDiagMatrix; 00054 class FloatDiagMatrix; 00055 class FloatComplexDiagMatrix; 00056 00057 class PermMatrix; 00058 00059 class AEPBALANCE; 00060 class ComplexAEPBALANCE; 00061 class FloatAEPBALANCE; 00062 class FloatComplexAEPBALANCE; 00063 00064 class GEPBALANCE; 00065 class ComplexGEPBALANCE; 00066 class FloatGEPBALANCE; 00067 class FloatComplexGEPBALANCE; 00068 00069 class CHOL; 00070 class ComplexCHOL; 00071 class FloatCHOL; 00072 class FloatComplexCHOL; 00073 00074 class EIG; 00075 00076 class HESS; 00077 class ComplexHESS; 00078 class FloatHESS; 00079 class FloatComplexHESS; 00080 00081 class SCHUR; 00082 class ComplexSCHUR; 00083 class FloatSCHUR; 00084 class FloatComplexSCHUR; 00085 00086 class SVD; 00087 class ComplexSVD; 00088 class FloatSVD; 00089 class FloatComplexSVD; 00090 00091 class LU; 00092 class ComplexLU; 00093 class FloatLU; 00094 class FloatComplexLU; 00095 00096 class QR; 00097 class ComplexQR; 00098 class FloatQR; 00099 class FloatComplexQR; 00100 00101 class QRP; 00102 class ComplexQRP; 00103 class FloatQRP; 00104 class FloatComplexQRP; 00105 00106 // Other data types we use but that don't always need to have full 00107 // declarations. 00108 00109 #include "oct-cmplx.h" 00110 00111 #ifndef MAPPER_FCN_TYPEDEFS 00112 #define MAPPER_FCN_TYPEDEFS 1 00113 00114 typedef bool (*b_d_Mapper)(double); 00115 typedef bool (*b_c_Mapper)(const Complex&); 00116 00117 typedef double (*d_d_Mapper)(double); 00118 typedef double (*d_c_Mapper)(const Complex&); 00119 typedef Complex (*c_c_Mapper)(const Complex&); 00120 00121 typedef bool (*b_f_Mapper)(float); 00122 typedef bool (*b_fc_Mapper)(const FloatComplex&); 00123 00124 typedef float (*f_f_Mapper)(float); 00125 typedef float (*f_fc_Mapper)(const FloatComplex&); 00126 typedef FloatComplex (*fc_fc_Mapper)(const FloatComplex&); 00127 00128 enum blas_trans_type 00129 { 00130 blas_no_trans = 'N', 00131 blas_trans = 'T', 00132 blas_conj_trans = 'C' 00133 }; 00134 00135 inline char 00136 get_blas_char (blas_trans_type transt) 00137 { 00138 return static_cast<char> (transt); 00139 } 00140 00141 00142 #endif 00143 00144 #endif