rotmg

Computes the parameters for a modified Givens rotation.

Syntax

void rotmg(queue &exec_queue, buffer<T, 1> &d1, buffer<T, 1> &d2, buffer<T, 1> &x1, buffer<T, 1> &y1, buffer<T, 1> &param)

rotmg supports the following precisions and devices.

T

Devices Supported

float

Host, CPU, and GPU

double

Host, CPU, and GPU

Description

Given Cartesian coordinates (x1, y1) of an input vector, the rotmg routines compute the components of a modified Givens transformation matrix H that zeros the y-component of the resulting vector:


image0

Input Parameters

exec_queue

The queue where the routine should be executed.

d1

Buffer holding the scaling factor for the x-coordinate of the input vector.

d2

Buffer holding the scaling factor for the y-coordinate of the input vector.

x1

Buffer holding the x-coordinate of the input vector.

y1

Scalar specifying the y-coordinate of the input vector.

Output Parameters

d1

Buffer holding the first diagonal element of the updated matrix.

d2

Buffer holding the second diagonal element of the updated matrix.

x1

Buffer holding the x-coordinate of the rotated vector before scaling

param

Buffer holding an array of size 5.

The elements of the param array are:

param[0] contains a switch, flag. the other array elements param[1-4] contain the components of the array H: h11, h21, h12, and h22, respectively.

Depending on the values of flag, the components of H are set as follows:

flag = -1.0:
image1
flag = 0.0:
image2
flag = 1.0:
image3
flag = -2.0:
image4

In the last three cases, the matrix entries of 1.0, -1.0, and 0.0 are assumed based on the value of flag and are not required to be set in the param vector.