Skip to content

Commit c2daf58

Browse files
committed
support for legacySubset in sylvester, row and column
1 parent 02c2c18 commit c2daf58

File tree

5 files changed

+32
-11
lines changed

5 files changed

+32
-11
lines changed

src/expression/transform/column.transform.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createColumn } from '../../function/matrix/column.js'
44
import { isNumber } from '../../utils/is.js'
55

66
const name = 'column'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
88

99
/**
1010
* Attach a transform function to matrix.column
@@ -13,8 +13,8 @@ const dependencies = ['typed', 'Index', 'matrix', 'range']
1313
* This transform changed the last `index` parameter of function column
1414
* from zero-based to one-based
1515
*/
16-
export const createColumnTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
17-
const column = createColumn({ typed, Index, matrix, range })
16+
export const createColumnTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
17+
const column = createColumn({ typed, Index, matrix, range, config })
1818

1919
// @see: comment of column itself
2020
return typed('column', {

src/expression/transform/row.transform.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { errorTransform } from './utils/errorTransform.js'
44
import { isNumber } from '../../utils/is.js'
55

66
const name = 'row'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
88

99
/**
1010
* Attach a transform function to matrix.column
@@ -13,8 +13,8 @@ const dependencies = ['typed', 'Index', 'matrix', 'range']
1313
* This transform changed the last `index` parameter of function column
1414
* from zero-based to one-based
1515
*/
16-
export const createRowTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
17-
const row = createRow({ typed, Index, matrix, range })
16+
export const createRowTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
17+
const row = createRow({ typed, Index, matrix, range, config })
1818

1919
// @see: comment of row itself
2020
return typed('row', {

src/function/algebra/sylvester.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ export const createSylvester = /* #__PURE__ */ factory(name, dependencies, (
9494
}
9595
})
9696
function _sylvester (A, B, C) {
97+
// chek if legacySubset is enabled and disable it temporarily
98+
const originalConfigForLegacySubset = config().legacySubset
99+
if (originalConfigForLegacySubset) config({ legacySubset: false })
100+
97101
const n = B.size()[0]
98102
const m = A.size()[0]
99103

@@ -142,6 +146,8 @@ export const createSylvester = /* #__PURE__ */ factory(name, dependencies, (
142146
const Y = matrix(matrixFromColumns(...y))
143147
const X = multiply(U, multiply(Y, transpose(V)))
144148

149+
// restore original config for legacySubset
150+
if (originalConfigForLegacySubset) config({ legacySubset: true })
145151
return X
146152
}
147153
})

src/function/matrix/column.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { clone } from '../../utils/object.js'
44
import { validateIndex } from '../../utils/array.js'
55

66
const name = 'column'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
88

9-
export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
9+
export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
1010
/**
1111
* Return a column from a Matrix.
1212
*
@@ -19,7 +19,7 @@ export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed
1919
* // get a column
2020
* const d = [[1, 2], [3, 4]]
2121
* math.column(d, 1) // returns [[2], [4]]
22-
*
22+
*np
2323
* See also:
2424
*
2525
* row
@@ -48,11 +48,19 @@ export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed
4848
throw new Error('Only two dimensional matrix is supported')
4949
}
5050

51+
// chek if legacySubset is enabled and disable it temporarily
52+
const originalConfigForLegacySubset = config().legacySubset
53+
if (originalConfigForLegacySubset) config({ legacySubset: false })
54+
5155
validateIndex(column, value.size()[1])
5256

5357
const rowRange = range(0, value.size()[0])
5458
const index = new Index(rowRange, [column])
5559
const result = value.subset(index)
60+
61+
// restore original config for legacySubset
62+
if (originalConfigForLegacySubset) config({ legacySubset: true })
63+
5664
return isMatrix(result)
5765
? result
5866
: matrix([[result]])

src/function/matrix/row.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { clone } from '../../utils/object.js'
44
import { validateIndex } from '../../utils/array.js'
55

66
const name = 'row'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
88

9-
export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
9+
export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
1010
/**
1111
* Return a row from a Matrix.
1212
*
@@ -47,12 +47,19 @@ export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, I
4747
if (value.size().length !== 2) {
4848
throw new Error('Only two dimensional matrix is supported')
4949
}
50+
// chek if legacySubset is enabled and disable it temporarily
51+
const originalConfigForLegacySubset = config().legacySubset
52+
if (originalConfigForLegacySubset) config({ legacySubset: false })
5053

5154
validateIndex(row, value.size()[0])
5255

5356
const columnRange = range(0, value.size()[1])
5457
const index = new Index([row], columnRange)
5558
const result = value.subset(index)
59+
60+
// restore original config for legacySubset
61+
if (originalConfigForLegacySubset) config({ legacySubset: true })
62+
5663
return isMatrix(result)
5764
? result
5865
: matrix([[result]])

0 commit comments

Comments
 (0)