samer@17: function [y,k]=safe_exp2(x,l) samer@17: % safe_exp2 - high dynamic range exponential samer@17: % samer@17: % safe_exp2 :: X:[[N,M]], L:real -> [[N,M]], [[1,M]]. samer@17: % samer@17: % returns y and k such that exp(X) = y * exp(k) and samer@17: % maximum value in y is exp(L). samer@17: % Maximum sensible value of L is log(realmax)=709.78. samer@17: samer@17: k=max(x,[],1)-l; samer@17: y=exp(x-repmat(k,size(x,1),1));