X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fm%2Fspecfun%2Fpow2.m;fp=octave_packages%2Fm%2Fspecfun%2Fpow2.m;h=e5756af113a827737bba694e974aabfea5df8ac3;hb=1c0469ada9531828709108a4882a751d2816994a;hp=0000000000000000000000000000000000000000;hpb=63de9f36673d49121015e3695f2c336ea92bc278;p=CreaPhase.git diff --git a/octave_packages/m/specfun/pow2.m b/octave_packages/m/specfun/pow2.m new file mode 100644 index 0000000..e5756af --- /dev/null +++ b/octave_packages/m/specfun/pow2.m @@ -0,0 +1,69 @@ +## Copyright (C) 1995-2012 Kurt Hornik +## +## 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 +## . + +## -*- texinfo -*- +## @deftypefn {Mapping Function} {} pow2 (@var{x}) +## @deftypefnx {Mapping Function} {} pow2 (@var{f}, @var{e}) +## With one argument, computes +## @tex +## $2^x$ +## @end tex +## @ifnottex +## 2 .^ x +## @end ifnottex +## for each element of @var{x}. +## +## With two arguments, returns +## @tex +## $f \cdot 2^e$. +## @end tex +## @ifnottex +## f .* (2 .^ e). +## @end ifnottex +## @seealso{log2, nextpow2} +## @end deftypefn + +## Author: AW +## Created: 17 October 1994 +## Adapted-By: jwe + +function y = pow2 (f, e) + + if (nargin == 1) + y = 2 .^ f; + elseif (nargin == 2) + y = f .* (2 .^ e); + else + print_usage (); + endif + +endfunction + +%!test +%! x = [3, 0, -3]; +%! v = [8, 1, .125]; +%! assert(all (abs (pow2 (x) - v) < sqrt (eps))); + +%!test +%! x = [3, 0, -3, 4, 0, -4, 5, 0, -5]; +%! y = [-2, -2, -2, 1, 1, 1, 3, 3, 3]; +%! z = x .* (2 .^ y); +%! assert(all (abs (pow2 (x,y) - z) < sqrt (eps))); + +%!error pow2(); +