# 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)