diff src/mappers.cc @ 9813:8fa32b527d9a

improve & partially revert previous change
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 13 Nov 2009 11:45:39 +0100
parents f80c566bc751
children 1bb1ed717d2f
line wrap: on
line diff
--- a/src/mappers.cc
+++ b/src/mappers.cc
@@ -35,7 +35,6 @@
 #include "defun.h"
 #include "error.h"
 #include "variables.h"
-#include "gripes.h"
 
 DEFUN (abs, args, ,
     "-*- texinfo -*-\n\
@@ -60,7 +59,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_abs);
+    retval = args(0).abs ();
   else
     print_usage ();
 
@@ -95,7 +94,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_acos);
+    retval = args(0).acos ();
   else
     print_usage ();
 
@@ -132,7 +131,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_acosh);
+    retval = args(0).acosh ();
   else
     print_usage ();
 
@@ -164,7 +163,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_arg);
+    retval = args(0).arg ();
   else
     print_usage ();
 
@@ -196,7 +195,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_arg);
+    retval = args(0).arg ();
   else
     print_usage ();
 
@@ -231,7 +230,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_asin);
+    retval = args(0).asin ();
   else
     print_usage ();
 
@@ -258,7 +257,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_asinh);
+    retval = args(0).asinh ();
   else
     print_usage ();
 
@@ -291,7 +290,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_atan);
+    retval = args(0).atan ();
   else
     print_usage ();
 
@@ -328,7 +327,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_atanh);
+    retval = args(0).atanh ();
   else
     print_usage ();
 
@@ -369,7 +368,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_ceil);
+    retval = args(0).ceil ();
   else
     print_usage ();
 
@@ -410,7 +409,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_conj);
+    retval = args(0).conj ();
   else
     print_usage ();
 
@@ -445,7 +444,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_cos);
+    retval = args(0).cos ();
   else
     print_usage ();
 
@@ -482,7 +481,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_cosh);
+    retval = args(0).cosh ();
   else
     print_usage ();
 
@@ -532,7 +531,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_erf);
+    retval = args(0).erf ();
   else
     print_usage ();
 
@@ -584,7 +583,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_erfc);
+    retval = args(0).erfc ();
   else
     print_usage ();
 
@@ -616,7 +615,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_exp);
+    retval = args(0).exp ();
   else
     print_usage ();
 
@@ -654,7 +653,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_expm1);
+    retval = args(0).expm1 ();
   else
     print_usage ();
 
@@ -677,7 +676,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_finite);
+    retval = args(0).finite ();
   else
     print_usage ();
 
@@ -713,7 +712,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_fix);
+    retval = args(0).fix ();
   else
     print_usage ();
 
@@ -749,7 +748,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_floor);
+    retval = args(0).floor ();
   else
     print_usage ();
 
@@ -794,7 +793,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_gamma);
+    retval = args(0).gamma ();
   else
     print_usage ();
 
@@ -835,7 +834,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_imag);
+    retval = args(0).imag ();
   else
     print_usage ();
 
@@ -868,7 +867,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isalnum);
+    retval = args(0).xisalnum ();
   else
     print_usage ();
 
@@ -885,7 +884,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isalpha);
+    retval = args(0).xisalpha ();
   else
     print_usage ();
 
@@ -900,7 +899,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isascii);
+    retval = args(0).xisascii ();
   else
     print_usage ();
 
@@ -915,7 +914,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_iscntrl);
+    retval = args(0).xiscntrl ();
   else
     print_usage ();
 
@@ -930,7 +929,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isdigit);
+    retval = args(0).xisdigit ();
   else
     print_usage ();
 
@@ -953,7 +952,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isinf);
+    retval = args(0).isinf ();
   else
     print_usage ();
 
@@ -984,7 +983,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isgraph);
+    retval = args(0).xisgraph ();
   else
     print_usage ();
 
@@ -999,7 +998,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_islower);
+    retval = args(0).xislower ();
   else
     print_usage ();
 
@@ -1023,7 +1022,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isna);
+    retval = args(0).isna ();
   else
     print_usage ();
 
@@ -1063,7 +1062,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isnan);
+    retval = args(0).isnan ();
   else
     print_usage ();
 
@@ -1094,7 +1093,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isprint);
+    retval = args(0).xisprint ();
   else
     print_usage ();
 
@@ -1109,7 +1108,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_ispunct);
+    retval = args(0).xispunct ();
   else
     print_usage ();
 
@@ -1125,7 +1124,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isspace);
+    retval = args(0).xisspace ();
   else
     print_usage ();
 
@@ -1140,7 +1139,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isupper);
+    retval = args(0).xisupper ();
   else
     print_usage ();
 
@@ -1155,7 +1154,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_isxdigit);
+    retval = args(0).xisxdigit ();
   else
     print_usage ();
 
@@ -1172,7 +1171,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_lgamma);
+    retval = args(0).lgamma ();
   else
     print_usage ();
 
@@ -1221,7 +1220,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_log);
+    retval = args(0).log ();
   else
     print_usage ();
 
@@ -1241,120 +1240,6 @@
 
  */
 
-template<typename T, typename ET>
-void 
-map_2_xlog2 (const Array<T>& x, Array<T>& f, Array<ET>& e)
-{
-  f = Array<T>(x.dims ());
-  e = Array<ET>(x.dims ());
-  for (octave_idx_type i = 0; i < x.numel (); i++)
-    {
-      int exp;
-      f.xelem (i) = xlog2 (x(i), exp);
-      e.xelem (i) = exp;
-    }
-}
-
-DEFUN (log2, args, nargout,
-  "-*- texinfo -*-\n\
-@deftypefn {Mapping Function} {} log2 (@var{x})\n\
-@deftypefnx {Mapping Function} {[@var{f}, @var{e}] =} log2 (@var{x})\n\
-Compute the base-2 logarithm of each element of @var{x}.\n\
-\n\
-If called with two output arguments, split @var{x} into\n\
-binary mantissa and exponent so that\n\
-@tex\n\
-${1 \\over 2} \\le \\left| f \\right| < 1$\n\
-@end tex\n\
-@ifnottex\n\
-@code{1/2 <= abs(f) < 1}\n\
-@end ifnottex\n\
-and @var{e} is an integer.  If\n\
-@tex\n\
-$x = 0$, $f = e = 0$.\n\
-@end tex\n\
-@ifnottex\n\
-@code{x = 0}, @code{f = e = 0}.\n\
-@end ifnottex\n\
-@seealso{pow2, log, log10, exp}\n\
-@end deftypefn")
-{
-  octave_value_list retval;
-
-  if (args.length () == 1)
-    {
-      if (nargout < 2)
-        retval(0) = args(0).map (umap_log2);
-      else if (args(0).is_single_type ())
-	{
-	  if (args(0).is_real_type ())
-	    {
-	      FloatNDArray f;
-	      FloatNDArray x = args(0).float_array_value ();
-	      // FIXME -- should E be an int value?
-	      FloatMatrix e;
-	      map_2_xlog2 (x, f, e);
-	      retval (1) = e;
-	      retval (0) = f;
-	    }
-	  else if (args(0).is_complex_type ())
-	    {
-	      FloatComplexNDArray f;
-	      FloatComplexNDArray x = args(0).float_complex_array_value ();
-	      // FIXME -- should E be an int value?
-	      FloatNDArray e;
-	      map_2_xlog2 (x, f, e);
-	      retval (1) = e;
-	      retval (0) = f;
-	    }
-	}
-      else if (args(0).is_real_type ())
-        {
-          NDArray f;
-          NDArray x = args(0).array_value ();
-          // FIXME -- should E be an int value?
-          Matrix e;
-          map_2_xlog2 (x, f, e);
-          retval (1) = e;
-          retval (0) = f;
-        }
-      else if (args(0).is_complex_type ())
-        {
-          ComplexNDArray f;
-          ComplexNDArray x = args(0).complex_array_value ();
-          // FIXME -- should E be an int value?
-          NDArray e;
-          map_2_xlog2 (x, f, e);
-          retval (1) = e;
-          retval (0) = f;
-        }
-      else
-        gripe_wrong_type_arg ("log2", args(0));
-    }
-  else
-    print_usage ();
-
-  return retval;
-}
-
-/*
-%!assert(log2 ([1/4, 1/2, 1, 2, 4]), [-2, -1, 0, 1, 2]);
-%!assert(log2(Inf), Inf);
-%!assert(isnan(log2(NaN)));
-%!assert(log2(4*i), 2 + log2(1*i));
-%!assert(log2(complex(0,Inf)), Inf + log2(i));
-
-%!test
-%! [f, e] = log2 ([0,-1; 2,-4; Inf,-Inf]);
-%! assert (f, [0,-0.5; 0.5,-0.5; Inf,-Inf]);
-%! assert (e(1:2,:), [0,1;2,3])
-
-%!test
-%! [f, e] = log2 (complex (zeros (3, 2), [0,-1; 2,-4; Inf,-Inf]));
-%! assert (f, complex (zeros (3, 2), [0,-0.5; 0.5,-0.5; Inf,-Inf]));
-%! assert (e(1:2,:), [0,1; 2,3]);
-*/
-
 DEFUN (log10, args, ,
     "-*- texinfo -*-\n\
 @deftypefn {Mapping Function} {} log10 (@var{x})\n\
@@ -1364,7 +1249,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_log10);
+    retval = args(0).log10 ();
   else
     print_usage ();
 
@@ -1397,7 +1282,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_log1p);
+    retval = args(0).log1p ();
   else
     print_usage ();
 
@@ -1413,7 +1298,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_real);
+    retval = args(0).real ();
   else
     print_usage ();
 
@@ -1453,7 +1338,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_round);
+    retval = args(0).round ();
   else
     print_usage ();
 
@@ -1494,7 +1379,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_roundb);
+    retval = args(0).roundb ();
   else
     print_usage ();
 
@@ -1526,7 +1411,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_signum);
+    retval = args(0).signum ();
   else
     print_usage ();
 
@@ -1559,7 +1444,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_sin);
+    retval = args(0).sin ();
   else
     print_usage ();
 
@@ -1596,7 +1481,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_sinh);
+    retval = args(0).sinh ();
   else
     print_usage ();
 
@@ -1631,7 +1516,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_sqrt);
+    retval = args(0).sqrt ();
   else
     print_usage ();
 
@@ -1664,7 +1549,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_tan);
+    retval = args(0).tan ();
   else
     print_usage ();
 
@@ -1701,7 +1586,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_tanh);
+    retval = args(0).tanh ();
   else
     print_usage ();
 
@@ -1742,7 +1627,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_toascii);
+    retval = args(0).xtoascii ();
   else
     print_usage ();
 
@@ -1768,7 +1653,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_tolower);
+    retval = args(0).xtolower ();
   else
     print_usage ();
 
@@ -1814,7 +1699,7 @@
 {
   octave_value retval;
   if (args.length () == 1)
-    retval = args(0).map (umap_toupper);
+    retval = args(0).xtoupper ();
   else
     print_usage ();