# HG changeset patch # User Michael Goffioul # Date 1225331789 14400 # Node ID 2368aa769ab9312b6473cf68dc1f7fec4b8e9d91 # Parent f3dbea0e8a1ddf2ac4fece92f8c00af048e78438 Work around missing std::complex members under MSVC diff -r f3dbea0e8a1d -r 2368aa769ab9 liboctave/ChangeLog --- a/liboctave/ChangeLog Wed Oct 29 18:14:48 2008 -0400 +++ b/liboctave/ChangeLog Wed Oct 29 21:56:29 2008 -0400 @@ -1,3 +1,9 @@ +2008-10-29 Michael Goffioul + + * lo-specfun.cc (cbesj, cbesy, cbesi, cbesk, cbesh1, cbesh2): Do not + use std::complex::real() and std::complex::imag() as l-value, this is + not supported under MSVC. + 2008-10-28 John W. Eaton * lo-specfun.cc: Fix prototypes for the Fortran subroutines cbesh, diff -r f3dbea0e8a1d -r 2368aa769ab9 liboctave/lo-specfun.cc --- a/liboctave/lo-specfun.cc Wed Oct 29 18:14:48 2008 -0400 +++ b/liboctave/lo-specfun.cc Wed Oct 29 21:56:29 2008 -0400 @@ -1299,13 +1299,12 @@ if (kode != 2) { - float expz = exp (std::abs (imag (z))); - y.real () *= expz; - y.imag () *= expz; + float expz = exp (std::abs (imag (z))); + y *= expz; } if (imag (z) == 0.0 && real (z) >= 0.0) - y.imag () = 0.0; + y = FloatComplex (y.real (), 0.0); retval = bessel_return_value (y, ierr); } @@ -1363,12 +1362,11 @@ if (kode != 2) { float expz = exp (std::abs (imag (z))); - y.real () *= expz; - y.imag () *= expz; + y *= expz; } if (imag (z) == 0.0 && real (z) >= 0.0) - y.imag () = 0.0; + y = FloatComplex (y.real (), 0.0); } return bessel_return_value (y, ierr); @@ -1421,7 +1419,7 @@ } if (imag (z) == 0.0 && real (z) >= 0.0) - y.imag () = 0.0; + y = FloatComplex (y.real (), 0.0); retval = bessel_return_value (y, ierr); } @@ -1481,14 +1479,14 @@ float rexpz = real (expz); float iexpz = imag (expz); - float tmp = real (y) * rexpz - imag (y) * iexpz; - - y.imag () = real (y) * iexpz + imag (y) * rexpz; - y.real () = tmp; + float tmp_r = real (y) * rexpz - imag (y) * iexpz; + float tmp_i = real (y) * iexpz + imag (y) * rexpz; + + y = FloatComplex (tmp_r, tmp_i); } if (imag (z) == 0.0 && real (z) >= 0.0) - y.imag () = 0.0; + y = FloatComplex (y.real (), 0.0); } retval = bessel_return_value (y, ierr); @@ -1523,10 +1521,10 @@ float rexpz = real (expz); float iexpz = imag (expz); - float tmp = real (y) * rexpz - imag (y) * iexpz; - - y.imag () = real (y) * iexpz + imag (y) * rexpz; - y.real () = tmp; + float tmp_r = real (y) * rexpz - imag (y) * iexpz; + float tmp_i = real (y) * iexpz + imag (y) * rexpz; + + y = FloatComplex (tmp_r, tmp_i); } retval = bessel_return_value (y, ierr); @@ -1565,10 +1563,10 @@ float rexpz = real (expz); float iexpz = imag (expz); - float tmp = real (y) * rexpz - imag (y) * iexpz; - - y.imag () = real (y) * iexpz + imag (y) * rexpz; - y.real () = tmp; + float tmp_r = real (y) * rexpz - imag (y) * iexpz; + float tmp_i = real (y) * iexpz + imag (y) * rexpz; + + y = FloatComplex (tmp_r, tmp_i); } retval = bessel_return_value (y, ierr);