Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### Added

- Added a message after `npm i hyperformula` that points AI assistants to the SKILLS file. The message needs `--foreground-scripts` to be visible in npm, and pnpm 10 needs the `postinstall` script to be approved first. [#1829](https://github.com/handsontable/hyperformula/pull/1829)
- Added the `MUNIT`, `MDETERM` and `MINVERSE` matrix functions: the identity matrix, the determinant and the inverse of a square matrix. [#1817](https://github.com/handsontable/hyperformula/pull/1817)

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion docs/guide/known-limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ a circular reference.
* For certain inputs, the RATE function might have no solutions, or have multiple solutions. Our implementation uses an iterative algorithm (Newton's method) to find an approximation for one of the solutions to within 1e-7. If the approximation is not found after 50 iterations, the RATE function returns the `#NUM!` error.
* The INDEX function doesn't support returning whole rows or columns of the source range – it always returns the contents of a single cell.
* The FILTER function accepts either single rows of equal width or single columns of equal height. In other words, all arrays passed to the FILTER function must have equal dimensions, and at least one of those dimensions must be 1.
* Array-producing functions (e.g., SEQUENCE, FILTER) require their output dimensions to be determinable at parse time. Passing cell references or formulas as dimension arguments (e.g., `=SEQUENCE(A1)`) results in a `#VALUE!` error, because the output size cannot be resolved before evaluation.
* Array-producing functions (e.g., SEQUENCE, MUNIT, FILTER) require their output dimensions to be determinable at parse time. Passing cell references or formulas as dimension arguments (e.g., `=SEQUENCE(A1)`) results in a `#VALUE!` error, because the output size cannot be resolved before evaluation.
* The TEXT function does not accept embedded double-quote literals in the format string. In Excel, `""` inside a format string is an escape sequence for a literal `"` character — e.g. `=TEXT(1234.5, "#,##0.00 ""zł""")` returns `"1,234.50 zł"`. If your application requires this escape sequence, supply a custom [`stringifyCurrency`](currency-handling.md) callback.

### UNIQUE function
Expand Down
1 change: 1 addition & 0 deletions docs/guide/list-of-differences.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ To remove the differences, create [custom implementations](custom-functions.md)
| ISODD | =ISODD(3.5) | FALSE | TRUE | TRUE |
| CEILING.MATH | =CEILING.MATH(-4.3, 2, 2) | -4 | -6 | -6 |
| FLOOR.MATH | =FLOOR.MATH(-4.7, 2, 2) | -6 | -4 | -4 |
| MUNIT | =ROWS(MUNIT(A1:A2))<br>where A1:A2: 3, 2 | VALUE | Not checked | 2 |

A few of the rows above share a root cause worth stating once:

Expand Down
1 change: 1 addition & 0 deletions hyperformula/src/error-message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export class ErrorMessage {
public static EmptyArray = 'Empty array not allowed.'
public static ArrayDimensions = 'Array dimensions are not compatible.'
public static PoolDimensions = 'Range dimensions are not compatible with the window size and the stride.'
public static SingularMatrix = 'Matrix is singular.'
public static NoSpaceForArrayResult = 'No space for array result.'
public static ValueSmall = 'Value too small.'
public static ValueLarge = 'Value too large.'
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/csCZ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINIFS',
MINUTE: 'MINUTA',
MIRR: 'MOD.MÍRA.VÝNOSNOSTI',
MDETERM: 'DETERMINANT',
MINVERSE: 'INVERZE',
MMULT: 'SOUČIN.MATIC',
MUNIT: 'MUNIT',
MOD: 'MOD',
MONTH: 'MĚSÍC',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/daDK.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINHVISER',
MINUTE: 'MINUT',
MIRR: 'MIA',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERT',
MMULT: 'MPRODUKT',
MUNIT: 'MENHED',
MOD: 'REST',
MONTH: 'MÅNED',
N: 'TAL',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/deDE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINWENNS',
MINUTE: 'MINUTE',
MIRR: 'QIKV',
MDETERM: 'MDET',
MINVERSE: 'MINV',
MMULT: 'MMULT',
MUNIT: 'MEINHEIT',
MOD: 'REST',
MONTH: 'MONAT',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/enGB.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINIFS',
MINUTE: 'MINUTE',
MIRR: 'MIRR',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERSE',
MMULT: 'MMULT',
MUNIT: 'MUNIT',
MOD: 'MOD',
MONTH: 'MONTH',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/esES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ export const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.SI.CONJUNTO',
MINUTE: 'MINUTO',
MIRR: 'TIRM',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERSA',
MMULT: 'MMULT',
MUNIT: 'M.UNIDAD',
MOD: 'RESIDUO',
MONTH: 'MES',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/fiFI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.JOS',
MINUTE: 'MINUUTIT',
MIRR: 'MSISÄINEN',
MDETERM: 'MDETERM',
MINVERSE: 'MKÄÄNTEINEN',
MMULT: 'MKERRO',
MUNIT: 'YKSIKKÖM',
MOD: 'JAKOJ',
MONTH: 'KUUKAUSI',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/frFR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.SI',
MINUTE: 'MINUTE',
MIRR: 'TRIM',
MDETERM: 'DETERMAT',
MINVERSE: 'INVERSEMAT',
MMULT: 'PRODUITMAT',
MUNIT: 'MATRICE.UNITAIRE',
MOD: 'MOD',
MONTH: 'MOIS',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/huHU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINHA',
MINUTE: 'PERCEK',
MIRR: 'MEGTÉRÜLÉS',
MDETERM: 'MDETERM',
MINVERSE: 'INVERZ.MÁTRIX',
MMULT: 'MSZORZAT',
MUNIT: 'MMÁTRIX',
MOD: 'MARADÉK',
MONTH: 'HÓNAP',
N: 'S',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/idID.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.JIKAS',
MINUTE: 'MENIT',
MIRR: 'MIRR',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERSE',
MMULT: 'MMULT',
MUNIT: 'MUNIT',
MOD: 'MOD',
MONTH: 'BULAN',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/itIT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.PIÙ.SE',
MINUTE: 'MINUTO',
MIRR: 'TIR.VAR',
MDETERM: 'MATR.DETERM',
MINVERSE: 'MATR.INVERSA',
MMULT: 'MATR.PRODOTTO',
MUNIT: 'MATR.UNIT',
MOD: 'RESTO',
MONTH: 'MESE',
N: 'NUM',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/nbNO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.HVIS.SETT',
MINUTE: 'MINUTT',
MIRR: 'MODIR',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERS',
MMULT: 'MMULT',
MUNIT: 'MENHET',
MOD: 'REST',
MONTH: 'MÅNED',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/nlNL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.ALS.VOORWAARDEN',
MINUTE: 'MINUUT',
MIRR: 'GIR',
MDETERM: 'DETERMINANTMAT',
MINVERSE: 'INVERSEMAT',
MMULT: 'PRODUCTMAT',
MUNIT: 'EENHEIDMAT',
MOD: 'REST',
MONTH: 'MAAND',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/plPL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MIN.WARUNKÓW',
MINUTE: 'MINUTA',
MIRR: 'MIRR',
MDETERM: 'WYZNACZNIK.MACIERZY',
MINVERSE: 'MACIERZ.ODW',
MMULT: 'MACIERZ.ILOCZYN',
MUNIT: 'MACIERZ.JEDNOSTKOWA',
MOD: 'MOD',
MONTH: 'MIESIĄC',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/ptPT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MÍNIMOSES',
MINUTE: 'MINUTO',
MIRR: 'MTIR',
MDETERM: 'MATRIZ.DETERM',
MINVERSE: 'MATRIZ.INVERSA',
MMULT: 'MATRIZ.MULT',
MUNIT: 'UNIDM',
MOD: 'MOD',
MONTH: 'MÊS',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/ruRU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'МИНЕСЛИ',
MINUTE: 'МИНУТЫ',
MIRR: 'МВСД',
MDETERM: 'МОПРЕД',
MINVERSE: 'МОБР',
MMULT: 'МУМНОЖ',
MUNIT: 'МЕДИН',
MOD: 'ОСТАТ',
MONTH: 'МЕСЯЦ',
N: 'Ч',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/svSE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'MINIFS',
MINUTE: 'MINUT',
MIRR: 'MODIR',
MDETERM: 'MDETERM',
MINVERSE: 'MINVERT',
MMULT: 'MMULT',
MUNIT: 'MENHET',
MOD: 'REST',
MONTH: 'MÅNAD',
N: 'N',
Expand Down
3 changes: 3 additions & 0 deletions hyperformula/src/i18n/languages/trTR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,10 @@ const dictionary: RawTranslationPackage = {
MINIFS: 'ÇOKEĞERMİN',
MINUTE: 'DAKİKA',
MIRR: 'D_İÇ_VERİM_ORANI',
MDETERM: 'DETERMİNANT',
MINVERSE: 'DİZEY_TERS',
MMULT: 'DÇARP',
MUNIT: 'BİRİMMATRİS',
MOD: 'MOD',
MONTH: 'AY',
N: 'S',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,32 @@ export const MATRIX_FUNCTIONS_DOCS: Record<string, FunctionDoc> = {
documentationUrl: 'https://hyperformula.handsontable.com/docs/guide/built-in-functions.html',
examples: ['=MEDIANPOOL(A1:D4, 2)', '=MEDIANPOOL(A1:D4, 2, 1)'],
},
MDETERM: {
category: 'Matrix functions',
shortDescription: 'Calculates the determinant of a square array. A non-square array or an array with a non-numeric value returns the #VALUE! error.',
parameters: [{name: 'array', description: 'The square range or array of numbers whose determinant is calculated.'}],
documentationUrl: 'https://hyperformula.handsontable.com/docs/guide/built-in-functions.html',
examples: ['=MDETERM(A1:B2)', '=MDETERM({1,2;3,4})'],
},
MINVERSE: {
category: 'Matrix functions',
shortDescription: 'Calculates the inverse of a square array. A non-square array or an array with a non-numeric value returns the #VALUE! error; a singular array returns the #NUM! error.',
parameters: [{name: 'array', description: 'The square range or array of numbers to invert.'}],
documentationUrl: 'https://hyperformula.handsontable.com/docs/guide/built-in-functions.html',
examples: ['=MINVERSE(A1:B2)', '=MINVERSE({1,2;3,4})'],
},
MMULT: {
category: 'Matrix functions',
shortDescription: 'Calculates the array product of two arrays.',
parameters: [{name: 'array1', description: 'The first range of numbers in the matrix multiplication; its column count must equal the row count of array2.'}, {name: 'array2', description: 'The second range of numbers in the matrix multiplication; its row count must equal the column count of array1.'}],
documentationUrl: 'https://hyperformula.handsontable.com/docs/guide/built-in-functions.html',
examples: ['=MMULT(A1:B2, D1:E2)', '=MMULT(A1:C2, A4:B6)'],
},
MUNIT: {
category: 'Matrix functions',
shortDescription: 'Returns the identity matrix of the given dimension. A fractional dimension is truncated; a dimension below 1 or a non-numeric one returns the #VALUE! error.',
parameters: [{name: 'dimension', description: 'The number of rows and columns of the returned matrix.'}],
documentationUrl: 'https://hyperformula.handsontable.com/docs/guide/built-in-functions.html',
examples: ['=MUNIT(3)', '=MMULT(A1:C3, MUNIT(3))'],
},
}
Loading
Loading