view liboctave/operators/mx-defs.h @ 22236:065a44375723

gsvd: reduce code duplication with templates. * CmplxGSVD.cc, CmplxGSVD.h, dbleGSVD.cc, dbleGSVD.h: Remove files for no longer existing classes. Replaced by gsvd template class. This classes never existed in an Octave release, this was freshly imported from Octave Forge so backwards compatibility is not an issue. * liboctave/numeric/gsvd.h, liboctave/numeric/gsvd.cc: New files for gsvd class template generated from CmplxGSVD.cc, CmplxGSVD.h, dbleGSVD.cc, and dbleGSVD.h and converted to template. Removed unused << operator, unused constructor with &info, and commented code. Only instantiated for Matrix and ComplexMatrix, providing interface to DGGSVD and ZGGSVD. * liboctave/numeric/module.mk: Update. * mx-defs.h, mx-ext.h: Use new classes.
author Barbara Locsi <locsi.barbara@gmail.com>
date Tue, 09 Aug 2016 18:02:11 +0200
parents 63b41167ef1e
children bac0d6f07a3e
line wrap: on
line source

/*

Copyright (C) 1994-2015 John W. Eaton

This file is part of Octave.

Octave 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 3 of the License, or (at your
option) any later version.

Octave 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, see
<http://www.gnu.org/licenses/>.

*/

#if ! defined (octave_mx_defs_h)
#define octave_mx_defs_h 1

#include "octave-config.h"

// Classes we declare.

class Matrix;
class ComplexMatrix;
class FloatMatrix;
class FloatComplexMatrix;
class boolMatrix;
class charMatrix;

class NDArray;
class ComplexNDArray;
class FloatNDArray;
class FloatComplexNDArray;
class boolNDArray;
class charNDArray;

class ColumnVector;
class ComplexColumnVector;
class FloatColumnVector;
class FloatComplexColumnVector;

class RowVector;
class ComplexRowVector;
class FloatRowVector;
class FloatComplexRowVector;

class DiagMatrix;
class ComplexDiagMatrix;
class FloatDiagMatrix;
class FloatComplexDiagMatrix;

class PermMatrix;

template <typename T> class aepbalance;

template <typename T> class gepbalance;

template <typename T> class chol;

class EIG;

template <typename T> class gsvd;

template <typename T> class hess;

template <typename T> class schur;

template <typename T> class svd;

template <typename T> class lu;

template <typename T> class qr;

template <typename T> class qrp;

// Other data types we use but that don't always need to have full
// declarations.

#include "oct-cmplx.h"

#if ! defined (MAPPER_FCN_TYPEDEFS)
#  define MAPPER_FCN_TYPEDEFS 1

typedef bool (*b_d_Mapper)(double);
typedef bool (*b_c_Mapper)(const Complex&);

typedef double (*d_d_Mapper)(double);
typedef double (*d_c_Mapper)(const Complex&);
typedef Complex (*c_c_Mapper)(const Complex&);

typedef bool (*b_f_Mapper)(float);
typedef bool (*b_fc_Mapper)(const FloatComplex&);

typedef float (*f_f_Mapper)(float);
typedef float (*f_fc_Mapper)(const FloatComplex&);
typedef FloatComplex (*fc_fc_Mapper)(const FloatComplex&);

enum blas_trans_type
{
  blas_no_trans = 'N',
  blas_trans = 'T',
  blas_conj_trans = 'C'
};

inline char
get_blas_char (blas_trans_type transt)
{
  return static_cast<char> (transt);
}

#  endif

#endif