.. _set_status:

set_status
==========


Sets the global VM Status according to new values and returns the
previous VM Status.


.. contents::
    :local:
    :depth: 1

Description
***********

The ``set_status`` function sets the global VM Status to new value and returns the previous VM Status.


The global VM Status is a single value and it accumulates via bitwise OR ( \| ) all errors that happen inside VM functions. The following table lists the possible error values.


.. list-table::
   :header-rows: 1

   * -  Status
     -  Description
   * -  **Successful Execution**
     -
   * -  ``status::success``
     -  VM function execution completed successfully
   * -  ``status::not_defined``
     -  VM status not defined
   * -  **Warnings**
     -
   * -  ``status::accuracy_warning``
     -  VM function execution completed successfully in a different    accuracy mode
   * -  **Computational Errors**
     -
   * -  ``status::errdom``
     -  Values are out of a range of definition producing invalid (QNaN)    result
   * -  ``status::sing``
     -  Values cause divide-by-zero (singularity) errors and produce and    invalid (QNaN or Inf) result
   * -  ``status::overflow``
     -  An overflow happened during the calculation process
   * -  ``status::underflow``
     -  An underflow happened during the calculation process


API
***


Syntax
------

.. code-block:: cpp

   uint8_t set_status (queue& exec_queue,uint_8   new_status )

``set_status`` supports the following devices: Host, CPU, and GPU.


Input Parameters
----------------

exec_queue
   The queue where the routine should be executed.


new_status
   Specifies the VM status to be set.


Output Parameters
-----------------

return value (old_status)
   Specifies the former VM status.


Examples
********

.. code-block::


   uint8_t olderr = set_status (exec_queue, status::success);


   if (olderr & status::errdom)
   {
       std::cout << ”Errdom status returned” << std::endl;
   }


   if (olderr & status::sing)
   {
       std::cout << ”Singularity status returned” << std::endl;
   }