1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
function retval = moglsingle(arg)
% --- OBSOLETE --- OBSOLETE --- OBSOLETE --- OBSOLETE ---
% PSYCHTOOLBOX SPECIFIC single() implementation:
%
% retval = moglsingle(arg) -- convert into
% a single precision floating point number.
%
% This routine takes an 'arg' of arbitrary
% numeric class and converts it into an equivalent
% object of single precision floating point format.
%
% If a builtin single() function is available,
% as on Matlab and Octave 3.2+, it calls the builtin
% single() function.
%
% Otherwise (Octave) it would call our own special
% implementation.
%
% This is no longer needed as of Octave 3.2.0, but we leave the function
% here as many internal and external code relies on its presence.
%
% For Octave pre 3.2, this applied:
%
% This is a hack needed to make OpenGL (MOGL) work
% on GNU/Octave, despite Octave's lack of a single
% precision data type. Returned values are not
% useful or accessible by Octave. They only have
% meaning for the Psychtoolbox OpenGL functions.
%
% ---protected---
if exist('single', 'builtin')==5
% If this is Octave, then we can use dispatch() to optimize calls to
% moglsingle() away, ie., all calls to moglsingle() will get redirected
% to single() unconditionally to save some overhead:
if IsOctave
dispatch('moglsingle', 'single', 'all');
end
retval = builtin('single', arg);
else
retval = castDouble2Float(double(arg));
end
return;
|