# HG changeset patch # User Jaroslav Hajek # Date 1205869050 -3600 # Node ID 9f073550af50404303aedd866dcacb9bdb585b23 # Parent bf704d1c5e4375253408bbb855f99138cee2bb5c implement expm1 and log1p functions diff -r bf704d1c5e43 -r 9f073550af50 ChangeLog --- a/ChangeLog Fri Mar 14 08:00:50 2008 -0400 +++ b/ChangeLog Tue Mar 18 20:37:30 2008 +0100 @@ -1,3 +1,7 @@ 2008-03-11 David Bateman + + * configure.in: add check for expm1 and log1p functions + 2008-03-11 David Bateman * run-octave.in: Fix typo. diff -r bf704d1c5e43 -r 9f073550af50 configure.in --- a/configure.in Fri Mar 14 08:00:50 2008 -0400 +++ b/configure.in Tue Mar 18 20:37:30 2008 +0100 @@ -1295,10 +1295,10 @@ fi ### Checks for functions and variables. AC_CHECK_FUNCS(atexit basename bcopy bzero canonicalize_file_name chmod \ - dup2 endgrent endpwent execvp fcntl fork getcwd getegid geteuid \ + dup2 endgrent endpwent execvp expm1 fcntl fork getcwd getegid geteuid \ getgid getgrent getgrgid getgrnam getpgrp getpid getppid getpwent \ getpwuid gettimeofday getuid getwd _kbhit kill lgamma link localtime_r \ - lstat memmove mkdir mkfifo mkstemp on_exit pipe poll putenv raise \ + log1p lstat memmove mkdir mkfifo mkstemp on_exit pipe poll putenv raise \ readlink realpath rename resolvepath rindex rmdir round select setgrent \ setlocale setpwent setvbuf sigaction siglongjmp sigpending sigprocmask \ sigsuspend snprintf stat strcasecmp strdup strerror stricmp \ diff -r bf704d1c5e43 -r 9f073550af50 liboctave/ChangeLog --- a/liboctave/ChangeLog Fri Mar 14 08:00:50 2008 -0400 +++ b/liboctave/ChangeLog Tue Mar 18 20:37:30 2008 +0100 @@ -1,3 +1,8 @@ 2008-03-08 John W. Eaton + + * lo-specfun.h lo-specfun.cc: add expm1 and log1p functions (if not in + standard math) + 2008-03-08 John W. Eaton * Sparse.cc (Sparse::index, assign): Likewise. diff -r bf704d1c5e43 -r 9f073550af50 liboctave/lo-specfun.cc --- a/liboctave/lo-specfun.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/liboctave/lo-specfun.cc Tue Mar 18 20:37:30 2008 +0100 @@ -196,6 +196,80 @@ xlgamma (double x) #endif } +#if !defined (HAVE_EXPM1) +double +expm1 (double x) +{ + double ax = fabs (x); + if (ax < 0.1) + { + ax /= 16; + // use Taylor series to calculate exp(x)-1. + double t = ax, s = 0; + for (int i = 2; i < 7; i++) + s += (t *= ax/i); + s += ax; + // use the identity (a+1)^2-1 = a*(a+2) + double e = s; + for (int i = 0; i < 4; i++) + { + s *= e + 2; + e *= e + 2; + } + return (x > 0) ? s : -s / (1+s); + } + else + return + exp (x) - 1; +} +#endif + +Complex +expm1(const Complex& x) +{ + if (std:: abs (x) < 1) + { + double im = x.imag(); + double u = expm1 (x.real()), v = sin (im/2); + v = -2*v*v; + return Complex (u*v + u + v, (u+1) * sin (im)); + } + else + return std::exp (x) - Complex(1); +} + +#if !defined (HAVE_LOG1P) +double +log1p (double x) +{ + double ax = fabs (x); + if (ax < 0.2) + { + // use approximation log (1+x) ~ 2*sum ((x/(2+x)).^ii ./ ii), ii = 1:2:2n+1 + double u = x / (2 + x), t = 1, s = 0; + for (int i = 2; i < 12; i += 2) + s += (t *= u*u) / (i+1); + return 2 * (s + 1) * u; + } + else + return log (1 + x); +} +#endif + +Complex +log1p (const Complex& x) +{ + double r = x.real (), i = x.imag(); + if (fabs (r) < 0.5 && fabs (i) < 0.5) + { + double u = 2*r + r*r + i*i; + return Complex (log1p (u / (1+sqrt (u+1))), + atan2 (1 + r, i)); + } + else + return std::log (Complex(1) + x); +} + static inline Complex zbesj (const Complex& z, double alpha, int kode, octave_idx_type& ierr); diff -r bf704d1c5e43 -r 9f073550af50 liboctave/lo-specfun.h --- a/liboctave/lo-specfun.h Fri Mar 14 08:00:50 2008 -0400 +++ b/liboctave/lo-specfun.h Tue Mar 18 20:37:30 2008 +0100 @@ -57,6 +57,16 @@ extern OCTAVE_API double erfc (double); extern OCTAVE_API double erfc (double); #endif +#if !defined (HAVE_EXPM1) +extern OCTAVE_API double expm1 (double x); +#endif +extern OCTAVE_API Complex expm1 (const Complex& x); + +#if !defined (HAVE_LOG1P) +extern OCTAVE_API double log1p (double x); +#endif +extern OCTAVE_API Complex log1p (const Complex& x); + extern OCTAVE_API double xgamma (double x); extern OCTAVE_API double xlgamma (double x); diff -r bf704d1c5e43 -r 9f073550af50 src/ChangeLog --- a/src/ChangeLog Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ChangeLog Tue Mar 18 20:37:30 2008 +0100 @@ -1,3 +1,11 @@ 2008-03-13 John W. Eaton + * mappers.cc: add expm1 and log1p mapper functions. + * ov-base.cc, ov-base.h, ov-bool-mat.h, ov-bool-sparse.h, ov-bool.h, + ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, + ov-cx-sparse.h, ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, + ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov.h: add support for expm1 + and log1p mappers. + 2008-03-13 John W. Eaton * ov-usr-fcn.cc (octave_user_function::octave_user_function): diff -r bf704d1c5e43 -r 9f073550af50 src/mappers.cc --- a/src/mappers.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/mappers.cc Tue Mar 18 20:37:30 2008 +0100 @@ -363,6 +363,21 @@ see @ref{Linear Algebra}.\n\ return retval; } +DEFUN (expm1, args, , + "-*- texinfo -*-\n\ address@hidden {Mapping Function} {} expm1 (@var{x})\n\ +Compute exp (@var{x}) - 1 accurately in neighbourhood of zero.\n\ address@hidden deftypefn") +{ + octave_value retval; + if (args.length () == 1) + retval = args(0).expm1 (); + else + print_usage (); + + return retval; +} + DEFUN (finite, args, , "-*- texinfo -*-\n\ @deftypefn {Mapping Function} {} finite (@var{x})\n\ @@ -772,6 +787,21 @@ Compute the base-10 logarithm for each e return retval; } +DEFUN (log1p, args, , + "-*- texinfo -*-\n\ address@hidden {Mapping Function} {} log1p (@var{x})\n\ +Compute log (1 + @var{x}) accurately in neighbourhood of zero.\n\ address@hidden deftypefn") +{ + octave_value retval; + if (args.length () == 1) + retval = args(0).log1p (); + else + print_usage (); + + return retval; +} + DEFUN (real, args, , "-*- texinfo -*-\n\ @deftypefn {Mapping Function} {} real (@var{z})\n\ diff -r bf704d1c5e43 -r 9f073550af50 src/ov-base.cc --- a/src/ov-base.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-base.cc Tue Mar 18 20:37:30 2008 +0100 @@ -919,6 +919,7 @@ UNDEFINED_MAPPER (erf) UNDEFINED_MAPPER (erf) UNDEFINED_MAPPER (erfc) UNDEFINED_MAPPER (exp) +UNDEFINED_MAPPER (expm1) UNDEFINED_MAPPER (finite) UNDEFINED_MAPPER (fix) UNDEFINED_MAPPER (floor) @@ -930,6 +931,7 @@ UNDEFINED_MAPPER (lgamma) UNDEFINED_MAPPER (lgamma) UNDEFINED_MAPPER (log) UNDEFINED_MAPPER (log10) +UNDEFINED_MAPPER (log1p) UNDEFINED_MAPPER (real) UNDEFINED_MAPPER (round) UNDEFINED_MAPPER (signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-base.h --- a/src/ov-base.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-base.h Tue Mar 18 20:37:30 2008 +0100 @@ -486,6 +486,7 @@ public: virtual octave_value erf (void) const; virtual octave_value erfc (void) const; virtual octave_value exp (void) const; + virtual octave_value expm1 (void) const; virtual octave_value finite (void) const; virtual octave_value fix (void) const; virtual octave_value floor (void) const; @@ -497,6 +498,7 @@ public: virtual octave_value lgamma (void) const; virtual octave_value log (void) const; virtual octave_value log10 (void) const; + virtual octave_value log1p (void) const; virtual octave_value real (void) const; virtual octave_value round (void) const; virtual octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-bool-mat.h --- a/src/ov-bool-mat.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-bool-mat.h Tue Mar 18 20:37:30 2008 +0100 @@ -208,6 +208,7 @@ public: BOOL_MAT_MAPPER (erf) BOOL_MAT_MAPPER (erfc) BOOL_MAT_MAPPER (exp) + BOOL_MAT_MAPPER (expm1) BOOL_MAT_MAPPER (finite) BOOL_MAT_MAPPER (fix) BOOL_MAT_MAPPER (floor) @@ -219,6 +220,7 @@ public: BOOL_MAT_MAPPER (lgamma) BOOL_MAT_MAPPER (log) BOOL_MAT_MAPPER (log10) + BOOL_MAT_MAPPER (log1p) BOOL_MAT_MAPPER (real) BOOL_MAT_MAPPER (round) BOOL_MAT_MAPPER (signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-bool-sparse.h --- a/src/ov-bool-sparse.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-bool-sparse.h Tue Mar 18 20:37:30 2008 +0100 @@ -164,6 +164,7 @@ public: BOOL_SPARSE_MAPPER (erf) BOOL_SPARSE_MAPPER (erfc) BOOL_SPARSE_MAPPER (exp) + BOOL_SPARSE_MAPPER (expm1) BOOL_SPARSE_MAPPER (finite) BOOL_SPARSE_MAPPER (fix) BOOL_SPARSE_MAPPER (floor) @@ -175,6 +176,7 @@ public: BOOL_SPARSE_MAPPER (lgamma) BOOL_SPARSE_MAPPER (log) BOOL_SPARSE_MAPPER (log10) + BOOL_SPARSE_MAPPER (log1p) BOOL_SPARSE_MAPPER (real) BOOL_SPARSE_MAPPER (round) BOOL_SPARSE_MAPPER (signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-bool.h --- a/src/ov-bool.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-bool.h Tue Mar 18 20:37:30 2008 +0100 @@ -216,6 +216,7 @@ public: BOOL_MAPPER (erf) BOOL_MAPPER (erfc) BOOL_MAPPER (exp) + BOOL_MAPPER (expm1) BOOL_MAPPER (finite) BOOL_MAPPER (fix) BOOL_MAPPER (floor) @@ -227,6 +228,7 @@ public: BOOL_MAPPER (lgamma) BOOL_MAPPER (log) BOOL_MAPPER (log10) + BOOL_MAPPER (log1p) BOOL_MAPPER (real) BOOL_MAPPER (round) BOOL_MAPPER (signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-complex.cc --- a/src/ov-complex.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-complex.cc Tue Mar 18 20:37:30 2008 +0100 @@ -372,11 +372,13 @@ COMPLEX_MAPPER (cos, std::cos) COMPLEX_MAPPER (cos, std::cos) COMPLEX_MAPPER (cosh, std::cosh) COMPLEX_MAPPER (exp, std::exp) +COMPLEX_MAPPER (expm1, ::expm1) COMPLEX_MAPPER (fix, ::fix) COMPLEX_MAPPER (floor, ::floor) COMPLEX_MAPPER (imag, ximag) COMPLEX_MAPPER (log, std::log) COMPLEX_MAPPER (log10, std::log10) +COMPLEX_MAPPER (log1p, ::log1p) COMPLEX_MAPPER (real, xreal) COMPLEX_MAPPER (round, xround) COMPLEX_MAPPER (signum, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-complex.h --- a/src/ov-complex.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-complex.h Tue Mar 18 20:37:30 2008 +0100 @@ -164,11 +164,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-cx-mat.cc --- a/src/ov-cx-mat.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-cx-mat.cc Tue Mar 18 20:37:30 2008 +0100 @@ -692,11 +692,13 @@ ARRAY_MAPPER (cos, ComplexNDArray::cmapp ARRAY_MAPPER (cos, ComplexNDArray::cmapper, std::cos) ARRAY_MAPPER (cosh, ComplexNDArray::cmapper, std::cosh) ARRAY_MAPPER (exp, ComplexNDArray::cmapper, std::exp) +ARRAY_MAPPER (expm1, ComplexNDArray::cmapper, ::expm1) ARRAY_MAPPER (fix, ComplexNDArray::cmapper, ::fix) ARRAY_MAPPER (floor, ComplexNDArray::cmapper, ::floor) ARRAY_MAPPER (imag, ComplexNDArray::dmapper, ximag) ARRAY_MAPPER (log, ComplexNDArray::cmapper, std::log) ARRAY_MAPPER (log10, ComplexNDArray::cmapper, std::log10) +ARRAY_MAPPER (log1p, ComplexNDArray::cmapper, ::log1p) ARRAY_MAPPER (real, ComplexNDArray::dmapper, xreal) ARRAY_MAPPER (round, ComplexNDArray::cmapper, xround) ARRAY_MAPPER (signum, ComplexNDArray::cmapper, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-cx-mat.h --- a/src/ov-cx-mat.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-cx-mat.h Tue Mar 18 20:37:30 2008 +0100 @@ -167,11 +167,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-cx-sparse.cc --- a/src/ov-cx-sparse.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-cx-sparse.cc Tue Mar 18 20:37:30 2008 +0100 @@ -861,11 +861,13 @@ SPARSE_MAPPER (cos, SparseComplexMatrix: SPARSE_MAPPER (cos, SparseComplexMatrix::cmapper, std::cos) SPARSE_MAPPER (cosh, SparseComplexMatrix::cmapper, std::cosh) SPARSE_MAPPER (exp, SparseComplexMatrix::cmapper, std::exp) +SPARSE_MAPPER (expm1, SparseComplexMatrix::cmapper, ::expm1) SPARSE_MAPPER (fix, SparseComplexMatrix::cmapper, ::fix) SPARSE_MAPPER (floor, SparseComplexMatrix::cmapper, ::floor) SPARSE_MAPPER (imag, SparseComplexMatrix::dmapper, ximag) SPARSE_MAPPER (log, SparseComplexMatrix::cmapper, std::log) SPARSE_MAPPER (log10, SparseComplexMatrix::cmapper, std::log10) +SPARSE_MAPPER (log1p, SparseComplexMatrix::cmapper, ::log1p) SPARSE_MAPPER (real, SparseComplexMatrix::dmapper, xreal) SPARSE_MAPPER (round, SparseComplexMatrix::cmapper, xround) SPARSE_MAPPER (signum, SparseComplexMatrix::cmapper, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-cx-sparse.h --- a/src/ov-cx-sparse.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-cx-sparse.h Tue Mar 18 20:37:30 2008 +0100 @@ -166,11 +166,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-range.h --- a/src/ov-range.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-range.h Tue Mar 18 20:37:30 2008 +0100 @@ -288,6 +288,7 @@ public: RANGE_MAPPER (erf) RANGE_MAPPER (erfc) RANGE_MAPPER (exp) + RANGE_MAPPER (expm1) RANGE_MAPPER (finite) RANGE_MAPPER (fix) RANGE_MAPPER (floor) @@ -299,6 +300,7 @@ public: RANGE_MAPPER (lgamma) RANGE_MAPPER (log) RANGE_MAPPER (log10) + RANGE_MAPPER (log1p) RANGE_MAPPER (real) RANGE_MAPPER (round) RANGE_MAPPER (signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-re-mat.cc --- a/src/ov-re-mat.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-re-mat.cc Tue Mar 18 20:37:30 2008 +0100 @@ -730,11 +730,13 @@ ARRAY_MAPPER (cos, NDArray::dmapper, ::c ARRAY_MAPPER (cos, NDArray::dmapper, ::cos) ARRAY_MAPPER (cosh, NDArray::dmapper, ::cosh) ARRAY_MAPPER (exp, NDArray::dmapper, ::exp) +ARRAY_MAPPER (expm1, NDArray::dmapper, ::expm1) ARRAY_MAPPER (fix, NDArray::dmapper, ::fix) ARRAY_MAPPER (floor, NDArray::dmapper, ::floor) ARRAY_MAPPER (imag, NDArray::dmapper, ::imag) CD_ARRAY_MAPPER (log, ::log, std::log, 0.0, octave_Inf) CD_ARRAY_MAPPER (log10, ::log10, std::log10, 0.0, octave_Inf) +CD_ARRAY_MAPPER (log1p, ::log1p, ::log1p, -1.0, octave_Inf) ARRAY_MAPPER (real, NDArray::dmapper, ::real) ARRAY_MAPPER (round, NDArray::dmapper, xround) ARRAY_MAPPER (signum, NDArray::dmapper, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-re-mat.h --- a/src/ov-re-mat.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-re-mat.h Tue Mar 18 20:37:30 2008 +0100 @@ -198,11 +198,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-re-sparse.cc --- a/src/ov-re-sparse.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-re-sparse.cc Tue Mar 18 20:37:30 2008 +0100 @@ -920,11 +920,13 @@ SPARSE_MAPPER (cos, SparseMatrix::dmappe SPARSE_MAPPER (cos, SparseMatrix::dmapper, ::cos) SPARSE_MAPPER (cosh, SparseMatrix::dmapper, ::cosh) SPARSE_MAPPER (exp, SparseMatrix::dmapper, ::exp) +SPARSE_MAPPER (expm1, SparseMatrix::dmapper, ::expm1) SPARSE_MAPPER (fix, SparseMatrix::dmapper, ::fix) SPARSE_MAPPER (floor, SparseMatrix::dmapper, ::floor) SPARSE_MAPPER (imag, SparseMatrix::dmapper, ::imag) CD_SPARSE_MAPPER (log, ::log, std::log, 0.0, octave_Inf) CD_SPARSE_MAPPER (log10, ::log10, std::log10, 0.0, octave_Inf) +CD_SPARSE_MAPPER (log1p, ::log1p, ::log1p, 0.0, octave_Inf) SPARSE_MAPPER (real, SparseMatrix::dmapper, ::real) SPARSE_MAPPER (round, SparseMatrix::dmapper, xround) SPARSE_MAPPER (signum, SparseMatrix::dmapper, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-re-sparse.h --- a/src/ov-re-sparse.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-re-sparse.h Tue Mar 18 20:37:30 2008 +0100 @@ -171,11 +171,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov-scalar.cc --- a/src/ov-scalar.cc Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-scalar.cc Tue Mar 18 20:37:30 2008 +0100 @@ -325,11 +325,13 @@ SCALAR_MAPPER (cos, ::cos) SCALAR_MAPPER (cos, ::cos) SCALAR_MAPPER (cosh, ::cosh) SCALAR_MAPPER (exp, ::exp) +SCALAR_MAPPER (expm1, ::expm1) SCALAR_MAPPER (fix, ::fix) SCALAR_MAPPER (floor, ::floor) SCALAR_MAPPER (imag, ::imag) CD_SCALAR_MAPPER (log, ::log, std::log, 0.0, octave_Inf) CD_SCALAR_MAPPER (log10, ::log10, std::log10, 0.0, octave_Inf) +CD_SCALAR_MAPPER (log1p, ::log1p, ::log1p, -1.0, octave_Inf) SCALAR_MAPPER (real, ::real) SCALAR_MAPPER (round, xround) SCALAR_MAPPER (signum, ::signum) diff -r bf704d1c5e43 -r 9f073550af50 src/ov-scalar.h --- a/src/ov-scalar.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov-scalar.h Tue Mar 18 20:37:30 2008 +0100 @@ -239,11 +239,13 @@ public: octave_value cos (void) const; octave_value cosh (void) const; octave_value exp (void) const; + octave_value expm1 (void) const; octave_value fix (void) const; octave_value floor (void) const; octave_value imag (void) const; octave_value log (void) const; octave_value log10 (void) const; + octave_value log1p (void) const; octave_value real (void) const; octave_value round (void) const; octave_value signum (void) const; diff -r bf704d1c5e43 -r 9f073550af50 src/ov.h --- a/src/ov.h Fri Mar 14 08:00:50 2008 -0400 +++ b/src/ov.h Tue Mar 18 20:37:30 2008 +0100 @@ -899,6 +899,7 @@ public: MAPPER_FORWARD (erf) MAPPER_FORWARD (erfc) MAPPER_FORWARD (exp) + MAPPER_FORWARD (expm1) MAPPER_FORWARD (finite) MAPPER_FORWARD (fix) MAPPER_FORWARD (floor) @@ -910,6 +911,7 @@ public: MAPPER_FORWARD (lgamma) MAPPER_FORWARD (log) MAPPER_FORWARD (log10) + MAPPER_FORWARD (log1p) MAPPER_FORWARD (real) MAPPER_FORWARD (round) MAPPER_FORWARD (signum)