You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Generates a real elementary reflector `H` of order `N` such that applying `H` to a vector `[alpha; X]` zeros out `X`.
326
384
*
385
+
* `H` is a Householder matrix with the form:
386
+
*
387
+
* ```tex
388
+
* H \cdot \begin{bmatrix} \alpha \\ x \end{bmatrix} = \begin{bmatrix} \beta \\ 0 \end{bmatrix}, \quad \text{and} \quad H^T H = I
389
+
* ```
390
+
*
391
+
* where:
392
+
*
393
+
* - `tau` is a scalar
394
+
* - `X` is a vector of length `N-1`
395
+
* - `beta` is a scalar value
396
+
* - `H` is an orthogonal matrix known as a Householder reflector.
397
+
*
398
+
* The reflector `H` is constructed in the form:
399
+
*
400
+
* ```tex
401
+
* H = I - \tau \begin{bmatrix}1 \\ v \end{bmatrix} \begin{bmatrix}1 & v^T \end{bmatrix}
402
+
* ```
403
+
*
404
+
* where:
405
+
*
406
+
* - `tau` is a real scalar
407
+
* - `V` is a real vector of length `N-1` that defines the Householder vector
408
+
* - The vector `[1; V]` is the Householder direction\
409
+
*
410
+
* The values of `tau` and `V` are chosen so that applying `H` to the vector `[alpha; X]` results in a new vector `[beta; 0]`, i.e., only the first component remains nonzero. The reflector matrix `H` is symmetric and orthogonal, satisfying `H^T = H` and `H^T H = I`
411
+
*
412
+
* ## Special cases
413
+
*
414
+
* - If all elements of `X` are zero, then `tau = 0` and `H = I`, the identity matrix.
415
+
* - Otherwise, `tau` satisfies `1 ≤ tau ≤ 2`, ensuring numerical stability in transformations.
416
+
*
327
417
* ## Notes
328
418
*
329
-
* - `H` is a Householder matrix with the form `H = I - tau * [1; V] * [1, V^T]`, where `tau` is a scalar and `V` is a vector.
330
-
* - the input vector is `[alpha; X]`, where `alpha` is a scalar and `X` is a real `(n-1)`-element vector.
331
-
* - the result of applying `H` to `[alpha; X]` is `[beta; 0]`, with `beta` being a scalar and the rest of the vector zeroed.
332
-
* - if all elements of `X` are zero, then `tau = 0` and `H` is the identity matrix.
333
-
* - otherwise, `1 <= tau <= 2`
419
+
* - `X` should have `N-1` indexed elements
420
+
* - The output array contains the following two elements: `alpha` and `tau`
334
421
*
335
422
* @private
336
423
* @param {NonNegativeInteger} N - number of rows/columns of the elementary reflector `H`
337
-
* @param {Float64Array} X - overwritten by the vector `V` on exit, expects `N - 1` indexed elements
424
+
* @param {Float64Array} X - input vector
338
425
* @param {integer} strideX - stride length for `X`
339
426
* @param {NonNegativeInteger} offsetX - starting index of `X`
340
-
* @param {Float64Array} out - array to store `alpha` and `tau`, first indexed element stores `alpha` and the second indexed element stores `tau`
427
+
* @param {Float64Array} out - output array
341
428
* @param {integer} strideOut - stride length for `out`
342
429
* @param {NonNegativeInteger} offsetOut - starting index of `out`
* Generates a real elementary reflector `H` of order `N` such that applying `H` to a vector `[alpha; X]` zeros out `X`.
219
277
*
278
+
* `H` is a Householder matrix with the form:
279
+
*
280
+
* ```tex
281
+
* H \cdot \begin{bmatrix} \alpha \\ x \end{bmatrix} = \begin{bmatrix} \beta \\ 0 \end{bmatrix}, \quad \text{and} \quad H^T H = I
282
+
* ```
283
+
*
284
+
* where:
285
+
*
286
+
* - `tau` is a scalar
287
+
* - `X` is a vector of length `N-1`
288
+
* - `beta` is a scalar value
289
+
* - `H` is an orthogonal matrix known as a Householder reflector.
290
+
*
291
+
* The reflector `H` is constructed in the form:
292
+
*
293
+
* ```tex
294
+
* H = I - \tau \begin{bmatrix}1 \\ v \end{bmatrix} \begin{bmatrix}1 & v^T \end{bmatrix}
295
+
* ```
296
+
*
297
+
* where:
298
+
*
299
+
* - `tau` is a real scalar
300
+
* - `V` is a real vector of length `N-1` that defines the Householder vector
301
+
* - The vector `[1; V]` is the Householder direction\
302
+
*
303
+
* The values of `tau` and `V` are chosen so that applying `H` to the vector `[alpha; X]` results in a new vector `[beta; 0]`, i.e., only the first component remains nonzero. The reflector matrix `H` is symmetric and orthogonal, satisfying `H^T = H` and `H^T H = I`
304
+
*
305
+
* ## Special cases
306
+
*
307
+
* - If all elements of `X` are zero, then `tau = 0` and `H = I`, the identity matrix.
308
+
* - Otherwise, `tau` satisfies `1 ≤ tau ≤ 2`, ensuring numerical stability in transformations.
309
+
*
220
310
* ## Notes
221
311
*
222
-
* - `H` is a Householder matrix with the form `H = I - tau * [1; V] * [1, V^T]`, where `tau` is a scalar and `V` is a vector.
223
-
* - the input vector is `[alpha; X]`, where `alpha` is a scalar and `X` is a real `(n-1)`-element vector.
224
-
* - the result of applying `H` to `[alpha; X]` is `[beta; 0]`, with `beta` being a scalar and the rest of the vector zeroed.
225
-
* - if all elements of `X` are zero, then `tau = 0` and `H` is the identity matrix.
226
-
* - otherwise, `1 <= tau <= 2`
312
+
* - `X` should have `N-1` indexed elements
313
+
* - The output array contains the following two elements: `alpha` and `tau`
227
314
*
228
315
* @param {NonNegativeInteger} N - number of rows/columns of the elementary reflector `H`
229
-
* @param {Float64Array} X - overwritten by the vector `V` on exit, expects `N - 1` indexed elements
316
+
* @param {Float64Array} X - input vector
230
317
* @param {integer} incx - stride length for `X`
231
-
* @param {Float64Array} out - array to store `alpha` and `tau`, first indexed element stores `alpha` and the second indexed element stores `tau`
0 commit comments