Mercurial > octave-nkf
diff src/DLD-FUNCTIONS/betainc.cc @ 7789:82be108cc558
First attempt at single precision tyeps
* * *
corrections to qrupdate single precision routines
* * *
prefer demotion to single over promotion to double
* * *
Add single precision support to log2 function
* * *
Trivial PROJECT file update
* * *
Cache optimized hermitian/transpose methods
* * *
Add tests for tranpose/hermitian and ChangeLog entry for new transpose code
author | David Bateman <dbateman@free.fr> |
---|---|
date | Sun, 27 Apr 2008 22:34:17 +0200 |
parents | a1dbe9d80eee |
children | a41df65f3f00 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/betainc.cc Wed May 14 18:09:56 2008 +0200 +++ b/src/DLD-FUNCTIONS/betainc.cc Sun Apr 27 22:34:17 2008 +0200 @@ -69,100 +69,206 @@ octave_value a_arg = args(1); octave_value b_arg = args(2); - if (x_arg.is_scalar_type ()) + // FIXME Can we make a template version of the duplicated code below + if (x_arg.is_single_type () || a_arg.is_single_type () || + b_arg.is_single_type ()) { - double x = x_arg.double_value (); - - if (a_arg.is_scalar_type ()) + if (x_arg.is_scalar_type ()) { - double a = a_arg.double_value (); + float x = x_arg.float_value (); - if (! error_state) + if (a_arg.is_scalar_type ()) { - if (b_arg.is_scalar_type ()) + float a = a_arg.float_value (); + + if (! error_state) { - double b = b_arg.double_value (); + if (b_arg.is_scalar_type ()) + { + float b = b_arg.float_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + FloatNDArray b = b_arg.float_array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } - else + } + else + { + FloatNDArray a = a_arg.float_array_value (); + + if (! error_state) { - NDArray b = b_arg.array_value (); + if (b_arg.is_scalar_type ()) + { + float b = b_arg.float_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + FloatNDArray b = b_arg.float_array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } } } else { - NDArray a = a_arg.array_value (); + FloatNDArray x = x_arg.float_array_value (); - if (! error_state) + if (a_arg.is_scalar_type ()) { - if (b_arg.is_scalar_type ()) + float a = a_arg.float_value (); + + if (! error_state) { - double b = b_arg.double_value (); + if (b_arg.is_scalar_type ()) + { + float b = b_arg.float_value (); + + if (! error_state) + retval = betainc (x, a, b); + } + else + { + FloatNDArray b = b_arg.float_array_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } } - else + } + else + { + FloatNDArray a = a_arg.float_array_value (); + + if (! error_state) { - NDArray b = b_arg.array_value (); + if (b_arg.is_scalar_type ()) + { + float b = b_arg.float_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + FloatNDArray b = b_arg.float_array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } } } } else { - NDArray x = x_arg.array_value (); - - if (a_arg.is_scalar_type ()) + if (x_arg.is_scalar_type ()) { - double a = a_arg.double_value (); + double x = x_arg.double_value (); - if (! error_state) + if (a_arg.is_scalar_type ()) { - if (b_arg.is_scalar_type ()) + double a = a_arg.double_value (); + + if (! error_state) { - double b = b_arg.double_value (); + if (b_arg.is_scalar_type ()) + { + double b = b_arg.double_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + NDArray b = b_arg.array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } - else + } + else + { + NDArray a = a_arg.array_value (); + + if (! error_state) { - NDArray b = b_arg.array_value (); + if (b_arg.is_scalar_type ()) + { + double b = b_arg.double_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + NDArray b = b_arg.array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } } } else { - NDArray a = a_arg.array_value (); + NDArray x = x_arg.array_value (); - if (! error_state) + if (a_arg.is_scalar_type ()) { - if (b_arg.is_scalar_type ()) + double a = a_arg.double_value (); + + if (! error_state) { - double b = b_arg.double_value (); + if (b_arg.is_scalar_type ()) + { + double b = b_arg.double_value (); + + if (! error_state) + retval = betainc (x, a, b); + } + else + { + NDArray b = b_arg.array_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } } - else + } + else + { + NDArray a = a_arg.array_value (); + + if (! error_state) { - NDArray b = b_arg.array_value (); + if (b_arg.is_scalar_type ()) + { + double b = b_arg.double_value (); - if (! error_state) - retval = betainc (x, a, b); + if (! error_state) + retval = betainc (x, a, b); + } + else + { + NDArray b = b_arg.array_value (); + + if (! error_state) + retval = betainc (x, a, b); + } } } }