view libinterp/octave-value/ov-uint8.h @ 15696:2fac72a256ce

Add complex erf,erfc,erfcx,erfi,dawson routines from Faddeeva package. * libinterp/corefcn/mappers.cc: Add erfi and dawson mapper functions, and add complex-argument test cases for erf, erfc, erfcx, erfi, and dawson. * libinterp/octave-value/ov-base.cc, libinterp/octave-value/ov-base.h: Add erfi and dawson mapper functions. * libinterp/octave-value/ov-complex.cc, libinterp/octave-value/ov-cx-mat.cc, libinterp/octave-value/ov-cx-sparse.cc, libinterp/octave-value/ov-float.cc, libinterp/octave-value/ov-flt-complex.cc, libinterp/octave-value/ov-flt-cx-mat.cc, libinterp/octave-value/ov-flt-re-mat.cc, libinterp/octave-value/ov-re-mat.c, libinterp/octave-value/ov-re-sparse.cc, libinterp/octave-value/ov-scalar.cc, libinterp/octave-value/ov.h: Support erf, erfc, erfcx, erfi, and dawson mapper functions for real and complex matrices and scalars. * liboctave/cruft/Faddeeva/Faddeeva.cc, liboctave/cruft/Faddeeva/Faddeeva.hh: liboctave/cruft/Faddeeva/module.mk, liboctave/cruft/Makefile.am: Add Faddeeva package (from http://ab-initio.mit.edu/Faddeeva) to libcruft, to provide the various complex-argument error functions. * liboctave/numeric/lo-specfun.cc, liboctave/numeric/lo-specfun.h: Add complex-argument erf, erfc, erfcx, erfi, and dawson functions to liboctave API. Delete previous real-argument erfcx implementation in favor of Faddeeva::erfcx (which seems to be slightly faster in gcc/x86-64 benchmarks, with similar accuracy). * doc/interpreter/arith.txi: Include erfi and dawson documentation.
author Steven G. Johnson <stevenj@alum.mit.edu>
date Tue, 27 Nov 2012 23:39:54 -0500
parents 2fc554ffbc28
children
line wrap: on
line source

/*

Copyright (C) 2004-2012 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_uint8_h)
#define octave_uint8_h 1

#define OCTAVE_INT_T octave_uint8

#define OCTAVE_VALUE_INT_MATRIX_T octave_uint8_matrix
#define OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION uint8_array_value

#define OCTAVE_VALUE_INT_SCALAR_T octave_uint8_scalar
#define OCTAVE_VALUE_INT_SCALAR_EXTRACTOR_FUNCTION uint8_scalar_value

#define OCTAVE_TYPE_PREDICATE_FUNCTION is_uint8_type

#define OCTAVE_INT_MX_CLASS mxUINT8_CLASS

#define OCTAVE_INT_BTYP btyp_uint8

#include "ov-intx.h"

#undef OCTAVE_INT_T

#undef OCTAVE_VALUE_INT_MATRIX_T
#undef OCTAVE_VALUE_INT_NDARRAY_EXTRACTOR_FUNCTION

#undef OCTAVE_VALUE_INT_SCALAR_T
#undef OCTAVE_VALUE_INT_SCALAR_EXTRACTOR_FUNCTION

#undef OCTAVE_TYPE_PREDICATE_FUNCTION

#undef OCTAVE_INT_MX_CLASS

#undef OCTAVE_INT_BTYP

#endif