# HG changeset patch # User John W. Eaton # Date 1389150448 18000 # Node ID c7fe55478e119a3bfc81232b72be93b754e192d2 # Parent e42d4f1527660a8153cb44fc64bff5fddb42dcc7# Parent 36057e2411f8285e07b2666027bcbb96a8d37bef maint: Periodic merge of stable to gui-release. diff -r e42d4f152766 -r c7fe55478e11 libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Tue Jan 07 16:07:21 2014 -0500 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Tue Jan 07 22:07:28 2014 -0500 @@ -1184,14 +1184,22 @@ { if (c == L'\r' && i < (len - 1) && s.at (i+1) == L'\n') i++; - if (nEvents) - { - WriteConsoleInput (hStdIn, events, nEvents, &written); - nEvents = 0; - ZeroMemory (events, sizeof (events)); - } - PostMessage (m_consoleWindow, WM_KEYDOWN, VK_RETURN, 0x001C0001); - PostMessage (m_consoleWindow, WM_KEYDOWN, VK_RETURN, 0xC01C0001); + + // add new line + events[nEvents].EventType = KEY_EVENT; + events[nEvents].Event.KeyEvent.bKeyDown = TRUE; + events[nEvents].Event.KeyEvent.wRepeatCount = 1; + events[nEvents].Event.KeyEvent.wVirtualKeyCode = + VK_RETURN; + events[nEvents].Event.KeyEvent.wVirtualScanCode = 0; + events[nEvents].Event.KeyEvent.uChar.UnicodeChar = c.unicode (); + events[nEvents].Event.KeyEvent.dwControlKeyState = 0; + nEvents++; + + WriteConsoleInput (hStdIn, events, nEvents, &written); + nEvents = 0; + ZeroMemory (events, sizeof (events)); + } else { diff -r e42d4f152766 -r c7fe55478e11 libinterp/corefcn/inv.cc --- a/libinterp/corefcn/inv.cc Tue Jan 07 16:07:21 2014 -0500 +++ b/libinterp/corefcn/inv.cc Tue Jan 07 22:07:28 2014 -0500 @@ -213,11 +213,22 @@ retval(0) = result; - volatile double xrcond = rcond; - xrcond += 1.0; - if (nargout < 2 && (info == -1 || xrcond == 1.0)) + bool rcond_plus_one_eq_one = false; + + if (isfloat) + { + volatile float xrcond = frcond; + rcond_plus_one_eq_one = xrcond + 1.0F == 1.0F; + } + else + { + volatile double xrcond = rcond; + rcond_plus_one_eq_one = xrcond + 1.0 == 1.0; + } + + if (nargout < 2 && (info == -1 || rcond_plus_one_eq_one)) warning ("inverse: matrix singular to machine precision, rcond = %g", - rcond); + (isfloat ? frcond : rcond)); } return retval; @@ -230,6 +241,16 @@ %!error inv () %!error inv ([1, 2; 3, 4], 2) %!error inv ([1, 2; 3, 4; 5, 6]) + +%!test +%! [xinv, rcond] = inv (single ([1,2;3,4])); +%! assert (isa (xinv, 'single')); +%! assert (isa (rcond, 'single')); + +%!test +%! [xinv, rcond] = inv ([1,2;3,4]); +%! assert (isa (xinv, 'double')); +%! assert (isa (rcond, 'double')); */ // FIXME: this should really be done with an alias, but