From dddd1723bb2221956e0b5ad6b3769e4330aa1598 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 16 Oct 2026 20:05:44 -0400 Subject: [PATCH 1/4] An MCOS object's non-double numbers keep their class, and a single shows MATLAB's digits C-033, per the maintainer's group E ruling of 2026-10-16 (theme 2: follow MATLAB, and measure it first). A Simulink.Parameter whose Value is int32([100 200 300 400]) showed class double in a .mat and a model workspace, where both dictionaries show int32; a logical row showed double; and single(3.3) showed 3.299999952316284 where both dictionaries show 3.3. The corpus twins param_* and parity_* show all of these. The class. McosParser.resolveValue handed every numeric scalar and row over bare, and stamped double on every column and matrix. The node layer reads a bare number as a double. A real value of any class other than double is now the binary dictionary reader's typed spelling of it: {_type: 'int8', _value: '-42'}, '[100, 200, 300, 400]', 'Matrix(3,1)...'. A logical row is the typed logical literal. A double is unchanged. Two readers of resolved values follow: - the function-handle marker is read off the raw cell, since the uint32 word now resolves typed; - an int32 enumeration's `int32.Data` is read from its typed spelling, so each enumeral keeps its number. The digits. MatParser read a single as the double it widens to. A value of class single now reads each element as MATLAB spells that float32. This was measured on R2027a, in both dictionary formats, over 4,086 float32 bit patterns and 7 exact ties; the fixture keeps 4,082 of the patterns and 5 of the ties. The rule is C's %.6g where that gives the same single, otherwise %.9g with ties to even, and %.10g for realmax('single'). It is not "the shortest decimal that is the same single": MATLAB writes single(1/3) as 0.333333343. The shortest-decimal rule differs from MATLAB on 3,520 of the 4,082 patterns. This rule matches all of them, and all 127,743 non-zero singles in a customer text dictionary in the corpus. It is lossless, because the number is the same float32. An exact-arithmetic path handles the common range; it gives the same numbers on every 31st bit pattern, and a million singles take 75 ms, not 400 ms. A double stored as miSINGLE keeps its double. Corpus, all 168 .mat/.slx files, main against this: 82 rows change class (param_* int32 and logical, topMat.mat's uint64 mID). 88 rows change digits (allMidiSeq.mat 74, parity_* 10, param_* 4). Nothing else changes, and no file newly fails to load. New fixtures, made by MATLAB (test/fixtures/mcos/make_typed_fixtures.m): typed_objects.mat, typed_ws.slx, typed_mcos.sldd and typed_mcos_binary.sldd, with a truth file. typedMcosFixtures.test.ts checks four things: - every value presents alike in all four venues, with MATLAB's class and size; - the .mat's numbers are MATLAB's, bit for bit; - the sweep shows MATLAB's own text, element by element; - a Parameter copied out of the .mat into either dictionary reopens as MATLAB's own entry. In the binary dictionary the Value tag is also MATLAB's own. matSingleDigits.test.ts locks the digits on hand-built MAT bytes: plain, complex, sparse, through decodeMatStream, ties, and a lossless sweep. Existing tests changed, each because it pinned exactly what the ruling removes: - mcosColumnVector.test.ts, "control: a logical 1x6 is still the bare row of booleans it was": now the typed logical row, shown as class logical. - mcosParser.test.ts, "array of logicals resolves as boolean[]...": a logical [0 0] Dimensions is now {_type: 'logical', _value: '[0, 0]'}. - complexMcosValue.test.ts: a comment only. The case still tests the formatter on a widened double, which a .mat no longer hands over. DESIGN.md: two known limitations are removed, because this commit fixes them: "A REAL array inside an MCOS object is classed double" and "A single shows the double it widens to". Not done: an empty array of a class other than double still resolves to [], which reads as a double 0x0. The binary reader's classed empty carries BINARY_EMPTY_KEY, whose meaning for a value out of a .mat is a separate question. --- dist/datamodel/parser/MatParser.d.ts.map | 2 +- dist/datamodel/parser/MatParser.js | 135 +- dist/datamodel/parser/MatParser.js.map | 2 +- dist/datamodel/parser/McosParser.d.ts.map | 2 +- dist/datamodel/parser/McosParser.js | 77 +- dist/datamodel/parser/McosParser.js.map | 2 +- src/datamodel/parser/MatParser.ts | 140 +- src/datamodel/parser/McosParser.ts | 76 +- test/complexMcosValue.test.ts | 4 +- test/fixtures/mcos/make_typed_fixtures.m | 369 +++++ test/fixtures/mcos/typed_fixtures.truth.json | 1514 ++++++++++++++++++ test/fixtures/mcos/typed_mcos.sldd | 1028 ++++++++++++ test/fixtures/mcos/typed_mcos_binary.sldd | Bin 0 -> 4534 bytes test/fixtures/mcos/typed_objects.mat | Bin 0 -> 19134 bytes test/fixtures/mcos/typed_ws.slx | Bin 0 -> 49913 bytes test/matSingleDigits.test.ts | 130 ++ test/mcosColumnVector.test.ts | 88 +- test/mcosParser.test.ts | 11 +- test/parity/matlab/DESIGN.md | 11 - test/typedMcosFixtures.test.ts | 270 ++++ 20 files changed, 3787 insertions(+), 74 deletions(-) create mode 100644 test/fixtures/mcos/make_typed_fixtures.m create mode 100644 test/fixtures/mcos/typed_fixtures.truth.json create mode 100644 test/fixtures/mcos/typed_mcos.sldd create mode 100644 test/fixtures/mcos/typed_mcos_binary.sldd create mode 100644 test/fixtures/mcos/typed_objects.mat create mode 100644 test/fixtures/mcos/typed_ws.slx create mode 100644 test/matSingleDigits.test.ts create mode 100644 test/typedMcosFixtures.test.ts diff --git a/dist/datamodel/parser/MatParser.d.ts.map b/dist/datamodel/parser/MatParser.d.ts.map index 8304e08a..ba2c60fe 100644 --- a/dist/datamodel/parser/MatParser.d.ts.map +++ b/dist/datamodel/parser/MatParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+BhF,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IAKnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAOnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IAIpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAWnB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAkBtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,EAAE,CAAC;IAYzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AAwKD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK9E;AAwCD,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAS3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAWzD;AAwMD,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAEpF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5E;AAQD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAE3F;AA4GD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,WAAW,CA0ZtG;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CA6L5D;AA8ID,uFAAuF;AACvF,MAAM,MAAM,SAAS,GACf;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC;IAAC,gBAAgB,EAAE,UAAU,EAAE,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAYpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,UAAQ,GAAG,MAAM,GAAG,IAAI,CAiChF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,SAAS,CA+B/F"} \ No newline at end of file +{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkChF,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IAKnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAOnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IAIpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAWnB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAkBtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,EAAE,CAAC;IAYzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AA8RD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK9E;AAwCD,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAS3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAWzD;AA2MD,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAEpF;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5E;AAQD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAE3F;AA4GD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,WAAW,CA0ZtG;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CA6L5D;AA8ID,uFAAuF;AACvF,MAAM,MAAM,SAAS,GACf;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC;IAAC,gBAAgB,EAAE,UAAU,EAAE,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAYpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,UAAQ,GAAG,MAAM,GAAG,IAAI,CAiChF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,SAAS,CA+B/F"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.js b/dist/datamodel/parser/MatParser.js index edc892ee..12ffa55d 100644 --- a/dist/datamodel/parser/MatParser.js +++ b/dist/datamodel/parser/MatParser.js @@ -25,6 +25,9 @@ const MI_MATRIX = 14; const MI_COMPRESSED = 15; const MI_UTF8 = 16; const MI_UTF16 = 17; +// The array class of a single (mxSINGLE_CLASS), whose elements are read as MATLAB spells them +// (singleDigits). +const MX_SINGLE_CLASS = 7; function align8(n) { return n + ((8 - (n % 8)) % 8); } @@ -76,7 +79,12 @@ const ELEMENT_WIDTH = { // four UTF-16 code units share one uint64 and the rounding lands in the LOW bits — that // is, on the FIRST character of every group of four ("café" -> "`afé"). See // test/parity/matlab/STRING_MCOS.md. -function readNumericArray(view, sub, count) { +// +// `single` is whether the array is of class single (C-033): each miSINGLE element is then the +// decimal MATLAB spells that float32 with (singleDigits), and not the double getFloat32 widens +// it to. Any other class reads an miSINGLE element as that double, which for a double stored +// in four bytes is its value. +function readNumericArray(view, sub, count, single = false) { const values = []; const off = sub.dataOffset; // `count` comes from the array's DECLARED dimensions, which a truncated or @@ -103,9 +111,11 @@ function readNumericArray(view, sub, count) { case MI_DOUBLE: values.push(view.getFloat64(off + i * 8, true)); break; - case MI_SINGLE: - values.push(view.getFloat32(off + i * 4, true)); + case MI_SINGLE: { + const x = view.getFloat32(off + i * 4, true); + values.push(single ? singleDigits(x) : x); break; + } case MI_INT8: values.push(view.getInt8(off + i)); break; @@ -134,6 +144,111 @@ function readNumericArray(view, sub, count) { } return values; } +/** + * A single as the decimal MATLAB spells it with, measured (R2027a): C's `%.6g` where that is + * the same float32, and otherwise `%.9g`, which always is — or `%.10g` for realmax('single'), + * whose `%.9g` is past it. Six is FLT_DIG, the digits every float32 holds, and nine + * FLT_DECIMAL_DIG, the digits that name any one; MATLAB writes a double by the same rule at + * fifteen and seventeen (a binary dictionary holds 1/3 as 0.33333333333333331). + * + * getFloat32 hands back the double of the same value, and every number here prints as the + * shortest text of its DOUBLE: single(3.3) is the double 3.299999952316284, and showed so, + * where both dictionaries hold MATLAB's own text for the same value, `3.3` (the corpus + * twins param_vars.mat / param_json.sldd, P30_TypeMaxUnitDesc; DESIGN.md recorded the + * difference as a limitation). It is not "the shortest decimal that is the same float32": + * MATLAB writes single(1/3) as 0.333333343, where 0.33333334 would do, and the smallest + * subnormal as 1.4013e-45, where 1e-45 would. make_typed_fixtures.m's sSingleSweep, 4,082 + * float32 bit patterns from the smallest subnormal to realmax, holds MATLAB's text for each + * in a text dictionary (its binary format writes the same digits, measured), and this rule + * gives every one, where the shortest would differ on 3,520 (typedMcosFixtures.test.ts). It + * also gives every one of the 127,743 non-zero singles a customer text dictionary in the + * corpus holds. + * + * Lossless: the number is the same float32, so MatWriter's setFloat32 writes back the bits + * that were read, and a text dictionary's `0.333333343F` names them too. An infinity, a NaN + * and either zero are themselves. + */ +function singleDigits(x) { + if (!Number.isFinite(x) || x === 0) { + return x; + } + const ax = Math.abs(x); + let six = roundedDigits(ax, 6); + if (Number.isNaN(six)) { + six = Math.abs(Number(x.toPrecision(6))); + } + if (Math.fround(six) === ax) { + return x < 0 ? -six : six; + } + const nine = roundedDigits(ax, 9); + if (!Number.isNaN(nine)) { + return x < 0 ? -nine : nine; + } + const text = toPrecisionHalfEven(x, 9); + return Math.abs(text) > FLT_MAX ? toPrecisionHalfEven(x, 10) : text; +} +// The largest finite single, realmax('single'). +const FLT_MAX = 3.4028234663852886e38; +const POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12]; +/** + * The positive single `ax` to `p` significant digits, an exact tie to the even digit, by + * arithmetic that is exact: `ax * 10^j` is, for a float32 and 0 <= j <= 12 (24 bits of + * mantissa by at most 28 of 5^12 fit a double's 53), so it is rounded as the exact value is, + * and `n / 10^j` is the double nearest that decimal. NaN where `j` would fall outside that + * range — a single of 1e9 or more, or under 1e-4 for nine digits and 1e-7 for six — which + * toPrecisionHalfEven reads instead. The same numbers (every 31st float32 bit pattern, both + * signs, compared), in a fifth of the time: singleDigits runs once per element, and a million + * singles took 400 ms by toPrecision alone and take 75 ms so, against 8 ms for the bare read. + */ +function roundedDigits(ax, p) { + let j = p - 1 - Math.floor(Math.log10(ax)); + if (j < 0 || j > 12) { + return NaN; + } + let y = ax * POWERS_OF_TEN[j]; + // log10 can land a hair either side of an exponent: then `y` has a digit too many or too + // few, and the scale moves one place. + if (y >= POWERS_OF_TEN[p]) { + if (j === 0) { + return NaN; + } + y = ax * POWERS_OF_TEN[--j]; + } + else if (y < POWERS_OF_TEN[p - 1]) { + if (j === 12) { + return NaN; + } + y = ax * POWERS_OF_TEN[++j]; + } + const whole = Math.floor(y); + const rest = y - whole; + const n = rest > 0.5 || (rest === 0.5 && whole % 2 === 1) ? whole + 1 : whole; + return n / POWERS_OF_TEN[j]; +} +/** + * `x` to `p` significant digits as C's printf rounds it: to the nearer, and an exact tie to + * the EVEN digit. toPrecision takes the one farther from zero at a tie, so single(1000000.125) + * came out 1000000.13 where MATLAB writes 1000000.12 (typed_mcos.sldd's sSingleTies). Only a + * value of exactly `p + 1` significant digits, the last a 5, is a tie; toPrecision's own text + * of it at `p + 1` digits is then that 5, which is what is looked for before the exact digits + * are. + */ +function toPrecisionHalfEven(x, p) { + const away = x.toPrecision(p); + if (!/5(?:e|$)/.test(x.toPrecision(p + 1))) { + return Number(away); + } + // Every significant digit of `x` up to a hundred, which a tie at ten has all of. + const digits = x.toPrecision(100).replace(/e.*$/, '').replace(/[-.]/g, '').replace(/^0+/, ''); + if (digits[p] !== '5' || !/^0*$/.test(digits.slice(p + 1))) { + return Number(away); + } + // An exact tie, which goes to the even neighbour: the one nearer zero, `x` cut to `p` + // digits, when the last of those is even, and `away` when it is odd. The nearer one is + // read off a number just inside the tie: 2^-45 of `x` moves a double, and is far less + // than half a unit in a tenth digit. + return Number(digits[p - 1]) % 2 === 0 ? Number((x * (1 - 2 ** -45)).toPrecision(p)) : Number(away); +} // Why the numeric part whose tag is at `at` holds none of the `count` elements its array // declares, or null when it holds what its bytes do. Either its tag is cut short by the end of // the bytes, which readSubelement reports as a tag of type 0, or its type has no width: in both @@ -325,7 +440,9 @@ export function structElementsHeld(v) { // outside the declared rows is dropped, rows repeated within a column keep the LAST value // (as the dense scatter this replaced had it), rows out of order are sorted, and a stored // zero is not a non-zero. -function readSparse(view, offset, end, dimensions, isComplex, nzmax) { +// `single` is whether the array is of class single, whose non-zeros are read as a full +// single array's are (readNumericArray). +function readSparse(view, offset, end, dimensions, isComplex, nzmax, single) { const rows = Math.max(0, dimensions[0] || 0); const cols = Math.max(0, dimensions[1] || 0); // Each of the four reads is guarded by the END OF THIS ELEMENT, the same way the @@ -362,13 +479,13 @@ function readSparse(view, offset, end, dimensions, isComplex, nzmax) { if (offset < end) { const prSub = readSubelement(view, offset); offset += prSub.totalSize; - pr = readNumericArray(view, prSub, nnz); + pr = readNumericArray(view, prSub, nnz, single); } let pi = []; if (isComplex && offset < end) { const piSub = readSubelement(view, offset); offset += piSub.totalSize; - pi = readNumericArray(view, piSub, nnz); + pi = readNumericArray(view, piSub, nnz, single); } // At most nnz entries, which ir's own bytes bound. const rowOut = new Int32Array(nnz); @@ -795,7 +912,7 @@ export function parseMatrix(view, baseOffset, length, depth = 0) { // read: a host that renders values without knowing about `sparse` still shows // something true. A 1x1 is not unwrapped to a scalar: it has no list to unwrap. const nzmax = flagsSub.bytes >= 8 ? view.getUint32(flagsSub.dataOffset + 4, true) : 0; - result.sparse = offset < end ? readSparse(view, offset, end, dimensions, isComplex, nzmax) : emptySparse(isComplex, 0); + result.sparse = offset < end ? readSparse(view, offset, end, dimensions, isComplex, nzmax, arrayClass === MX_SINGLE_CLASS) : emptySparse(isComplex, 0); result.value = sparseValue(dimensions, className); } else if (arrayClass >= 6 && arrayClass <= 15) { @@ -814,10 +931,10 @@ export function parseMatrix(view, baseOffset, length, depth = 0) { result.undecoded = unread; return result; } - const realValues = readNumericArray(view, realSub, totalElements); + const realValues = readNumericArray(view, realSub, totalElements, arrayClass === MX_SINGLE_CLASS); if (imagSub) { offset += imagSub.totalSize; - const imagValues = readNumericArray(view, imagSub, totalElements); + const imagValues = readNumericArray(view, imagSub, totalElements, arrayClass === MX_SINGLE_CLASS); const colMajor = realValues.map((r, i) => ({ re: r, im: imagValues[i] })); result.value = transposeFromColMajor(colMajor, dimensions); } diff --git a/dist/datamodel/parser/MatParser.js.map b/dist/datamodel/parser/MatParser.js.map index 7f0cb86f..41c11718 100644 --- a/dist/datamodel/parser/MatParser.js.map +++ b/dist/datamodel/parser/MatParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/McosParser.d.ts.map b/dist/datamodel/parser/McosParser.d.ts.map index ad3562dc..02f9de4b 100644 --- a/dist/datamodel/parser/McosParser.d.ts.map +++ b/dist/datamodel/parser/McosParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AA+DxB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IAOvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AA0N1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AAokBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file +{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAgExB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IAOvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAsO1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AAumBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file diff --git a/dist/datamodel/parser/McosParser.js b/dist/datamodel/parser/McosParser.js index a3f23afc..06f579e1 100644 --- a/dist/datamodel/parser/McosParser.js +++ b/dist/datamodel/parser/McosParser.js @@ -4,7 +4,7 @@ import { isObjectHandle, objectHandleFromRaw, objectHandleFromValue } from './Mc import { matStreamOfElement } from './MatWriter.js'; import { uuencode } from './CdataCodec.js'; import { setOwn } from './ownKeys.js'; -import { complexClassTag, ENUM_KEY, ENUMERATION_KEY, formatComplexNum, formatMatlabNum, formatMatrixSerial, isExactToken, transposeToColumnMajorND, } from './XmlUtils.js'; +import { complexClassTag, ENUM_KEY, ENUMERATION_KEY, formatComplexNum, formatMatlabNum, formatMatrixSerial, formatNumLiteral, isExactToken, transposeToColumnMajorND, } from './XmlUtils.js'; const MI_MATRIX = 14; const MAX_RECURSION_DEPTH = 32; // A MATLAB `string`-typed value is stored as its own MCOS object whose text lives in @@ -205,9 +205,20 @@ function parseMetaTable(cells) { // joined by newlines, the form MATLAB reads as an empty [] — so a Simulink.Parameter's // matrix Value copied out of a .mat, a workspace or a binary dictionary's hex into a text // dictionary came back empty. Inf and NaN are spelled as MATLAB spells them. -function buildMatrixValue(dims, elements) { - return { _type: 'double', _value: formatMatrixSerial(elements, dims, 'double') }; +// +// Of the array's own class (C-033): `double` for a double, and for any other numeric class +// the class itself, as BinarySlddParser.formatMatrix gives a binary dictionary's matrix of +// that class. A 1xN row of such a class takes formatMatrixSerial's bare `[a, b, c]`, which +// is BinarySlddParser.formatTypedVector's spelling of it. +function buildMatrixValue(dims, elements, cls = 'double') { + return { _type: cls, _value: formatMatrixSerial(elements, dims, cls) }; } +// The real numeric classes other than double, each of which a binary dictionary's reader +// hands the node layer typed (BinarySlddParser.formatTypedScalar, formatTypedVector, +// formatMatrix) and this decoder used to hand over bare, which the node layer reads as a +// double (MatlabVariableNode.parseFlatArray serves a text dictionary's bare JSON list too, +// where double is right, so the class cannot be recovered there). +const NON_DOUBLE_NUMERIC = new Set(['single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64']); const isComplexPair = (x) => x !== null && typeof x === 'object' && 're' in x && 'im' in x; /** * A complex numeric property in the form a compressed-binary dictionary gives the same @@ -326,7 +337,7 @@ function resolveValue(cell, ctx, path, depth) { if (cls === 'cell') { const elems = Array.isArray(val) ? val : []; const resolved = elems.map((e) => resolveValue(e, ctx, path, depth)); - const handle = functionHandleText(resolved); + const handle = functionHandleText(elems[0] ?? null, resolved); if (handle !== null) { return { _type: 'function_handle', _value: handle }; } @@ -365,18 +376,20 @@ function resolveValue(cell, ctx, path, depth) { } if (cell.isLogical) { if (Array.isArray(val)) { - // A logical MATRIX states its shape, in the typed literal BinarySlddParser reads a - // binary dictionary's own logical matrix into (logicalValue): a bare list of + // In the typed literal BinarySlddParser reads a binary dictionary's own logical array + // into (logicalValue), at every shape. A MATRIX states its shape: a bare list of // booleans is a row, so a 2x2 logical Value came back a 1x4 — MATLAB's // sparse([2;1], [1;2], [true;true], 2, 2) in a Simulink.Parameter showed // `[false true true false]`, where the text dictionary's twin of it showed // `[false true; true false]`. A rank-2 COLUMN states its shape for the same reason - // (an Nx1 came back 1xN); a row is still the bare list it always was. + // (an Nx1 came back 1xN). And a ROW states its class (C-033): the node layer reads a + // bare list of booleans as a DOUBLE row, so a logical([1 0 1]) Value showed class + // double, where both dictionaries show logical. formatMatrixSerial spells a 1xN + // logical `[1, 0, 1]`, as typed_binary.sldd's lglVec is held. + if (val.length === 0) + return []; const dims = cell.dimensions && cell.dimensions.length >= 2 ? cell.dimensions : [1, val.length]; - if (dims.length > 2 || (dims[0] > 1 && dims[1] > 1) || (dims.length === 2 && dims[0] > 1 && dims[1] === 1)) { - return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; - } - return val.map((x) => !!x); + return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; } return !!val; } @@ -384,15 +397,27 @@ function resolveValue(cell, ctx, path, depth) { // double cannot hold arrives as its own decimal TEXT (MatParser via XmlUtils.exactInt), // so a scalar one is a string here — accepting only `typeof 'number'` would drop such a // property out of the object entirely rather than merely rounding it. + // + // A class other than double keeps its class (C-033), in the binary dictionary's typed + // spelling of the same value: a Simulink.Parameter whose Value is int8(-42) is + // `{_type: 'int8', _value: '-42'}`, as BinarySlddParser.formatTypedScalar gives it, and + // not the bare -42, which the node layer reads as a double. A double is bare, as it was. + const typed = NON_DOUBLE_NUMERIC.has(cls) ? cls : null; if (typeof val === 'number' || isExactToken(val)) { - return val; + return typed ? { _type: typed, _value: formatNumLiteral(val, typed) } : val; } if (Array.isArray(val)) { if (val.length === 0) return []; const dims = cell.dimensions || [1, val.length]; + // Of a class other than double, every shape is typed, a row as + // BinarySlddParser.formatTypedVector spells one (formatMatrixSerial's bare `[a, b]`) + // and anything else in the Matrix() literal of that class. + if (typed) { + return buildMatrixValue(dims, val, typed); + } // A rank-2 column goes out typed as well: a bare list is a row, so a Value of - // [10; 20; 30] showed, and copied out, as [10 20 30]. A row stays bare. + // [10; 20; 30] showed, and copied out, as [10 20 30]. A double row stays bare. if (dims.length >= 2 && dims[0] > 1 && (dims[1] > 1 || (dims.length === 2 && dims[1] === 1))) { return buildMatrixValue(dims, val); } @@ -400,6 +425,17 @@ function resolveValue(cell, ctx, path, depth) { } return undefined; } +// The number a non-double numeric SCALAR stands for, as text, when `v` is resolveValue's +// typed spelling of one (`{_type: 'int32', _value: '2'}`, `'2U'`, `'3.3F'`), or null. +function typedScalarText(v) { + if (v === null || typeof v !== 'object' || Array.isArray(v)) + return null; + const { _type: type, _value: text } = v; + if (typeof type !== 'string' || !NON_DOUBLE_NUMERIC.has(type) || typeof text !== 'string' || /^(\[|Matrix\()/.test(text)) { + return null; + } + return text.replace(/[FU]$/, ''); +} // The tag MATLAB writes at the head of an enumeration instance struct (MatParser.enumerationInstanceOf). const ENUMERATION_INSTANCE_TAG = 0xdd000000; /** @@ -454,6 +490,12 @@ function enumerationValue(instance, ctx, className) { if (m && (typeof v === 'number' || typeof v === 'boolean' || isExactToken(v))) { return { name: names[k], type: m[1], value: typeof v === 'boolean' ? (v ? '1' : '0') : typeof v === 'number' ? formatMatlabNum(v) : v }; } + // The `int32.Data` of an enumeration derived from int32 (Simulink.IntEnumType): its + // number, which resolveValue spells typed, as every non-double numeric (C-033). + const typedText = m ? typedScalarText(v) : null; + if (m && typedText !== null) { + return { name: names[k], type: m[1], value: typedText }; + } } return { name: names[k], value: '' }; }); @@ -503,9 +545,14 @@ const FUNCTION_HANDLE_MARKER = 0xdd000000; * text one and a .mat). Shown as it stood, it read `@sf%0@(y)y*2`. The prefix goes, and * the `@` that opens the anonymous function's own text stays; nothing else is rewritten * (MatParser.functionHandleText, which a .mat's own function handle is read with too). + * + * The marker is read off the cell's own first element (`marker`), not off what it resolves + * to: the word is a uint32, which resolves to its typed spelling, `{_type: 'uint32', _value: + * '3707764736U'}` (C-033). A number of any class whose value is the word is the marker, as it + * was when this compared the resolved number. */ -function functionHandleText(elements) { - if (elements.length !== 2 || elements[0] !== FUNCTION_HANDLE_MARKER) { +function functionHandleText(marker, elements) { + if (elements.length !== 2 || !marker || marker.isLogical || marker.value !== FUNCTION_HANDLE_MARKER) { return null; } const outer = elements[1]; diff --git a/dist/datamodel/parser/McosParser.js.map b/dist/datamodel/parser/McosParser.js.map index 2295b4f6..088b504e 100644 --- a/dist/datamodel/parser/McosParser.js.map +++ b/dist/datamodel/parser/McosParser.js.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MatParser.ts b/src/datamodel/parser/MatParser.ts index 84d6e3f4..9c1009f3 100644 --- a/src/datamodel/parser/MatParser.ts +++ b/src/datamodel/parser/MatParser.ts @@ -29,6 +29,9 @@ const MI_MATRIX = 14; const MI_COMPRESSED = 15; const MI_UTF8 = 16; const MI_UTF16 = 17; +// The array class of a single (mxSINGLE_CLASS), whose elements are read as MATLAB spells them +// (singleDigits). +const MX_SINGLE_CLASS = 7; // The one description of a parsed MATLAB variable, shared by the parsers that // produce it and MatlabVariableNode, which models it. Both sides once declared @@ -178,7 +181,12 @@ const ELEMENT_WIDTH: Record = { // four UTF-16 code units share one uint64 and the rounding lands in the LOW bits — that // is, on the FIRST character of every group of four ("café" -> "`afé"). See // test/parity/matlab/STRING_MCOS.md. -function readNumericArray(view: DataView, sub: SubElement, count: number): (number | string)[] { +// +// `single` is whether the array is of class single (C-033): each miSINGLE element is then the +// decimal MATLAB spells that float32 with (singleDigits), and not the double getFloat32 widens +// it to. Any other class reads an miSINGLE element as that double, which for a double stored +// in four bytes is its value. +function readNumericArray(view: DataView, sub: SubElement, count: number, single = false): (number | string)[] { const values: (number | string)[] = []; const off = sub.dataOffset; @@ -205,7 +213,11 @@ function readNumericArray(view: DataView, sub: SubElement, count: number): (numb for (let i = 0; i < count; i++) { switch (sub.type) { case MI_DOUBLE: values.push(view.getFloat64(off + i * 8, true)); break; - case MI_SINGLE: values.push(view.getFloat32(off + i * 4, true)); break; + case MI_SINGLE: { + const x = view.getFloat32(off + i * 4, true); + values.push(single ? singleDigits(x) : x); + break; + } case MI_INT8: values.push(view.getInt8(off + i)); break; case MI_UINT8: values.push(view.getUint8(off + i)); break; case MI_INT16: values.push(view.getInt16(off + i * 2, true)); break; @@ -219,6 +231,115 @@ function readNumericArray(view: DataView, sub: SubElement, count: number): (numb return values; } +/** + * A single as the decimal MATLAB spells it with, measured (R2027a): C's `%.6g` where that is + * the same float32, and otherwise `%.9g`, which always is — or `%.10g` for realmax('single'), + * whose `%.9g` is past it. Six is FLT_DIG, the digits every float32 holds, and nine + * FLT_DECIMAL_DIG, the digits that name any one; MATLAB writes a double by the same rule at + * fifteen and seventeen (a binary dictionary holds 1/3 as 0.33333333333333331). + * + * getFloat32 hands back the double of the same value, and every number here prints as the + * shortest text of its DOUBLE: single(3.3) is the double 3.299999952316284, and showed so, + * where both dictionaries hold MATLAB's own text for the same value, `3.3` (the corpus + * twins param_vars.mat / param_json.sldd, P30_TypeMaxUnitDesc; DESIGN.md recorded the + * difference as a limitation). It is not "the shortest decimal that is the same float32": + * MATLAB writes single(1/3) as 0.333333343, where 0.33333334 would do, and the smallest + * subnormal as 1.4013e-45, where 1e-45 would. make_typed_fixtures.m's sSingleSweep, 4,082 + * float32 bit patterns from the smallest subnormal to realmax, holds MATLAB's text for each + * in a text dictionary (its binary format writes the same digits, measured), and this rule + * gives every one, where the shortest would differ on 3,520 (typedMcosFixtures.test.ts). It + * also gives every one of the 127,743 non-zero singles a customer text dictionary in the + * corpus holds. + * + * Lossless: the number is the same float32, so MatWriter's setFloat32 writes back the bits + * that were read, and a text dictionary's `0.333333343F` names them too. An infinity, a NaN + * and either zero are themselves. + */ +function singleDigits(x: number): number { + if (!Number.isFinite(x) || x === 0) { + return x; + } + const ax = Math.abs(x); + let six = roundedDigits(ax, 6); + if (Number.isNaN(six)) { + six = Math.abs(Number(x.toPrecision(6))); + } + if (Math.fround(six) === ax) { + return x < 0 ? -six : six; + } + const nine = roundedDigits(ax, 9); + if (!Number.isNaN(nine)) { + return x < 0 ? -nine : nine; + } + const text = toPrecisionHalfEven(x, 9); + return Math.abs(text) > FLT_MAX ? toPrecisionHalfEven(x, 10) : text; +} + +// The largest finite single, realmax('single'). +const FLT_MAX = 3.4028234663852886e38; + +const POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12]; + +/** + * The positive single `ax` to `p` significant digits, an exact tie to the even digit, by + * arithmetic that is exact: `ax * 10^j` is, for a float32 and 0 <= j <= 12 (24 bits of + * mantissa by at most 28 of 5^12 fit a double's 53), so it is rounded as the exact value is, + * and `n / 10^j` is the double nearest that decimal. NaN where `j` would fall outside that + * range — a single of 1e9 or more, or under 1e-4 for nine digits and 1e-7 for six — which + * toPrecisionHalfEven reads instead. The same numbers (every 31st float32 bit pattern, both + * signs, compared), in a fifth of the time: singleDigits runs once per element, and a million + * singles took 400 ms by toPrecision alone and take 75 ms so, against 8 ms for the bare read. + */ +function roundedDigits(ax: number, p: number): number { + let j = p - 1 - Math.floor(Math.log10(ax)); + if (j < 0 || j > 12) { + return NaN; + } + let y = ax * POWERS_OF_TEN[j]; + // log10 can land a hair either side of an exponent: then `y` has a digit too many or too + // few, and the scale moves one place. + if (y >= POWERS_OF_TEN[p]) { + if (j === 0) { + return NaN; + } + y = ax * POWERS_OF_TEN[--j]; + } else if (y < POWERS_OF_TEN[p - 1]) { + if (j === 12) { + return NaN; + } + y = ax * POWERS_OF_TEN[++j]; + } + const whole = Math.floor(y); + const rest = y - whole; + const n = rest > 0.5 || (rest === 0.5 && whole % 2 === 1) ? whole + 1 : whole; + return n / POWERS_OF_TEN[j]; +} + +/** + * `x` to `p` significant digits as C's printf rounds it: to the nearer, and an exact tie to + * the EVEN digit. toPrecision takes the one farther from zero at a tie, so single(1000000.125) + * came out 1000000.13 where MATLAB writes 1000000.12 (typed_mcos.sldd's sSingleTies). Only a + * value of exactly `p + 1` significant digits, the last a 5, is a tie; toPrecision's own text + * of it at `p + 1` digits is then that 5, which is what is looked for before the exact digits + * are. + */ +function toPrecisionHalfEven(x: number, p: number): number { + const away = x.toPrecision(p); + if (!/5(?:e|$)/.test(x.toPrecision(p + 1))) { + return Number(away); + } + // Every significant digit of `x` up to a hundred, which a tie at ten has all of. + const digits = x.toPrecision(100).replace(/e.*$/, '').replace(/[-.]/g, '').replace(/^0+/, ''); + if (digits[p] !== '5' || !/^0*$/.test(digits.slice(p + 1))) { + return Number(away); + } + // An exact tie, which goes to the even neighbour: the one nearer zero, `x` cut to `p` + // digits, when the last of those is even, and `away` when it is odd. The nearer one is + // read off a number just inside the tie: 2^-45 of `x` moves a double, and is far less + // than half a unit in a tenth digit. + return Number(digits[p - 1]) % 2 === 0 ? Number((x * (1 - 2 ** -45)).toPrecision(p)) : Number(away); +} + // Why the numeric part whose tag is at `at` holds none of the `count` elements its array // declares, or null when it holds what its bytes do. Either its tag is cut short by the end of // the bytes, which readSubelement reports as a tag of type 0, or its type has no width: in both @@ -416,13 +537,16 @@ export function structElementsHeld(v: MatVariable): number { // outside the declared rows is dropped, rows repeated within a column keep the LAST value // (as the dense scatter this replaced had it), rows out of order are sorted, and a stored // zero is not a non-zero. +// `single` is whether the array is of class single, whose non-zeros are read as a full +// single array's are (readNumericArray). function readSparse( view: DataView, offset: number, end: number, dimensions: number[], isComplex: boolean, - nzmax: number + nzmax: number, + single: boolean ): SparseData { const rows = Math.max(0, dimensions[0] || 0); const cols = Math.max(0, dimensions[1] || 0); @@ -464,14 +588,14 @@ function readSparse( if (offset < end) { const prSub = readSubelement(view, offset); offset += prSub.totalSize; - pr = readNumericArray(view, prSub, nnz); + pr = readNumericArray(view, prSub, nnz, single); } let pi: (number | string)[] = []; if (isComplex && offset < end) { const piSub = readSubelement(view, offset); offset += piSub.totalSize; - pi = readNumericArray(view, piSub, nnz); + pi = readNumericArray(view, piSub, nnz, single); } // At most nnz entries, which ir's own bytes bound. @@ -895,7 +1019,7 @@ export function parseMatrix(view: DataView, baseOffset: number, length: number, // read: a host that renders values without knowing about `sparse` still shows // something true. A 1x1 is not unwrapped to a scalar: it has no list to unwrap. const nzmax = flagsSub.bytes >= 8 ? view.getUint32(flagsSub.dataOffset + 4, true) : 0; - result.sparse = offset < end ? readSparse(view, offset, end, dimensions, isComplex, nzmax) : emptySparse(isComplex, 0); + result.sparse = offset < end ? readSparse(view, offset, end, dimensions, isComplex, nzmax, arrayClass === MX_SINGLE_CLASS) : emptySparse(isComplex, 0); result.value = sparseValue(dimensions, className); } else if (arrayClass >= 6 && arrayClass <= 15) { if (offset < end) { @@ -913,11 +1037,11 @@ export function parseMatrix(view: DataView, baseOffset: number, length: number, result.undecoded = unread; return result; } - const realValues = readNumericArray(view, realSub, totalElements); + const realValues = readNumericArray(view, realSub, totalElements, arrayClass === MX_SINGLE_CLASS); if (imagSub) { offset += imagSub.totalSize; - const imagValues = readNumericArray(view, imagSub, totalElements); + const imagValues = readNumericArray(view, imagSub, totalElements, arrayClass === MX_SINGLE_CLASS); const colMajor = realValues.map((r, i) => ({ re: r, im: imagValues[i] })); result.value = transposeFromColMajor(colMajor, dimensions); } else { diff --git a/src/datamodel/parser/McosParser.ts b/src/datamodel/parser/McosParser.ts index 30e077f5..8e6bedbe 100644 --- a/src/datamodel/parser/McosParser.ts +++ b/src/datamodel/parser/McosParser.ts @@ -20,6 +20,7 @@ import { formatComplexNum, formatMatlabNum, formatMatrixSerial, + formatNumLiteral, isExactToken, transposeToColumnMajorND, } from './XmlUtils.js'; @@ -386,10 +387,22 @@ function parseMetaTable(cells: (MatVariable | null)[]): MetaTable | null { // joined by newlines, the form MATLAB reads as an empty [] — so a Simulink.Parameter's // matrix Value copied out of a .mat, a workspace or a binary dictionary's hex into a text // dictionary came back empty. Inf and NaN are spelled as MATLAB spells them. -function buildMatrixValue(dims: number[], elements: (number | string)[]): unknown { - return { _type: 'double', _value: formatMatrixSerial(elements, dims, 'double') }; +// +// Of the array's own class (C-033): `double` for a double, and for any other numeric class +// the class itself, as BinarySlddParser.formatMatrix gives a binary dictionary's matrix of +// that class. A 1xN row of such a class takes formatMatrixSerial's bare `[a, b, c]`, which +// is BinarySlddParser.formatTypedVector's spelling of it. +function buildMatrixValue(dims: number[], elements: (number | string)[], cls = 'double'): unknown { + return { _type: cls, _value: formatMatrixSerial(elements, dims, cls) }; } +// The real numeric classes other than double, each of which a binary dictionary's reader +// hands the node layer typed (BinarySlddParser.formatTypedScalar, formatTypedVector, +// formatMatrix) and this decoder used to hand over bare, which the node layer reads as a +// double (MatlabVariableNode.parseFlatArray serves a text dictionary's bare JSON list too, +// where double is right, so the class cannot be recovered there). +const NON_DOUBLE_NUMERIC = new Set(['single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 'uint64']); + interface ComplexPair { re: unknown; im: unknown; @@ -517,7 +530,7 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set resolveValue(e, ctx, path, depth)); - const handle = functionHandleText(resolved); + const handle = functionHandleText(elems[0] ?? null, resolved); if (handle !== null) { return { _type: 'function_handle', _value: handle }; } @@ -556,18 +569,19 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set= 2 ? cell.dimensions : [1, val.length]; - if (dims.length > 2 || (dims[0] > 1 && dims[1] > 1) || (dims.length === 2 && dims[0] > 1 && dims[1] === 1)) { - return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; - } - return val.map((x) => !!x); + return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; } return !!val; } @@ -575,14 +589,26 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set= 2 && dims[0] > 1 && (dims[1] > 1 || (dims.length === 2 && dims[1] === 1))) { return buildMatrixValue(dims, val as (number | string)[]); } @@ -591,6 +617,17 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set; + if (typeof type !== 'string' || !NON_DOUBLE_NUMERIC.has(type) || typeof text !== 'string' || /^(\[|Matrix\()/.test(text)) { + return null; + } + return text.replace(/[FU]$/, ''); +} + // The tag MATLAB writes at the head of an enumeration instance struct (MatParser.enumerationInstanceOf). const ENUMERATION_INSTANCE_TAG = 0xdd000000; @@ -646,6 +683,12 @@ function enumerationValue(instance: MatVariable, ctx: DecodeContext, className: if (m && (typeof v === 'number' || typeof v === 'boolean' || isExactToken(v))) { return { name: names[k], type: m[1], value: typeof v === 'boolean' ? (v ? '1' : '0') : typeof v === 'number' ? formatMatlabNum(v) : v }; } + // The `int32.Data` of an enumeration derived from int32 (Simulink.IntEnumType): its + // number, which resolveValue spells typed, as every non-double numeric (C-033). + const typedText = m ? typedScalarText(v) : null; + if (m && typedText !== null) { + return { name: names[k], type: m[1], value: typedText }; + } } return { name: names[k], value: '' }; }); @@ -698,9 +741,14 @@ const FUNCTION_HANDLE_MARKER = 0xdd000000; * text one and a .mat). Shown as it stood, it read `@sf%0@(y)y*2`. The prefix goes, and * the `@` that opens the anonymous function's own text stays; nothing else is rewritten * (MatParser.functionHandleText, which a .mat's own function handle is read with too). + * + * The marker is read off the cell's own first element (`marker`), not off what it resolves + * to: the word is a uint32, which resolves to its typed spelling, `{_type: 'uint32', _value: + * '3707764736U'}` (C-033). A number of any class whose value is the word is the marker, as it + * was when this compared the resolved number. */ -function functionHandleText(elements: unknown[]): string | null { - if (elements.length !== 2 || elements[0] !== FUNCTION_HANDLE_MARKER) { +function functionHandleText(marker: MatVariable | null, elements: unknown[]): string | null { + if (elements.length !== 2 || !marker || marker.isLogical || marker.value !== FUNCTION_HANDLE_MARKER) { return null; } const outer = elements[1] as Record | null; diff --git a/test/complexMcosValue.test.ts b/test/complexMcosValue.test.ts index 936f5b3c..c8f03895 100644 --- a/test/complexMcosValue.test.ts +++ b/test/complexMcosValue.test.ts @@ -43,7 +43,9 @@ describe('formatComplexNum spells one element', () => { // plain .mat variable holding complex(1/3, 0.1) shows. [1 / 3, 0.1, '0.3333333333333333+0.1i'], [2 / 3, -Math.PI, '0.6666666666666666-3.141592653589793i'], - // A single, widened to the double it is: the plain .mat variable's digits too. + // The double a single widens to is spelled as any double is. MatParser no longer hands + // one over (a single shows MATLAB's digits for it, C-033: matSingleDigits.test.ts), so a + // .mat's complex(single(0.1), 0.2) is 0.1+0.2i; this is the formatter on such a double. [Math.fround(0.1), Math.fround(0.2), '0.10000000149011612+0.20000000298023224i'], // String()'s exponent form, as every other number in this package prints. [1e-20, 2e21, '1e-20+2e+21i'], diff --git a/test/fixtures/mcos/make_typed_fixtures.m b/test/fixtures/mcos/make_typed_fixtures.m new file mode 100644 index 00000000..d2636411 --- /dev/null +++ b/test/fixtures/mcos/make_typed_fixtures.m @@ -0,0 +1,369 @@ +function make_typed_fixtures(outDir) + % Copyright 2026 The MathWorks, Inc. + % Authors the typed-MCOS fixtures: Simulink.Parameters whose Value is a REAL number of a + % class other than double (intN, uintN, logical, single), beside double controls and + % plain single variables, written by MATLAB into the four venues that can hold them. + % Run: + % + % mw -using Bmain matlab -nodesktop -batch "cd('/test/fixtures/mcos'); make_typed_fixtures" + % + % (One line, for the reason make_class_fixtures.m gives. Verify by the WROTE lines and + % the trailing MAKE_TYPED_FIXTURES_DONE, not by the exit code; any FAIL line above it + % means a fixture says something other than what this header promises.) An optional + % argument names another folder to write into, so a run can be inspected before it + % replaces what is committed. + % + % Writes five files: + % typed_objects.mat MATLAB's default `save` format (Level 5, not -v7.3) + % typed_ws.slx an empty model whose MODEL WORKSPACE (DataSource 'Model + % File', a part of the .slx itself) holds the same values + % typed_mcos.sldd a data dictionary, FileFormat 'uncompressed-text' + % typed_mcos_binary.sldd the same entries, FileFormat 'compressed-binary', but + % for sSingleSweep (names_in says why) + % typed_fixtures.truth.json MATLAB's answers about each, read back from the file: + % `load`, the model reopened with load_system, and each + % dictionary reopened with Simulink.data.dictionary.open + % + % WHY. Inside an MCOS object (a .mat, a model workspace, a binary dictionary's hex) the + % reader handed a real non-double numeric over as a bare number or list, which the node + % layer reads as a double: an int32 row Value showed class double, a logical row double, + % and a single showed the double it widens to, 3.299999952316284 for single(3.3). Both + % dictionaries hold the same Values typed, and show int32, logical and 3.3. Every name + % here is in every venue (but for sSingleSweep in the binary dictionary), so a venue that + % presents a value differently from another is caught by name. + % + % The truth, per venue, `paths.`: the class of what was read back, and for its + % numbers (a Parameter's Value, or the plain variable itself) `value`: class, size, + % mat2str(v, 'class') and `elements`, column-major, each MATLAB's own exact answer — + % num2str for an integer or logical element, num2hex for a single or a double, + % whose bits are the value, as no decimal spelling is. A value of more than 64 elements + % records its class, size and numel alone. Every venue's value is checked here to be the + % value written, class, size and bits (a FAIL otherwise). + % + % THE DIGITS. A dictionary holds MATLAB's own text for a single, so the sweep below is + % MATLAB's rule for that text, measured: `%.6g` where that is the same single, otherwise + % `%.9g`, and `%.10g` for realmax('single'), whose `%.9g` is past it. + % + % NO ACCOUNT NAME IN ANY FILE, as make_complex_fixtures.m: the model's Creator and + % ModifiedByFormat are a fixed word, USER is that word while a dictionary is written, + % and every file and every part of each package is searched for the account name. + here = fileparts(mfilename('fullpath')); + if nargin < 1 || isempty(outDir) + outDir = here; + end + if ~isfolder(outDir) + mkdir(outDir); + end + failures = {}; + + T = struct(); + T.version = version; + T.release = version('-release'); + T.names = catalog()'; + [T.mat, failures] = write_mat(outDir, failures); + [T.slx, failures] = write_slx(outDir, failures); + [T.text, failures] = write_sldd(outDir, failures, 'typed_mcos.sldd', 'uncompressed-text'); + [T.binary, failures] = write_sldd(outDir, failures, 'typed_mcos_binary.sldd', 'compressed-binary'); + write_json(fullfile(outDir, 'typed_fixtures.truth.json'), T); + + if isempty(failures) + fprintf('MAKE_TYPED_FIXTURES_DONE\n'); + else + fprintf('FAIL %s\n', failures{:}); + fprintf('MAKE_TYPED_FIXTURES_FAILED %d\n', numel(failures)); + end +end + +% --------------------------------------------------------------------------- +% The catalog: one name per value, the same names in every venue. +% --------------------------------------------------------------------------- + +function names = catalog() + names = fieldnames(values())'; +end + +% The names a venue holds: all of them, but for the sweep in the binary dictionary. +% binarySaveKeepsUnedited.test.ts edits every element of every binary fixture, one save +% per edit, and 4,082 of them took three minutes; MATLAB's binary text for the same 4,082 +% singles is its text one (measured when this was written: every element alike). +function names = names_in(format) + names = catalog(); + if strcmp(format, 'compressed-binary') + names = setdiff(names, {'sSingleSweep'}, 'stable'); + end +end + +function S = values() + S = struct(); + % Integers, every shape: scalar, row, column, matrix, N-D, and the two 64-bit + % extremes no double holds. + S.pInt8 = param(int8(-42)); + S.pInt32Row = param(int32([100 200 300 400])); + S.pInt32Col = param(int32([100; 200; 300])); + S.pUint8Mat = param(uint8([1 2; 3 4])); + S.pInt16Nd = param(int16(reshape(1:8, 2, 2, 2))); + S.pUint16Row = param(uint16([0 65535])); + S.pUint64Max = param(intmax('uint64')); + S.pInt64Min = param(intmin('int64')); + % Logical: the scalar was already a boolean everywhere; the row and the column are not. + S.pLogical = param(true); + S.pLogicalRow = param([true false true]); + S.pLogicalCol = param([true; false; true]); + % Single: decimals with no exact binary form, so the widened double shows, and values + % that are exact, which must not move. + S.pSingle = param(single(3.3)); + S.pSingleRow = param(single([1.1 2.2 3.3])); + S.pSingleCol = param(single([0.1; 0.2])); + S.pSingleThird = param(single(1/3)); + S.pSingleExact = param(single([0.5 16777216])); + % Double controls: their presentation must not change. + S.pDouble = param(3.3); + S.pDoubleRow = param([1.1 2.2 3.3]); + S.pDoubleCol = param([1; 2; 3]); + % Plain singles, no object around them. + S.sSingle = single(3.3); + S.sSingleRow = single([1.1 2.2 3.3]); + S.sSingleThird = single(1/3); + % Every 1048577th float32 bit pattern from the smallest subnormal to the largest finite + % one, each with its negation, then realmax and realmin: the digits the text dictionary + % spells every one of them with are MATLAB's rule for a single's text, which a single + % read out of MAT bytes is held to. + sweep = typecast(uint32(1):uint32(1048577):uint32(2139095040), 'single'); + S.sSingleSweep = [sweep, -sweep, realmax('single'), realmin('single')]; + % Singles whose nine-digit spelling is an exact decimal tie: 1000000.125 is halfway + % between 1000000.12 and 1000000.13. + S.sSingleTies = single([1000000.125 1000000.375 1000000.625 -1000000.125 2097151.875]); +end + +function p = param(v) + p = Simulink.Parameter; + p.Value = v; +end + +% --------------------------------------------------------------------------- +% The venues +% --------------------------------------------------------------------------- + +function [T, failures] = write_mat(outDir, failures) + matPath = fullfile(outDir, 'typed_objects.mat'); + if isfile(matPath), delete(matPath); end + vars = values(); + % No version flag: the default, which is what a user's `save` writes. The header is + % checked below. + save(matPath, '-struct', 'vars'); + clear vars + fid = fopen(matPath, 'r'); + hdr = fread(fid, [1 116], 'char=>char'); + fclose(fid); + want = 'MATLAB 5.0 MAT-file'; + if ~startsWith(hdr, want) + failures{end + 1} = sprintf('typed_objects.mat header is "%s"', strtrim(hdr(1:min(end, 40)))); + end + failures = check_no_user(failures, matPath, 'typed_objects.mat', getenv('USER')); + fprintf('WROTE typed_objects.mat bytes=%d\n', dir(matPath).bytes); + [T, failures] = measure('typed_objects.mat', load(matPath), failures); +end + +function [T, failures] = write_slx(outDir, failures) + % The model is named for the file it is saved to: save_system to another name renames + % the block diagram. + mdl = 'typed_ws'; + slxPath = fullfile(outDir, [mdl '.slx']); + if bdIsLoaded(mdl), close_system(mdl, 0); end + if isfile(slxPath), delete(slxPath); end + closer = onCleanup(@() close_if_loaded(mdl)); %#ok + + new_system(mdl); + set_param(mdl, 'Creator', 'fixture', 'ModifiedByFormat', 'fixture'); + ws = get_param(mdl, 'ModelWorkspace'); + if ~strcmp(ws.DataSource, 'Model File') + failures{end + 1} = sprintf('new model workspace DataSource is %s', ws.DataSource); + end + vars = values(); + names = fieldnames(vars); + for i = 1:numel(names) + assignin(ws, names{i}, vars.(names{i})); + end + save_system(mdl, slxPath); + close_system(mdl, 0); + clear vars ws + fprintf('WROTE %s.slx bytes=%d\n', mdl, dir(slxPath).bytes); + failures = zip_no_user(slxPath, [mdl '.slx'], failures, getenv('USER')); + + load_system(slxPath); + ws = get_param(mdl, 'ModelWorkspace'); + dataSource = ws.DataSource; + V = struct(); + for i = 1:numel(names) + V.(names{i}) = getVariable(ws, names{i}); + end + clear ws + close_system(mdl, 0); + [T, failures] = measure([mdl '.slx'], V, failures); + T.dataSource = dataSource; +end + +function close_if_loaded(mdl) + if bdIsLoaded(mdl), close_system(mdl, 0); end +end + +function [T, failures] = write_sldd(outDir, failures, ddName, format) + % MATLAB keys open dictionaries by FILE NAME alone, so everything is closed first. + ddPath = fullfile(outDir, ddName); + Simulink.data.dictionary.closeAll('-discard'); + if isfile(ddPath), delete(ddPath); end + + oldUser = getenv('USER'); + setenv('USER', 'fixture'); + restoreUser = onCleanup(@() setenv('USER', oldUser)); + + vars = values(); + dd = Simulink.data.dictionary.create(ddPath); + ds = getSection(dd, 'Design Data'); + names = names_in(format); + for i = 1:numel(names) + try + addEntry(ds, names{i}, vars.(names{i})); + catch err + failures{end + 1} = sprintf('%s refused entry %s: %s', ddName, names{i}, err.message); %#ok + end + end + % Before saveChanges, which is what decides the bytes. + dd.FileFormat = format; + saveChanges(dd); + clear ds vars + close(dd); + clear dd + Simulink.data.dictionary.closeAll('-discard'); + clear restoreUser + if ~strcmp(getenv('USER'), oldUser) + failures{end + 1} = 'USER was not restored after the dictionary was written'; + end + if strcmp(format, 'compressed-binary') + failures = zip_no_user(ddPath, ddName, failures, oldUser); + else + failures = check_no_user(failures, ddPath, ddName, oldUser); + end + fprintf('WROTE %s bytes=%d\n', ddName, dir(ddPath).bytes); + + dd = Simulink.data.dictionary.open(ddPath); + fileFormat = dd.FileFormat; + if ~strcmp(fileFormat, format) + failures{end + 1} = sprintf('%s reopens as FileFormat %s, written as %s', ddName, fileFormat, format); + end + ds = getSection(dd, 'Design Data'); + V = struct(); + for i = 1:numel(names) + V.(names{i}) = getValue(getEntry(ds, names{i})); + end + clear ds + close(dd); + clear dd + Simulink.data.dictionary.closeAll('-discard'); + [T, failures] = measure(ddName, V, failures, names); + T.fileFormat = fileFormat; +end + +% --------------------------------------------------------------------------- +% Measuring what was read back +% --------------------------------------------------------------------------- + +function [T, failures] = measure(file, V, failures, names) + if nargin < 4 + names = catalog(); + end + T = struct(); + T.file = file; + T.paths = struct(); + built = values(); + for i = 1:numel(names) + n = names{i}; + if ~isfield(V, n) + failures{end + 1} = sprintf('%s does not hold %s', file, n); %#ok + continue + end + x = V.(n); + r = struct(); + r.class = class(x); + if isa(x, 'Simulink.Parameter') + v = x.Value; + b = built.(n).Value; + else + v = x; + b = built.(n); + end + r.value = value_record(v); + % What was read back is what was written, class and bits, or the fixture is not + % the value its name says. + if ~strcmp(class(v), class(b)) || ~isequal(size(v), size(b)) || ~isequal(v, b) + failures{end + 1} = sprintf('%s reads %s back as %s %s', file, n, class(v), mat2str(size(v))); %#ok + end + T.paths.(n) = r; + end +end + +function r = value_record(v) + r = struct(); + r.class = class(v); + r.size = size(v); + % A long value's elements are its bits in the .mat, which `measure` holds every other + % venue to; listing them would make this file the size of the sweep. + if numel(v) > 64 + r.numel = numel(v); + return + end + try + r.mat2str = mat2str(v, 'class'); + catch e + r.mat2str_error = e.message; + end + flat = v(:)'; + e = cell(1, numel(flat)); + for k = 1:numel(flat) + x = flat(k); + if islogical(x) || isinteger(x) + % num2str, not sprintf('%d'): sprintf answers 1.844674e+19 for intmax('uint64'). + e{k} = num2str(x); + else + e{k} = num2hex(x); + end + end + r.elements = e; +end + +% --------------------------------------------------------------------------- +% No account name +% --------------------------------------------------------------------------- + +function failures = check_no_user(failures, path, label, user) + if isempty(user), return, end + fid = fopen(path, 'r'); + bytes = fread(fid, Inf, 'uint8=>char')'; + fclose(fid); + if contains(bytes, user) + failures{end + 1} = sprintf('%s names the account that saved it', label); + end +end + +function failures = zip_no_user(zipPath, label, failures, user) + % A zip: a search of its raw bytes cannot see inside a deflated part, so every part + % is searched unpacked, in a scratch folder removed again before this returns. + tmp = tempname; + mkdir(tmp); + cleanup = onCleanup(@() rmdir(tmp, 's')); %#ok + files = unzip(zipPath, tmp); + for k = 1:numel(files) + if isfile(files{k}) + [~, partName, partExt] = fileparts(files{k}); + failures = check_no_user(failures, files{k}, sprintf('%s part %s%s', label, partName, partExt), user); + end + end +end + +function write_json(path, data) + fid = fopen(path, 'w', 'n', 'UTF-8'); + fprintf(fid, '%s', jsonencode(data, 'PrettyPrint', true)); + fclose(fid); + [~, name, ext] = fileparts(path); + fprintf('WROTE %s%s bytes=%d\n', name, ext, dir(path).bytes); +end diff --git a/test/fixtures/mcos/typed_fixtures.truth.json b/test/fixtures/mcos/typed_fixtures.truth.json new file mode 100644 index 00000000..11e90dfb --- /dev/null +++ b/test/fixtures/mcos/typed_fixtures.truth.json @@ -0,0 +1,1514 @@ +{ + "version": "27.1.0.3409468 (R2027a) Prerelease", + "release": "2027a", + "names": [ + "pInt8", + "pInt32Row", + "pInt32Col", + "pUint8Mat", + "pInt16Nd", + "pUint16Row", + "pUint64Max", + "pInt64Min", + "pLogical", + "pLogicalRow", + "pLogicalCol", + "pSingle", + "pSingleRow", + "pSingleCol", + "pSingleThird", + "pSingleExact", + "pDouble", + "pDoubleRow", + "pDoubleCol", + "sSingle", + "sSingleRow", + "sSingleThird", + "sSingleSweep", + "sSingleTies" + ], + "mat": { + "file": "typed_objects.mat", + "paths": { + "pInt8": { + "class": "Simulink.Parameter", + "value": { + "class": "int8", + "size": [ + 1, + 1 + ], + "mat2str": "int8(-42)", + "elements": [ + "-42" + ] + } + }, + "pInt32Row": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 1, + 4 + ], + "mat2str": "int32([100 200 300 400])", + "elements": [ + "100", + "200", + "300", + "400" + ] + } + }, + "pInt32Col": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 3, + 1 + ], + "mat2str": "int32([100;200;300])", + "elements": [ + "100", + "200", + "300" + ] + } + }, + "pUint8Mat": { + "class": "Simulink.Parameter", + "value": { + "class": "uint8", + "size": [ + 2, + 2 + ], + "mat2str": "uint8([1 2;3 4])", + "elements": [ + "1", + "3", + "2", + "4" + ] + } + }, + "pInt16Nd": { + "class": "Simulink.Parameter", + "value": { + "class": "int16", + "size": [ + 2, + 2, + 2 + ], + "mat2str_error": "Input matrix must be 2-D.", + "elements": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + } + }, + "pUint16Row": { + "class": "Simulink.Parameter", + "value": { + "class": "uint16", + "size": [ + 1, + 2 + ], + "mat2str": "uint16([0 65535])", + "elements": [ + "0", + "65535" + ] + } + }, + "pUint64Max": { + "class": "Simulink.Parameter", + "value": { + "class": "uint64", + "size": [ + 1, + 1 + ], + "mat2str": "uint64(18446744073709551615)", + "elements": [ + "18446744073709551615" + ] + } + }, + "pInt64Min": { + "class": "Simulink.Parameter", + "value": { + "class": "int64", + "size": [ + 1, + 1 + ], + "mat2str": "int64(-9223372036854775808)", + "elements": [ + "-9223372036854775808" + ] + } + }, + "pLogical": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 1 + ], + "mat2str": "logical(true)", + "elements": [ + "1" + ] + } + }, + "pLogicalRow": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 3 + ], + "mat2str": "logical([true false true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pLogicalCol": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 3, + 1 + ], + "mat2str": "logical([true;false;true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pSingle": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "pSingleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "pSingleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 2, + 1 + ], + "mat2str": "single([0.100000001490116;0.200000002980232])", + "elements": [ + "3dcccccd", + "3e4ccccd" + ] + } + }, + "pSingleThird": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "pSingleExact": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 2 + ], + "mat2str": "single([0.5 16777216])", + "elements": [ + "3f000000", + "4b800000" + ] + } + }, + "pDouble": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 1 + ], + "mat2str": "double(3.3)", + "elements": [ + "400a666666666666" + ] + } + }, + "pDoubleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 3 + ], + "mat2str": "double([1.1 2.2 3.3])", + "elements": [ + "3ff199999999999a", + "400199999999999a", + "400a666666666666" + ] + } + }, + "pDoubleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 3, + 1 + ], + "mat2str": "double([1;2;3])", + "elements": [ + "3ff0000000000000", + "4000000000000000", + "4008000000000000" + ] + } + }, + "sSingle": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "sSingleRow": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "sSingleThird": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "sSingleSweep": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 4082 + ], + "numel": 4082 + } + }, + "sSingleTies": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 5 + ], + "mat2str": "single([1000000.125 1000000.375 1000000.625 -1000000.125 2097151.875])", + "elements": [ + "49742402", + "49742406", + "4974240a", + "c9742402", + "49ffffff" + ] + } + } + } + }, + "slx": { + "file": "typed_ws.slx", + "paths": { + "pInt8": { + "class": "Simulink.Parameter", + "value": { + "class": "int8", + "size": [ + 1, + 1 + ], + "mat2str": "int8(-42)", + "elements": [ + "-42" + ] + } + }, + "pInt32Row": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 1, + 4 + ], + "mat2str": "int32([100 200 300 400])", + "elements": [ + "100", + "200", + "300", + "400" + ] + } + }, + "pInt32Col": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 3, + 1 + ], + "mat2str": "int32([100;200;300])", + "elements": [ + "100", + "200", + "300" + ] + } + }, + "pUint8Mat": { + "class": "Simulink.Parameter", + "value": { + "class": "uint8", + "size": [ + 2, + 2 + ], + "mat2str": "uint8([1 2;3 4])", + "elements": [ + "1", + "3", + "2", + "4" + ] + } + }, + "pInt16Nd": { + "class": "Simulink.Parameter", + "value": { + "class": "int16", + "size": [ + 2, + 2, + 2 + ], + "mat2str_error": "Input matrix must be 2-D.", + "elements": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + } + }, + "pUint16Row": { + "class": "Simulink.Parameter", + "value": { + "class": "uint16", + "size": [ + 1, + 2 + ], + "mat2str": "uint16([0 65535])", + "elements": [ + "0", + "65535" + ] + } + }, + "pUint64Max": { + "class": "Simulink.Parameter", + "value": { + "class": "uint64", + "size": [ + 1, + 1 + ], + "mat2str": "uint64(18446744073709551615)", + "elements": [ + "18446744073709551615" + ] + } + }, + "pInt64Min": { + "class": "Simulink.Parameter", + "value": { + "class": "int64", + "size": [ + 1, + 1 + ], + "mat2str": "int64(-9223372036854775808)", + "elements": [ + "-9223372036854775808" + ] + } + }, + "pLogical": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 1 + ], + "mat2str": "logical(true)", + "elements": [ + "1" + ] + } + }, + "pLogicalRow": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 3 + ], + "mat2str": "logical([true false true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pLogicalCol": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 3, + 1 + ], + "mat2str": "logical([true;false;true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pSingle": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "pSingleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "pSingleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 2, + 1 + ], + "mat2str": "single([0.100000001490116;0.200000002980232])", + "elements": [ + "3dcccccd", + "3e4ccccd" + ] + } + }, + "pSingleThird": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "pSingleExact": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 2 + ], + "mat2str": "single([0.5 16777216])", + "elements": [ + "3f000000", + "4b800000" + ] + } + }, + "pDouble": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 1 + ], + "mat2str": "double(3.3)", + "elements": [ + "400a666666666666" + ] + } + }, + "pDoubleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 3 + ], + "mat2str": "double([1.1 2.2 3.3])", + "elements": [ + "3ff199999999999a", + "400199999999999a", + "400a666666666666" + ] + } + }, + "pDoubleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 3, + 1 + ], + "mat2str": "double([1;2;3])", + "elements": [ + "3ff0000000000000", + "4000000000000000", + "4008000000000000" + ] + } + }, + "sSingle": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "sSingleRow": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "sSingleThird": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "sSingleSweep": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 4082 + ], + "numel": 4082 + } + }, + "sSingleTies": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 5 + ], + "mat2str": "single([1000000.125 1000000.375 1000000.625 -1000000.125 2097151.875])", + "elements": [ + "49742402", + "49742406", + "4974240a", + "c9742402", + "49ffffff" + ] + } + } + }, + "dataSource": "Model File" + }, + "text": { + "file": "typed_mcos.sldd", + "paths": { + "pInt8": { + "class": "Simulink.Parameter", + "value": { + "class": "int8", + "size": [ + 1, + 1 + ], + "mat2str": "int8(-42)", + "elements": [ + "-42" + ] + } + }, + "pInt32Row": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 1, + 4 + ], + "mat2str": "int32([100 200 300 400])", + "elements": [ + "100", + "200", + "300", + "400" + ] + } + }, + "pInt32Col": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 3, + 1 + ], + "mat2str": "int32([100;200;300])", + "elements": [ + "100", + "200", + "300" + ] + } + }, + "pUint8Mat": { + "class": "Simulink.Parameter", + "value": { + "class": "uint8", + "size": [ + 2, + 2 + ], + "mat2str": "uint8([1 2;3 4])", + "elements": [ + "1", + "3", + "2", + "4" + ] + } + }, + "pInt16Nd": { + "class": "Simulink.Parameter", + "value": { + "class": "int16", + "size": [ + 2, + 2, + 2 + ], + "mat2str_error": "Input matrix must be 2-D.", + "elements": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + } + }, + "pUint16Row": { + "class": "Simulink.Parameter", + "value": { + "class": "uint16", + "size": [ + 1, + 2 + ], + "mat2str": "uint16([0 65535])", + "elements": [ + "0", + "65535" + ] + } + }, + "pUint64Max": { + "class": "Simulink.Parameter", + "value": { + "class": "uint64", + "size": [ + 1, + 1 + ], + "mat2str": "uint64(18446744073709551615)", + "elements": [ + "18446744073709551615" + ] + } + }, + "pInt64Min": { + "class": "Simulink.Parameter", + "value": { + "class": "int64", + "size": [ + 1, + 1 + ], + "mat2str": "int64(-9223372036854775808)", + "elements": [ + "-9223372036854775808" + ] + } + }, + "pLogical": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 1 + ], + "mat2str": "logical(true)", + "elements": [ + "1" + ] + } + }, + "pLogicalRow": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 3 + ], + "mat2str": "logical([true false true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pLogicalCol": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 3, + 1 + ], + "mat2str": "logical([true;false;true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pSingle": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "pSingleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "pSingleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 2, + 1 + ], + "mat2str": "single([0.100000001490116;0.200000002980232])", + "elements": [ + "3dcccccd", + "3e4ccccd" + ] + } + }, + "pSingleThird": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "pSingleExact": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 2 + ], + "mat2str": "single([0.5 16777216])", + "elements": [ + "3f000000", + "4b800000" + ] + } + }, + "pDouble": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 1 + ], + "mat2str": "double(3.3)", + "elements": [ + "400a666666666666" + ] + } + }, + "pDoubleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 3 + ], + "mat2str": "double([1.1 2.2 3.3])", + "elements": [ + "3ff199999999999a", + "400199999999999a", + "400a666666666666" + ] + } + }, + "pDoubleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 3, + 1 + ], + "mat2str": "double([1;2;3])", + "elements": [ + "3ff0000000000000", + "4000000000000000", + "4008000000000000" + ] + } + }, + "sSingle": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "sSingleRow": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "sSingleThird": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "sSingleSweep": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 4082 + ], + "numel": 4082 + } + }, + "sSingleTies": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 5 + ], + "mat2str": "single([1000000.125 1000000.375 1000000.625 -1000000.125 2097151.875])", + "elements": [ + "49742402", + "49742406", + "4974240a", + "c9742402", + "49ffffff" + ] + } + } + }, + "fileFormat": "uncompressed-text" + }, + "binary": { + "file": "typed_mcos_binary.sldd", + "paths": { + "pInt8": { + "class": "Simulink.Parameter", + "value": { + "class": "int8", + "size": [ + 1, + 1 + ], + "mat2str": "int8(-42)", + "elements": [ + "-42" + ] + } + }, + "pInt32Row": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 1, + 4 + ], + "mat2str": "int32([100 200 300 400])", + "elements": [ + "100", + "200", + "300", + "400" + ] + } + }, + "pInt32Col": { + "class": "Simulink.Parameter", + "value": { + "class": "int32", + "size": [ + 3, + 1 + ], + "mat2str": "int32([100;200;300])", + "elements": [ + "100", + "200", + "300" + ] + } + }, + "pUint8Mat": { + "class": "Simulink.Parameter", + "value": { + "class": "uint8", + "size": [ + 2, + 2 + ], + "mat2str": "uint8([1 2;3 4])", + "elements": [ + "1", + "3", + "2", + "4" + ] + } + }, + "pInt16Nd": { + "class": "Simulink.Parameter", + "value": { + "class": "int16", + "size": [ + 2, + 2, + 2 + ], + "mat2str_error": "Input matrix must be 2-D.", + "elements": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + } + }, + "pUint16Row": { + "class": "Simulink.Parameter", + "value": { + "class": "uint16", + "size": [ + 1, + 2 + ], + "mat2str": "uint16([0 65535])", + "elements": [ + "0", + "65535" + ] + } + }, + "pUint64Max": { + "class": "Simulink.Parameter", + "value": { + "class": "uint64", + "size": [ + 1, + 1 + ], + "mat2str": "uint64(18446744073709551615)", + "elements": [ + "18446744073709551615" + ] + } + }, + "pInt64Min": { + "class": "Simulink.Parameter", + "value": { + "class": "int64", + "size": [ + 1, + 1 + ], + "mat2str": "int64(-9223372036854775808)", + "elements": [ + "-9223372036854775808" + ] + } + }, + "pLogical": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 1 + ], + "mat2str": "logical(true)", + "elements": [ + "1" + ] + } + }, + "pLogicalRow": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 1, + 3 + ], + "mat2str": "logical([true false true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pLogicalCol": { + "class": "Simulink.Parameter", + "value": { + "class": "logical", + "size": [ + 3, + 1 + ], + "mat2str": "logical([true;false;true])", + "elements": [ + "1", + "0", + "1" + ] + } + }, + "pSingle": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "pSingleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "pSingleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 2, + 1 + ], + "mat2str": "single([0.100000001490116;0.200000002980232])", + "elements": [ + "3dcccccd", + "3e4ccccd" + ] + } + }, + "pSingleThird": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "pSingleExact": { + "class": "Simulink.Parameter", + "value": { + "class": "single", + "size": [ + 1, + 2 + ], + "mat2str": "single([0.5 16777216])", + "elements": [ + "3f000000", + "4b800000" + ] + } + }, + "pDouble": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 1 + ], + "mat2str": "double(3.3)", + "elements": [ + "400a666666666666" + ] + } + }, + "pDoubleRow": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 1, + 3 + ], + "mat2str": "double([1.1 2.2 3.3])", + "elements": [ + "3ff199999999999a", + "400199999999999a", + "400a666666666666" + ] + } + }, + "pDoubleCol": { + "class": "Simulink.Parameter", + "value": { + "class": "double", + "size": [ + 3, + 1 + ], + "mat2str": "double([1;2;3])", + "elements": [ + "3ff0000000000000", + "4000000000000000", + "4008000000000000" + ] + } + }, + "sSingle": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(3.29999995231628)", + "elements": [ + "40533333" + ] + } + }, + "sSingleRow": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 3 + ], + "mat2str": "single([1.10000002384186 2.20000004768372 3.29999995231628])", + "elements": [ + "3f8ccccd", + "400ccccd", + "40533333" + ] + } + }, + "sSingleThird": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 1 + ], + "mat2str": "single(0.333333343267441)", + "elements": [ + "3eaaaaab" + ] + } + }, + "sSingleTies": { + "class": "single", + "value": { + "class": "single", + "size": [ + 1, + 5 + ], + "mat2str": "single([1000000.125 1000000.375 1000000.625 -1000000.125 2097151.875])", + "elements": [ + "49742402", + "49742406", + "4974240a", + "c9742402", + "49ffffff" + ] + } + } + }, + "fileFormat": "compressed-binary" + } +} \ No newline at end of file diff --git a/test/fixtures/mcos/typed_mcos.sldd b/test/fixtures/mcos/typed_mcos.sldd new file mode 100644 index 00000000..f7fe763a --- /dev/null +++ b/test/fixtures/mcos/typed_mcos.sldd @@ -0,0 +1,1028 @@ +{ + "__MW_TEXT_COREPROPERTIES__": { + "release": "R2027a" + }, + "__MW_TEXT_PARTS__": { + "__MW_TEXT_PART__/data/chunk0": { + "__MW_TEXT_content": { + "entries": [ + { + "name": "pDouble", + "metadata": { + "uuid": "8375cae0-c8c1-4a33-98c2-698c96706d83", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.628279", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "Dimensions": [ + 1, + 1 + ], + "Value": 3.3 + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pDoubleCol", + "metadata": { + "uuid": "b9d92f99-5489-4402-b870-6a42583b0dd2", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.628727", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "Dimensions": [ + 3, + 1 + ], + "Value": { + "_type": "double", + "_value": "Matrix(3,1)\n[1.0, 2.0, 3.0]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pDoubleRow", + "metadata": { + "uuid": "51e278df-b158-4e38-b2a8-b90fc28e1928", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.628485", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "Dimensions": [ + 1, + 3 + ], + "Value": [ + 1.1, + 2.2, + 3.3 + ] + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pInt16Nd", + "metadata": { + "uuid": "709b4bfa-f936-4ab7-a367-1090bf8a4601", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.623976", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "int16", + "Dimensions": [ + 2, + 2, + 2 + ], + "Value": { + "_type": "cdata", + "_value": " %)30 . 2 8 ( \"@ % # ( \" @ ! , 0 0 \" , ! % 8 !P ( \u0000\u0000\u0000" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pInt32Col", + "metadata": { + "uuid": "b082d3cc-0168-412e-b9e3-55b23e0cc2f9", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.623420", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "int32", + "Dimensions": [ + 3, + 1 + ], + "Value": { + "_type": "int32", + "_value": "Matrix(3,1)\n[100, 200, 300]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pInt32Row", + "metadata": { + "uuid": "d778ef9d-cc7e-4709-bc96-5e12cf917a24", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.623086", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "int32", + "Dimensions": [ + 1, + 4 + ], + "Value": { + "_type": "int32", + "_value": "[100, 200, 300, 400]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pInt64Min", + "metadata": { + "uuid": "697ac370-62a7-40ae-a834-ab8e6af3733b", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.624772", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "int64", + "Dimensions": [ + 1, + 1 + ], + "Value": { + "_type": "int64", + "_value": "-9223372036854775808" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pInt8", + "metadata": { + "uuid": "d9e7a752-e1a7-4293-9db4-edbfd70d9b90", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.620884", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "int8", + "Dimensions": [ + 1, + 1 + ], + "Value": { + "_type": "int8", + "_value": "-42" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pLogical", + "metadata": { + "uuid": "89d5a89a-7d55-488f-b916-2557dbb761d1", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.625095", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "boolean", + "Dimensions": [ + 1, + 1 + ], + "Value": true + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pLogicalCol", + "metadata": { + "uuid": "94577909-c8a4-474e-a0d3-ba79eece3e59", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.625533", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "boolean", + "Dimensions": [ + 3, + 1 + ], + "Value": { + "_type": "logical", + "_value": "Matrix(3,1)\n[1, 0, 1]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pLogicalRow", + "metadata": { + "uuid": "17e5e125-ef54-4796-9e76-2ddb2499d351", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.625295", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "boolean", + "Dimensions": [ + 1, + 3 + ], + "Value": { + "_type": "logical", + "_value": "[1, 0, 1]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pSingle", + "metadata": { + "uuid": "c90d46c6-b032-40d7-ab9c-da111a053643", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.626140", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "single", + "Dimensions": [ + 1, + 1 + ], + "Value": { + "_type": "single", + "_value": "3.3F" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pSingleCol", + "metadata": { + "uuid": "ea566eaa-9396-4b1a-aab4-b99eff60ed6a", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.626727", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "single", + "Dimensions": [ + 2, + 1 + ], + "Value": { + "_type": "single", + "_value": "Matrix(2,1)\n[0.1F, 0.2F]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pSingleExact", + "metadata": { + "uuid": "f019d515-5c71-4d8c-98b7-0ca3942393a3", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.628055", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "single", + "Dimensions": [ + 1, + 2 + ], + "Value": { + "_type": "single", + "_value": "[0.5F, 16777216.0F]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pSingleRow", + "metadata": { + "uuid": "5e0dfa3d-6ecb-4281-982b-844a0789d20b", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.626415", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "single", + "Dimensions": [ + 1, + 3 + ], + "Value": { + "_type": "single", + "_value": "[1.1F, 2.2F, 3.3F]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pSingleThird", + "metadata": { + "uuid": "11cb9878-e4f0-4b8d-957e-31714a2f070e", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.627187", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "single", + "Dimensions": [ + 1, + 1 + ], + "Value": { + "_type": "single", + "_value": "0.333333343F" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pUint16Row", + "metadata": { + "uuid": "d4de8f04-bc2d-4141-97cd-dd44c881bec8", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.624267", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "uint16", + "Dimensions": [ + 1, + 2 + ], + "Value": { + "_type": "uint16", + "_value": "[0U, 65535U]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pUint64Max", + "metadata": { + "uuid": "b730247d-85e1-40c2-92bc-7bc052c01a26", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.624491", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "uint64", + "Dimensions": [ + 1, + 1 + ], + "Value": { + "_type": "uint64", + "_value": "18446744073709551615U" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "pUint8Mat", + "metadata": { + "uuid": "aba95cfe-111a-4ba2-a017-dea8d7744cac", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.623724", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "DataType": "uint8", + "Dimensions": [ + 2, + 2 + ], + "Value": { + "_type": "uint8", + "_value": "Matrix(2,2)\n[[1U, 2U]; [3U, 4U]]" + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "sSingle", + "metadata": { + "uuid": "0f144800-f512-48d6-9146-40c3d6d62e3e", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.628961", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_type": "single", + "_value": "3.3F" + } + }, + { + "name": "sSingleRow", + "metadata": { + "uuid": "df13ff85-e6ee-417a-8b4c-e41ec7bb0a37", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.629459", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_type": "single", + "_value": "[1.1F, 2.2F, 3.3F]" + } + }, + { + "name": "sSingleSweep", + "metadata": { + "uuid": "63860fc0-5f97-417b-92d2-8d879c963bdf", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.630014", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_type": "single", + "_value": "Vector(4082)\n[1.4013e-45F, 1.46937074e-39F, 2.93874e-39F, 4.40811e-39F, 5.87747876e-39F, 7.3468481e-39F, 8.81621744e-39F, \n1.02855868e-38F, 1.17549561e-38F, 1.32243255e-38F, 1.46936948e-38F, 1.61630641e-38F, 1.76324335e-38F, 1.91018028e-38F, \n2.05711722e-38F, 2.20405415e-38F, 2.35099347e-38F, 2.64486733e-38F, 2.9387412e-38F, 3.23261507e-38F, 3.52648894e-38F, \n3.82036281e-38F, 4.11423667e-38F, 4.40811054e-38F, 4.70199142e-38F, 5.28973915e-38F, 5.87748689e-38F, 6.46523462e-38F, \n7.05298236e-38F, 7.64073e-38F, 8.22847783e-38F, 8.81622557e-38F, 9.4039918e-38F, 1.05794873e-37F, 1.17549827e-37F, \n1.29304782e-37F, 1.41059737e-37F, 1.52814692e-37F, 1.64569646e-37F, 1.76324601e-37F, 1.88080015e-37F, 2.11589925e-37F, \n2.35099834e-37F, 2.58609744e-37F, 2.82119653e-37F, 3.05629563e-37F, 3.29139472e-37F, 3.52649381e-37F, 3.76160389e-37F, \n4.23180208e-37F, 4.70200027e-37F, 5.17219846e-37F, 5.64239665e-37F, 6.11259484e-37F, 6.58279303e-37F, 7.05299122e-37F, \n7.52321496e-37F, 8.46361134e-37F, 9.40400772e-37F, 1.03444041e-36F, 1.12848005e-36F, 1.22251969e-36F, 1.31655932e-36F, \n1.41059896e-36F, 1.50464443e-36F, 1.6927237e-36F, 1.88080298e-36F, 2.06888225e-36F, 2.25696153e-36F, 2.44504081e-36F, \n2.63312e-36F, 2.82119936e-36F, 3.00929173e-36F, 3.38545028e-36F, 3.76160883e-36F, 4.13776738e-36F, 4.51392593e-36F, \n4.89008448e-36F, 5.26624303e-36F, 5.64240158e-36F, 6.01858919e-36F, 6.77090629e-36F, 7.52322339e-36F, 8.2755405e-36F, \n9.0278576e-36F, 9.7801747e-36F, 1.05324918e-35F, 1.12848089e-35F, 1.20371899e-35F, 1.35418241e-35F, 1.50464583e-35F, \n1.65510925e-35F, 1.80557267e-35F, 1.95603609e-35F, 2.10649951e-35F, 2.25696293e-35F, 2.40744027e-35F, 2.70836711e-35F, \n3.00929395e-35F, 3.31022079e-35F, 3.61114763e-35F, 3.91207447e-35F, 4.21300131e-35F, 4.51392815e-35F, 4.81488513e-35F, \n5.41673881e-35F, 6.01859249e-35F, 6.62044617e-35F, 7.2223e-35F, 7.82415354e-35F, 8.42600722e-35F, 9.0278609e-35F, \n9.62978e-35F, 1.08334868e-34F, 1.20371942e-34F, 1.32409015e-34F, 1.44446089e-34F, 1.56483163e-34F, 1.68520236e-34F, \n1.8055731e-34F, 1.92595772e-34F, 2.1666992e-34F, 2.40744067e-34F, 2.64818214e-34F, 2.88892362e-34F, 3.12966509e-34F, \n3.37040656e-34F, 3.61114803e-34F, 3.85191912e-34F, 4.33340207e-34F, 4.81488501e-34F, 5.29636796e-34F, 5.7778509e-34F, \n6.25933385e-34F, 6.74081679e-34F, 7.22229974e-34F, 7.70384559e-34F, 8.66681148e-34F, 9.62977737e-34F, 1.05927433e-33F, \n1.15557092e-33F, 1.2518675e-33F, 1.34816409e-33F, 1.44446068e-33F, 1.54077059e-33F, 1.73336377e-33F, 1.92595694e-33F, \n2.11855012e-33F, 2.3111433e-33F, 2.50373648e-33F, 2.69632966e-33F, 2.88892283e-33F, 3.08154411e-33F, 3.46673047e-33F, \n3.85191683e-33F, 4.23710318e-33F, 4.62228954e-33F, 5.0074759e-33F, 5.39266225e-33F, 5.77784861e-33F, 6.16309411e-33F, \n6.93346682e-33F, 7.70383953e-33F, 8.47421224e-33F, 9.24458496e-33F, 1.00149577e-32F, 1.07853304e-32F, 1.15557031e-32F, \n1.23262e-32F, 1.38669454e-32F, 1.54076908e-32F, 1.69484362e-32F, 1.84891817e-32F, 2.00299271e-32F, 2.15706725e-32F, \n2.31114179e-32F, 2.46524234e-32F, 2.77339143e-32F, 3.08154051e-32F, 3.3896896e-32F, 3.69783868e-32F, 4.00598777e-32F, \n4.31413685e-32F, 4.62228594e-32F, 4.93048939e-32F, 5.54678756e-32F, 6.16308573e-32F, 6.7793839e-32F, 7.39568207e-32F, \n8.01198e-32F, 8.62827841e-32F, 9.24457658e-32F, 9.86098819e-32F, 1.10935845e-31F, 1.23261809e-31F, 1.35587772e-31F, \n1.47913735e-31F, 1.60239699e-31F, 1.72565662e-31F, 1.84891626e-31F, 1.97219952e-31F, 2.21871879e-31F, 2.46523805e-31F, \n2.71175732e-31F, 2.95827659e-31F, 3.20479586e-31F, 3.45131513e-31F, 3.69783439e-31F, 3.9444028e-31F, 4.43744133e-31F, \n4.93048e-31F, 5.42351841e-31F, 5.91655694e-31F, 6.40959548e-31F, 6.90263401e-31F, 7.39567255e-31F, 7.88881312e-31F, \n8.87489e-31F, 9.86096726e-31F, 1.08470443e-30F, 1.18331214e-30F, 1.28191985e-30F, 1.38052755e-30F, 1.47913526e-30F, \n1.57776413e-30F, 1.77497954e-30F, 1.97219496e-30F, 2.16941037e-30F, 2.36662579e-30F, 2.5638412e-30F, 2.76105661e-30F, \n2.95827203e-30F, 3.15553127e-30F, 3.54996209e-30F, 3.94439292e-30F, 4.33882375e-30F, 4.73325458e-30F, 5.12768541e-30F, \n5.52211624e-30F, 5.91654707e-30F, 6.31106855e-30F, 7.09993e-30F, 7.88879187e-30F, 8.67765352e-30F, 9.46651518e-30F, \n1.02553768e-29F, 1.10442385e-29F, 1.18331e-29F, 1.26221491e-29F, 1.41998725e-29F, 1.57775958e-29F, 1.73553191e-29F, \n1.89330424e-29F, 2.05107657e-29F, 2.2088489e-29F, 2.36662123e-29F, 2.52443223e-29F, 2.8399769e-29F, 3.15552156e-29F, \n3.47106622e-29F, 3.78661089e-29F, 4.10215555e-29F, 4.41770021e-29F, 4.73324488e-29F, 5.04886928e-29F, 5.67995861e-29F, \n6.31104794e-29F, 6.94213726e-29F, 7.57322659e-29F, 8.20431591e-29F, 8.83540524e-29F, 9.46649457e-29F, 1.00977482e-28F, \n1.13599269e-28F, 1.26221055e-28F, 1.38842842e-28F, 1.51464628e-28F, 1.64086415e-28F, 1.76708201e-28F, 1.89329988e-28F, \n2.01955157e-28F, 2.2719873e-28F, 2.52442303e-28F, 2.77685876e-28F, 3.02929449e-28F, 3.28173022e-28F, 3.53416595e-28F, \n3.78660168e-28F, 4.03910698e-28F, 4.54397844e-28F, 5.04885e-28F, 5.55372137e-28F, 6.05859283e-28F, 6.56346429e-28F, \n7.06833575e-28F, 7.57320721e-28F, 8.07822167e-28F, 9.08796459e-28F, 1.00977075e-27F, 1.11074504e-27F, 1.21171934e-27F, \n1.31269363e-27F, 1.41366792e-27F, 1.51464221e-27F, 1.61564587e-27F, 1.81759446e-27F, 2.01954304e-27F, 2.22149163e-27F, \n2.42344021e-27F, 2.6253888e-27F, 2.82733738e-27F, 3.02928597e-27F, 3.23129483e-27F, 3.635192e-27F, 4.03908917e-27F, \n4.44298634e-27F, 4.84688351e-27F, 5.25078067e-27F, 5.65467784e-27F, 6.05857501e-27F, 6.46259582e-27F, 7.27039e-27F, \n8.0781845e-27F, 8.88597884e-27F, 9.69377317e-27F, 1.05015675e-26F, 1.13093618e-26F, 1.21171562e-26F, 1.2925204e-26F, \n1.45407927e-26F, 1.61563813e-26F, 1.777197e-26F, 1.93875587e-26F, 2.10031473e-26F, 2.2618736e-26F, 2.42343247e-26F, \n2.58504326e-26F, 2.908161e-26F, 3.23127873e-26F, 3.55439647e-26F, 3.8775142e-26F, 4.20063194e-26F, 4.52374967e-26F, \n4.8468674e-26F, 5.17009145e-26F, 5.81632692e-26F, 6.46256239e-26F, 7.10879786e-26F, 7.75503333e-26F, 8.4012688e-26F, \n9.04750427e-26F, 9.69374e-26F, 1.03401928e-25F, 1.16326637e-25F, 1.29251346e-25F, 1.42176056e-25F, 1.55100765e-25F, \n1.68025475e-25F, 1.80950184e-25F, 1.93874893e-25F, 2.06804052e-25F, 2.32653471e-25F, 2.5850289e-25F, 2.84352309e-25F, \n3.10201728e-25F, 3.36051146e-25F, 3.61900565e-25F, 3.87749984e-25F, 4.13608499e-25F, 4.65307337e-25F, 5.17006175e-25F, \n5.68705e-25F, 6.2040385e-25F, 6.72102687e-25F, 7.23801525e-25F, 7.75500362e-25F, 8.27217788e-25F, 9.30615463e-25F, \n1.03401314e-24F, 1.13741081e-24F, 1.24080849e-24F, 1.34420616e-24F, 1.44760384e-24F, 1.55100151e-24F, 1.65443715e-24F, \n1.8612325e-24F, 2.06802785e-24F, 2.2748232e-24F, 2.48161855e-24F, 2.6884139e-24F, 2.89520926e-24F, 3.10200461e-24F, \n3.30887746e-24F, 3.72246816e-24F, 4.13605886e-24F, 4.54964956e-24F, 4.96324026e-24F, 5.37683096e-24F, 5.79042167e-24F, \n6.20401237e-24F, 6.61776123e-24F, 7.44494264e-24F, 8.27212404e-24F, 9.09930544e-24F, 9.92648684e-24F, 1.07536682e-23F, \n1.15808496e-23F, 1.2408031e-23F, 1.32355351e-23F, 1.48898979e-23F, 1.65442607e-23F, 1.81986235e-23F, 1.98529863e-23F, \n2.15073491e-23F, 2.31617119e-23F, 2.48160747e-23F, 2.64710954e-23F, 2.9779821e-23F, 3.30885466e-23F, 3.63972722e-23F, \n3.97059978e-23F, 4.30147234e-23F, 4.63234491e-23F, 4.96321747e-23F, 5.29422413e-23F, 5.95596925e-23F, 6.61771438e-23F, \n7.2794595e-23F, 7.94120462e-23F, 8.60295e-23F, 9.26469486e-23F, 9.92644e-23F, 1.05884584e-22F, 1.19119486e-22F, \n1.32354388e-22F, 1.45589291e-22F, 1.58824193e-22F, 1.72059096e-22F, 1.85294e-22F, 1.98528901e-22F, 2.11769369e-22F, \n2.38239174e-22F, 2.64708979e-22F, 2.91178784e-22F, 3.17648589e-22F, 3.44118393e-22F, 3.70588198e-22F, 3.97058e-22F, \n4.23539142e-22F, 4.76478752e-22F, 5.29418362e-22F, 5.82357971e-22F, 6.35297581e-22F, 6.88237191e-22F, 7.411768e-22F, \n7.9411641e-22F, 8.47079092e-22F, 9.52958312e-22F, 1.05883753e-21F, 1.16471675e-21F, 1.27059597e-21F, 1.37647519e-21F, \n1.48235441e-21F, 1.58823363e-21F, 1.6941598e-21F, 1.90591824e-21F, 2.11767668e-21F, 2.32943512e-21F, 2.54119356e-21F, \n2.75295199e-21F, 2.96471043e-21F, 3.17646887e-21F, 3.38832283e-21F, 3.81183971e-21F, 4.23535659e-21F, 4.65887346e-21F, \n5.08239034e-21F, 5.50590722e-21F, 5.9294241e-21F, 6.35294097e-21F, 6.77665213e-21F, 7.62368588e-21F, 8.47072e-21F, \n9.31775339e-21F, 1.01647871e-20F, 1.10118209e-20F, 1.18588547e-20F, 1.27058884e-20F, 1.35533172e-20F, 1.52473847e-20F, \n1.69414522e-20F, 1.86355197e-20F, 2.03295872e-20F, 2.20236547e-20F, 2.37177222e-20F, 2.54117897e-20F, 2.71066602e-20F, \n3.04947952e-20F, 3.38829302e-20F, 3.72710653e-20F, 4.06592e-20F, 4.40473353e-20F, 4.74354703e-20F, 5.08236053e-20F, \n5.42133721e-20F, 6.09896422e-20F, 6.77659122e-20F, 7.45421822e-20F, 8.13184523e-20F, 8.80947223e-20F, 9.48709924e-20F, \n1.01647262e-19F, 1.08426848e-19F, 1.21979388e-19F, 1.35531928e-19F, 1.49084468e-19F, 1.62637008e-19F, 1.76189548e-19F, \n1.89742088e-19F, 2.03294628e-19F, 2.16853902e-19F, 2.43958982e-19F, 2.71064062e-19F, 2.98169143e-19F, 3.25274223e-19F, \n3.52379303e-19F, 3.79484383e-19F, 4.06589463e-19F, 4.33708218e-19F, 4.87918378e-19F, 5.42128538e-19F, 5.96338699e-19F, \n6.50548859e-19F, 7.04759e-19F, 7.5896918e-19F, 8.1317934e-19F, 8.67417262e-19F, 9.75837583e-19F, 1.0842579e-18F, \n1.19267822e-18F, 1.30109855e-18F, 1.40951887e-18F, 1.51793919e-18F, 1.62635951e-18F, 1.73483618e-18F, 1.95167682e-18F, \n2.16851746e-18F, 2.3853581e-18F, 2.60219874e-18F, 2.81903939e-18F, 3.03588e-18F, 3.25272067e-18F, 3.46967567e-18F, \n3.90335695e-18F, 4.33703823e-18F, 4.77071952e-18F, 5.2044008e-18F, 5.63808208e-18F, 6.07176336e-18F, 6.50544465e-18F, \n6.93935795e-18F, 7.80672052e-18F, 8.67408308e-18F, 9.54144565e-18F, 1.04088082e-17F, 1.12761708e-17F, 1.21435333e-17F, \n1.30108959e-17F, 1.38787291e-17F, 1.56134543e-17F, 1.73481794e-17F, 1.90829045e-17F, 2.08176297e-17F, 2.25523548e-17F, \n2.42870799e-17F, 2.60218051e-17F, 2.77574847e-17F, 3.1226935e-17F, 3.46963853e-17F, 3.81658355e-17F, 4.16352858e-17F, \n4.51047361e-17F, 4.85741863e-17F, 5.20436366e-17F, 5.55150224e-17F, 6.2453923e-17F, 6.93928235e-17F, 7.6331724e-17F, \n8.32706245e-17F, 9.0209525e-17F, 9.71484256e-17F, 1.04087326e-16F, 1.11030151e-16F, 1.24907952e-16F, 1.38785753e-16F, \n1.52663554e-16F, 1.66541355e-16F, 1.80419156e-16F, 1.94296957e-16F, 2.08174758e-16F, 2.22060513e-16F, 2.49816115e-16F, \n2.77571717e-16F, 3.0532732e-16F, 3.33082922e-16F, 3.60838524e-16F, 3.88594126e-16F, 4.16349728e-16F, 4.4412145e-16F, \n4.99632654e-16F, 5.55143858e-16F, 6.10655063e-16F, 6.66166267e-16F, 7.21677471e-16F, 7.77188675e-16F, 8.32699879e-16F, \n8.88243747e-16F, 9.99266155e-16F, 1.11028856e-15F, 1.22131097e-15F, 1.33233338e-15F, 1.44335579e-15F, 1.5543782e-15F, \n1.66540061e-15F, 1.77648919e-15F, 1.998534e-15F, 2.22057882e-15F, 2.44262364e-15F, 2.66466846e-15F, 2.88671327e-15F, \n3.10875809e-15F, 3.33080291e-15F, 3.55298176e-15F, 3.9970714e-15F, 4.44116103e-15F, 4.88525066e-15F, 5.3293403e-15F, \n5.77343e-15F, 6.21751956e-15F, 6.6616092e-15F, 7.10597e-15F, 7.99414957e-15F, 8.88232884e-15F, 9.77050811e-15F, \n1.06586874e-14F, 1.15468666e-14F, 1.24350459e-14F, 1.33232252e-14F, 1.42119542e-14F, 1.59883127e-14F, 1.77646712e-14F, \n1.95410298e-14F, 2.13173883e-14F, 2.30937468e-14F, 2.48701054e-14F, 2.66464639e-14F, 2.84239354e-14F, 3.19766525e-14F, \n3.55293696e-14F, 3.90820866e-14F, 4.26348037e-14F, 4.61875208e-14F, 4.97402378e-14F, 5.32929549e-14F, 5.68479251e-14F, \n6.39533592e-14F, 7.10587933e-14F, 7.81642275e-14F, 8.52696616e-14F, 9.23750957e-14F, 9.94805299e-14F, 1.06585964e-13F, \n1.13695959e-13F, 1.27906827e-13F, 1.42117695e-13F, 1.56328563e-13F, 1.70539432e-13F, 1.847503e-13F, 1.98961168e-13F, \n2.13172036e-13F, 2.27392134e-13F, 2.55813871e-13F, 2.84235607e-13F, 3.12657344e-13F, 3.4107908e-13F, 3.69500817e-13F, \n3.97922553e-13F, 4.2634429e-13F, 4.54784702e-13F, 5.11628175e-13F, 5.68471648e-13F, 6.25315121e-13F, 6.82158594e-13F, \n7.39002067e-13F, 7.9584554e-13F, 8.52689e-13F, 9.09570271e-13F, 1.02325722e-12F, 1.13694416e-12F, 1.25063111e-12F, \n1.36431806e-12F, 1.478005e-12F, 1.59169195e-12F, 1.70537889e-12F, 1.81914228e-12F, 2.04651617e-12F, 2.27389e-12F, \n2.50126395e-12F, 2.72863785e-12F, 2.95601174e-12F, 3.18338563e-12F, 3.41075952e-12F, 3.63828802e-12F, 4.09303581e-12F, \n4.54778359e-12F, 5.00253138e-12F, 5.45727916e-12F, 5.91202694e-12F, 6.36677473e-12F, 6.82152251e-12F, 7.27658298e-12F, \n8.18607855e-12F, 9.09557412e-12F, 1.00050697e-11F, 1.09145653e-11F, 1.18240608e-11F, 1.27335564e-11F, 1.3643052e-11F, \n1.45531798e-11F, 1.6372171e-11F, 1.81911621e-11F, 2.00101533e-11F, 2.18291444e-11F, 2.36481355e-11F, 2.54671267e-11F, \n2.72861178e-11F, 2.91063874e-11F, 3.27443697e-11F, 3.6382352e-11F, 4.00203343e-11F, 4.36583165e-11F, 4.72963e-11F, \n5.09342811e-11F, 5.45722634e-11F, 5.82128304e-11F, 6.54887949e-11F, 7.27647595e-11F, 8.0040724e-11F, 8.73166886e-11F, \n9.45926532e-11F, 1.01868618e-10F, 1.09144582e-10F, 1.16425772e-10F, 1.30977701e-10F, 1.4552963e-10F, 1.60081559e-10F, \n1.74633488e-10F, 1.89185417e-10F, 2.03737346e-10F, 2.18289276e-10F, 2.32851766e-10F, 2.61955624e-10F, 2.91059482e-10F, \n3.2016334e-10F, 3.49267198e-10F, 3.78371057e-10F, 4.07474915e-10F, 4.36578773e-10F, 4.65704e-10F, 5.23911692e-10F, \n5.82119408e-10F, 6.40327125e-10F, 6.98534841e-10F, 7.56742558e-10F, 8.14950274e-10F, 8.73158e-10F, 9.31408839e-10F, \n1.04782427e-9F, 1.1642397e-9F, 1.28065514e-9F, 1.39707057e-9F, 1.513486e-9F, 1.62990144e-9F, 1.74631687e-9F, \n1.86281945e-9F, 2.09565032e-9F, 2.32848119e-9F, 2.56131205e-9F, 2.79414292e-9F, 3.02697378e-9F, 3.25980465e-9F, \n3.49263551e-9F, 3.72564246e-9F, 4.19130419e-9F, 4.65696592e-9F, 5.12262766e-9F, 5.58828939e-9F, 6.05395112e-9F, \n6.51961285e-9F, 6.98527458e-9F, 7.45129203e-9F, 8.38261549e-9F, 9.31393895e-9F, 1.02452624e-8F, 1.11765859e-8F, \n1.21079093e-8F, 1.30392328e-8F, 1.39705563e-8F, 1.49025983e-8F, 1.67652452e-8F, 1.86278921e-8F, 2.0490539e-8F, \n2.2353186e-8F, 2.42158329e-8F, 2.60784798e-8F, 2.79411267e-8F, 2.9805225e-8F, 3.35305188e-8F, 3.72558127e-8F, \n4.09811065e-8F, 4.47064e-8F, 4.84316942e-8F, 5.21569881e-8F, 5.58822819e-8F, 5.96105068e-8F, 6.70610945e-8F, \n7.45116822e-8F, 8.19622699e-8F, 8.94128576e-8F, 9.68634453e-8F, 1.04314033e-7F, 1.11764621e-7F, 1.19221127e-7F, \n1.34122303e-7F, 1.49023478e-7F, 1.63924653e-7F, 1.78825829e-7F, 1.93727e-7F, 2.0862818e-7F, 2.23529355e-7F, \n2.38442482e-7F, 2.68244833e-7F, 2.98047183e-7F, 3.27849534e-7F, 3.57651885e-7F, 3.87454236e-7F, 4.17256587e-7F, \n4.47058937e-7F, 4.76885418e-7F, 5.3649012e-7F, 5.96094822e-7F, 6.55699523e-7F, 7.15304225e-7F, 7.74908926e-7F, \n8.34513628e-7F, 8.9411833e-7F, 9.53771746e-7F, 1.07298115e-6F, 1.19219055e-6F, 1.3114e-6F, 1.43060936e-6F, \n1.54981876e-6F, 1.66902817e-6F, 1.78823757e-6F, 1.90754531e-6F, 2.14596412e-6F, 2.38438292e-6F, 2.62280173e-6F, \n2.86122054e-6F, 3.09963934e-6F, 3.33805815e-6F, 3.57647696e-6F, 3.81509426e-6F, 4.29193187e-6F, 4.76876949e-6F, \n5.2456071e-6F, 5.72244471e-6F, 6.19928232e-6F, 6.67612e-6F, 7.15295755e-6F, 7.6301958e-6F, 8.58387102e-6F, \n9.53754625e-6F, 1.04912215e-5F, 1.14448967e-5F, 1.23985719e-5F, 1.33522472e-5F, 1.43059224e-5F, 1.52604061e-5F, \n1.71677566e-5F, 1.9075107e-5F, 2.09824575e-5F, 2.2889808e-5F, 2.47971584e-5F, 2.67045089e-5F, 2.86118593e-5F, \n3.05208414e-5F, 3.43355423e-5F, 3.81502432e-5F, 4.19649441e-5F, 4.5779645e-5F, 4.95943459e-5F, 5.34090468e-5F, \n5.72237477e-5F, 6.1041741e-5F, 6.86711428e-5F, 7.63005446e-5F, 8.39299464e-5F, 9.15593482e-5F, 9.918875e-5F, \n0.000106818152F, 0.000114447554F, 0.000122083598F, 0.000137342402F, 0.000152601206F, 0.000167860009F, 0.000183118813F, \n0.000198377616F, 0.00021363642F, 0.000228895224F, 0.00024416743F, 0.000274685037F, 0.000305202644F, 0.000335720251F, \n0.000366237859F, 0.000396755466F, 0.000427273073F, 0.00045779068F, 0.000488335325F, 0.000549370539F, 0.000610405754F, \n0.000671440968F, 0.000732476183F, 0.000793511397F, 0.000854546612F, 0.000915581826F, 0.000976671581F, 0.00109874201F, \n0.00122081244F, 0.00134288287F, 0.0014649533F, 0.00158702373F, 0.00170909415F, 0.00183116458F, 0.00195334502F, \n0.00219748588F, 0.00244162674F, 0.0026857676F, 0.00292990846F, 0.00317404931F, 0.00341819017F, 0.00366233103F, \n0.00390669378F, 0.00439497549F, 0.00488325721F, 0.00537153892F, 0.00585982064F, 0.00634810235F, 0.00683638407F, \n0.00732466578F, 0.007813395F, 0.00878995843F, 0.00976652186F, 0.0107430853F, 0.0117196487F, 0.0126962122F, \n0.0136727756F, 0.014649339F, 0.0156268049F, 0.0175799318F, 0.0195330586F, 0.0214861855F, 0.0234393124F, 0.0253924392F, \n0.0273455661F, 0.0292986929F, 0.0312536396F, 0.0351598933F, 0.0390661471F, 0.0429724F, 0.0468786545F, 0.0507849082F, \n0.054691162F, 0.0585974157F, 0.0625073388F, 0.0703198463F, 0.0781323537F, 0.0859448612F, 0.0937573686F, 0.101569876F, \n0.109382384F, 0.117194891F, 0.125014797F, 0.140639812F, 0.156264827F, 0.171889842F, 0.187514856F, 0.203139871F, \n0.218764886F, 0.234389901F, 0.250029832F, 0.281279862F, 0.312529892F, 0.343779922F, 0.375029951F, 0.406279981F, \n0.43753F, 0.468780041F, 0.500060141F, 0.562560201F, 0.62506026F, 0.68756032F, 0.75006038F, 0.812560439F, 0.875060499F, \n0.937560558F, 1.00012124F, 1.12512136F, 1.25012147F, 1.37512159F, 1.50012171F, 1.62512183F, 1.75012195F, 1.87512207F, \n2.00024438F, 2.25024462F, 2.50024486F, 2.75024509F, 3.00024533F, 3.25024557F, 3.50024581F, 3.75024605F, 4.00049257F, \n4.50049305F, 5.00049353F, 5.500494F, 6.00049448F, 6.50049496F, 7.00049543F, 7.50049591F, 8.00099277F, 9.00099373F, \n10.0009947F, 11.0009956F, 12.0009966F, 13.0009975F, 14.0009985F, 15.0009995F, 16.002F, 18.0020027F, 20.0020046F, \n22.0020065F, 24.0020084F, 26.0020103F, 28.0020123F, 30.0020142F, 32.0040321F, 36.0040359F, 40.0040398F, 44.0040436F, \n48.0040474F, 52.0040512F, 56.004055F, 60.0040588F, 64.0081253F, 72.0081329F, 80.0081406F, 88.0081482F, 96.0081558F, \n104.008163F, 112.008171F, 120.008179F, 128.016373F, 144.016388F, 160.016403F, 176.016418F, 192.016434F, 208.016449F, \n224.016464F, 240.016479F, 256.033F, 288.03302F, 320.033051F, 352.033081F, 384.033112F, 416.033142F, 448.033173F, \n480.033203F, 512.066467F, 576.066528F, 640.066589F, 704.06665F, 768.066711F, 832.066772F, 896.066833F, 960.066895F, \n1024.13391F, 1152.13403F, 1280.13416F, 1408.13428F, 1536.1344F, 1664.13452F, 1792.13464F, 1920.13477F, 2048.26978F, \n2304.27F, 2560.27026F, 2816.27051F, 3072.27075F, 3328.271F, 3584.27124F, 3840.27148F, 4096.54346F, 4608.54395F, \n5120.54443F, 5632.54492F, 6144.54541F, 6656.5459F, 7168.54639F, 7680.54688F, 8193.09473F, 9217.0957F, 10241.0967F, \n11265.0977F, 12289.0986F, 13313.1F, 14337.1006F, 15361.1016F, 16386.2051F, 18434.207F, 20482.209F, 22530.2109F, \n24578.2129F, 26626.2148F, 28674.2168F, 30722.2188F, 32772.4414F, 36868.4453F, 40964.4492F, 45060.4531F, 49156.457F, \n53252.4609F, 57348.4648F, 61444.4688F, 65544.9453F, 73736.9531F, 81928.9609F, 90120.9688F, 98312.9766F, 106504.984F, \n114696.992F, 122889.0F, 131090.016F, 147474.031F, 163858.047F, 180242.062F, 196626.078F, 213010.094F, 229394.109F, \n245778.125F, 262180.281F, 294948.312F, 327716.344F, 360484.375F, 393252.406F, 426020.438F, 458788.469F, 491556.5F, \n524361.062F, 589897.125F, 655433.188F, 720969.25F, 786505.312F, 852041.375F, 917577.438F, 983113.5F, 1048723.12F, \n1179795.25F, 1310867.38F, 1441939.5F, 1573011.62F, 1704083.75F, 1835155.88F, 1966228.0F, 2097448.25F, 2359592.5F, \n2621736.75F, 2883881.0F, 3146025.25F, 3408169.5F, 3670313.75F, 3932458.0F, 4194900.5F, 4719189.0F, 5243477.5F, \n5767766.0F, 6292054.5F, 6816343.0F, 7340631.5F, 7.86492e+6F, 8389809.0F, 9438386.0F, 10486963.0F, 11535540.0F, \n12584117.0F, 13632694.0F, 14681271.0F, 15729848.0F, 16779634.0F, 18876788.0F, 20973942.0F, 23071096.0F, 25168250.0F, \n27265404.0F, 29362558.0F, 31459712.0F, 3.35593e+7F, 37753608.0F, 41947916.0F, 46142224.0F, 50336532.0F, 54530840.0F, \n58725148.0F, 62919456.0F, 67118664.0F, 75507280.0F, 83895896.0F, 92284512.0F, 100673128.0F, 109061744.0F, \n117450360.0F, 125838976.0F, 134237456.0F, 151014688.0F, 167791920.0F, 184569152.0F, 201346384.0F, 218123616.0F, \n234900848.0F, 251678080.0F, 268475168.0F, 302029632.0F, 335584096.0F, 369138560.0F, 402693024.0F, 436247488.0F, \n469801952.0F, 503356416.0F, 536950848.0F, 604059776.0F, 671168704.0F, 738277632.0F, 805386560.0F, 872495488.0F, \n939604416.0F, 1.00671334e+9F, 1.07390272e+9F, 1.20812058e+9F, 1.34233843e+9F, 1.47655629e+9F, 1.61077414e+9F, \n1.744992e+9F, 1.87920986e+9F, 2.01342771e+9F, 2.14780749e+9F, 2.4162432e+9F, 2.68467891e+9F, 2.95311462e+9F, \n3.22155034e+9F, 3.48998605e+9F, 3.75842176e+9F, 4.02685747e+9F, 4.29561907e+9F, 4.8324905e+9F, 5.36936192e+9F, \n5.90623334e+9F, 6.44310477e+9F, 6.97997619e+9F, 7.51684762e+9F, 8.05371904e+9F, 8.59124634e+9F, 9.66498918e+9F, \n1.0738732e+10F, 1.18124749e+10F, 1.28862177e+10F, 1.39599606e+10F, 1.50337034e+10F, 1.61074463e+10F, 1.71825091e+10F, \n1.93299948e+10F, 2.14774804e+10F, 2.36249661e+10F, 2.57724518e+10F, 2.79199375e+10F, 3.00674232e+10F, 3.22149089e+10F, \n3.43650509e+10F, 3.86600223e+10F, 4.29549937e+10F, 4.72499651e+10F, 5.15449364e+10F, 5.58399078e+10F, 6.01348792e+10F, \n6.44298506e+10F, 6.87301673e+10F, 7.73201101e+10F, 8.59100529e+10F, 9.44999956e+10F, 1.03089938e+11F, 1.11679881e+11F, \n1.20269824e+11F, 1.28859767e+11F, 1.37460466e+11F, 1.54640351e+11F, 1.71820237e+11F, 1.89000122e+11F, 2.0618e+11F, \n2.23359894e+11F, 2.40539779e+11F, 2.57719665e+11F, 2.74921193e+11F, 3.09280965e+11F, 3.43640736e+11F, 3.78000507e+11F, \n4.12360278e+11F, 4.46720049e+11F, 4.8107982e+11F, 5.15439591e+11F, 5.49842911e+11F, 6.18562454e+11F, 6.87282e+11F, \n7.56001538e+11F, 8.2472108e+11F, 8.93440623e+11F, 9.62160165e+11F, 1.03087971e+12F, 1.09968687e+12F, 1.23712596e+12F, \n1.37456504e+12F, 1.51200412e+12F, 1.64944321e+12F, 1.78688229e+12F, 1.92432138e+12F, 2.06176046e+12F, 2.19937584e+12F, \n2.47425401e+12F, 2.74913218e+12F, 3.02401035e+12F, 3.29888852e+12F, 3.57376668e+12F, 3.84864485e+12F, 4.12352302e+12F, \n4.39875587e+12F, 4.94851221e+12F, 5.49826855e+12F, 6.04802489e+12F, 6.59778123e+12F, 7.14753756e+12F, 7.6972939e+12F, \n8.24705e+12F, 8.79752e+12F, 9.89703281e+12F, 1.09965455e+13F, 1.20960582e+13F, 1.31955708e+13F, 1.42950835e+13F, \n1.53945962e+13F, 1.64941089e+13F, 1.7595057e+13F, 1.97940824e+13F, 2.19931078e+13F, 2.41921331e+13F, 2.63911585e+13F, \n2.85901838e+13F, 3.07892092e+13F, 3.29882345e+13F, 3.51901476e+13F, 3.95882e+13F, 4.39862491e+13F, 4.83843e+13F, \n5.27823505e+13F, 5.71804e+13F, 6.15784519e+13F, 6.59765026e+13F, 7.03803624e+13F, 7.91764638e+13F, 8.79725652e+13F, \n9.67686666e+13F, 1.05564768e+14F, 1.14360869e+14F, 1.23156971e+14F, 1.31953072e+14F, 1.40760859e+14F, 1.58353062e+14F, \n1.75945265e+14F, 1.93537467e+14F, 2.1112967e+14F, 2.28721873e+14F, 2.46314076e+14F, 2.63906279e+14F, 2.81522e+14F, \n3.16706392e+14F, 3.51890798e+14F, 3.87075203e+14F, 4.22259609e+14F, 4.57444e+14F, 4.9262842e+14F, 5.27812826e+14F, \n5.6304451e+14F, 6.33413321e+14F, 7.03782132e+14F, 7.74150944e+14F, 8.44519755e+14F, 9.14888566e+14F, 9.85257378e+14F, \n1.05562619e+15F, 1.12609009e+15F, 1.26682772e+15F, 1.40756534e+15F, 1.54830296e+15F, 1.68904058e+15F, 1.82977821e+15F, \n1.97051583e+15F, 2.11125345e+15F, 2.25218233e+15F, 2.53365758e+15F, 2.81513282e+15F, 3.09660807e+15F, 3.37808331e+15F, \n3.65955856e+15F, 3.94103381e+15F, 4.22250905e+15F, 4.50436896e+15F, 5.06731945e+15F, 5.63027e+15F, 6.19322043e+15F, \n6.75617092e+15F, 7.31912141e+15F, 7.88207191e+15F, 8.4450224e+15F, 9.00874652e+15F, 1.01346475e+16F, 1.12605485e+16F, \n1.23864495e+16F, 1.35123504e+16F, 1.46382514e+16F, 1.57641524e+16F, 1.68900534e+16F, 1.80175102e+16F, 2.02693122e+16F, \n2.25211141e+16F, 2.47729161e+16F, 2.70247181e+16F, 2.927652e+16F, 3.1528322e+16F, 3.37801239e+16F, 3.60350548e+16F, \n4.05386587e+16F, 4.50422626e+16F, 4.95458666e+16F, 5.40494705e+16F, 5.85530744e+16F, 6.30566783e+16F, 6.75602822e+16F, \n7.20701783e+16F, 8.10773861e+16F, 9.0084594e+16F, 9.90918e+16F, 1.0809901e+17F, 1.17106218e+17F, 1.26113425e+17F, \n1.35120633e+17F, 1.44140494e+17F, 1.6215491e+17F, 1.80169325e+17F, 1.98183741e+17F, 2.16198157e+17F, 2.34212572e+17F, \n2.52226988e+17F, 2.70241404e+17F, 2.88281263e+17F, 3.24310094e+17F, 3.60338926e+17F, 3.96367757e+17F, 4.32396588e+17F, \n4.6842542e+17F, 5.04454251e+17F, 5.40483083e+17F, 5.76563076e+17F, 6.48620738e+17F, 7.20678401e+17F, 7.92736064e+17F, \n8.64793727e+17F, 9.36851389e+17F, 1.00890905e+18F, 1.08096671e+18F, 1.15312725e+18F, 1.29724258e+18F, 1.4413579e+18F, \n1.58547323e+18F, 1.72958855e+18F, 1.87370388e+18F, 2.0178192e+18F, 2.16193453e+18F, 2.3062567e+18F, 2.59448735e+18F, \n2.882718e+18F, 3.17094865e+18F, 3.4591793e+18F, 3.74741e+18F, 4.03564061e+18F, 4.32387126e+18F, 4.6125178e+18F, \n5.1889791e+18F, 5.7654404e+18F, 6.34190171e+18F, 6.91836301e+18F, 7.49482431e+18F, 8.07128561e+18F, 8.64774691e+18F, \n9.22504439e+18F, 1.0377967e+19F, 1.15308896e+19F, 1.26838122e+19F, 1.38367348e+19F, 1.49896574e+19F, 1.614258e+19F, \n1.72955026e+19F, 1.84501064e+19F, 2.07559516e+19F, 2.30617968e+19F, 2.5367642e+19F, 2.76734872e+19F, 2.99793324e+19F, \n3.22851776e+19F, 3.45910228e+19F, 3.69002479e+19F, 4.15119384e+19F, 4.61236288e+19F, 5.07353192e+19F, 5.53470096e+19F, \n5.99587e+19F, 6.45703904e+19F, 6.91820809e+19F, 7.38005663e+19F, 8.30239471e+19F, 9.22473279e+19F, 1.01470709e+20F, \n1.1069409e+20F, 1.1991747e+20F, 1.29140851e+20F, 1.38364232e+20F, 1.47601273e+20F, 1.66048035e+20F, 1.84494797e+20F, \n2.02941558e+20F, 2.2138832e+20F, 2.39835082e+20F, 2.58281843e+20F, 2.76728605e+20F, 2.95202828e+20F, 3.32096351e+20F, \n3.68989875e+20F, 4.05883398e+20F, 4.42776921e+20F, 4.79670445e+20F, 5.16563968e+20F, 5.53457491e+20F, 5.90406219e+20F, \n6.64193266e+20F, 7.37980312e+20F, 8.11767359e+20F, 8.85554406e+20F, 9.59341452e+20F, 1.0331285e+21F, 1.10691555e+21F, \n1.18081356e+21F, 1.32838766e+21F, 1.47596175e+21F, 1.62353584e+21F, 1.77111e+21F, 1.91868403e+21F, 2.06625812e+21F, \n2.21383222e+21F, 2.36162938e+21F, 2.65677757e+21F, 2.95192575e+21F, 3.24707394e+21F, 3.54222213e+21F, 3.83737031e+21F, \n4.1325185e+21F, 4.42766669e+21F, 4.72326326e+21F, 5.31355964e+21F, 5.90385601e+21F, 6.49415238e+21F, 7.08444876e+21F, \n7.67474513e+21F, 8.2650415e+21F, 8.85533788e+21F, 9.44653553e+21F, 1.06271283e+22F, 1.1807721e+22F, 1.29883138e+22F, \n1.41689065e+22F, 1.53494993e+22F, 1.6530092e+22F, 1.77106848e+22F, 1.88930891e+22F, 2.12542746e+22F, 2.36154601e+22F, \n2.59766456e+22F, 2.83378311e+22F, 3.06990165e+22F, 3.3060202e+22F, 3.54213875e+22F, 3.77862142e+22F, 4.25085852e+22F, \n4.72309562e+22F, 5.19533271e+22F, 5.66757e+22F, 6.13980691e+22F, 6.61204401e+22F, 7.08428111e+22F, 7.55725e+22F, \n8.50172424e+22F, 9.44619844e+22F, 1.03906726e+23F, 1.13351468e+23F, 1.2279621e+23F, 1.32240952e+23F, 1.41685694e+23F, \n1.51145145e+23F, 1.70034629e+23F, 1.88924113e+23F, 2.07813597e+23F, 2.26703081e+23F, 2.45592565e+23F, 2.64482049e+23F, \n2.83371533e+23F, 3.02290578e+23F, 3.40069546e+23F, 3.77848514e+23F, 4.15627482e+23F, 4.5340645e+23F, 4.91185418e+23F, \n5.28964386e+23F, 5.66743353e+23F, 6.04581733e+23F, 6.80139669e+23F, 7.55697604e+23F, 8.3125554e+23F, 9.06813476e+23F, \n9.82371412e+23F, 1.05792935e+24F, 1.13348728e+24F, 1.20916462e+24F, 1.36028049e+24F, 1.51139636e+24F, 1.66251223e+24F, \n1.8136281e+24F, 1.96474398e+24F, 2.11585985e+24F, 2.26697572e+24F, 2.41833154e+24F, 2.72056329e+24F, 3.02279503e+24F, \n3.32502677e+24F, 3.62725852e+24F, 3.92949026e+24F, 4.231722e+24F, 4.53395374e+24F, 4.8366677e+24F, 5.44113118e+24F, \n6.04559467e+24F, 6.65005816e+24F, 7.25452164e+24F, 7.85898513e+24F, 8.46344861e+24F, 9.0679121e+24F, 9.67334462e+24F, \n1.08822716e+25F, 1.20911986e+25F, 1.33001255e+25F, 1.45090525e+25F, 1.57179795e+25F, 1.69269065e+25F, 1.81358334e+25F, \n1.93467077e+25F, 2.17645616e+25F, 2.41824156e+25F, 2.66002695e+25F, 2.90181235e+25F, 3.14359774e+25F, 3.38538314e+25F, \n3.62716853e+25F, 3.86934523e+25F, 4.35291601e+25F, 4.8364868e+25F, 5.32005759e+25F, 5.80362838e+25F, 6.28719917e+25F, \n6.77077e+25F, 7.25434075e+25F, 7.73869783e+25F, 8.70583941e+25F, 9.67298099e+25F, 1.06401226e+26F, 1.16072641e+26F, \n1.25744057e+26F, 1.35415473e+26F, 1.45086889e+26F, 1.54774104e+26F, 1.74116936e+26F, 1.93459767e+26F, 2.12802599e+26F, \n2.3214543e+26F, 2.51488262e+26F, 2.70831094e+26F, 2.90173925e+26F, 3.09548504e+26F, 3.48234167e+26F, 3.8691983e+26F, \n4.25605493e+26F, 4.64291156e+26F, 5.02976819e+26F, 5.41662482e+26F, 5.80348145e+26F, 6.19097597e+26F, 6.96468924e+26F, \n7.7384025e+26F, 8.51211576e+26F, 9.28582902e+26F, 1.00595423e+27F, 1.08332555e+27F, 1.16069688e+27F, 1.23819638e+27F, \n1.39293903e+27F, 1.54768168e+27F, 1.70242433e+27F, 1.85716699e+27F, 2.01190964e+27F, 2.16665229e+27F, 2.32139494e+27F, \n2.47639511e+27F, 2.78588042e+27F, 3.09536572e+27F, 3.40485103e+27F, 3.71433633e+27F, 4.02382164e+27F, 4.33330694e+27F, \n4.64279225e+27F, 4.95279495e+27F, 5.57176556e+27F, 6.19073617e+27F, 6.80970678e+27F, 7.42867739e+27F, 8.047648e+27F, \n8.66661861e+27F, 9.28558922e+27F, 9.90559934e+27F, 1.11435406e+28F, 1.23814818e+28F, 1.3619423e+28F, 1.48573642e+28F, \n1.60953054e+28F, 1.73332467e+28F, 1.85711879e+28F, 1.98112176e+28F, 2.22871e+28F, 2.47629824e+28F, 2.72388649e+28F, \n2.97147473e+28F, 3.21906298e+28F, 3.46665122e+28F, 3.71423946e+28F, 3.96224729e+28F, 4.45742378e+28F, 4.95260027e+28F, \n5.44777675e+28F, 5.94295324e+28F, 6.43812973e+28F, 6.93330622e+28F, 7.42848271e+28F, 7.92450214e+28F, 8.91485511e+28F, \n9.90520809e+28F, 1.08955611e+29F, 1.1885914e+29F, 1.2876267e+29F, 1.386662e+29F, 1.4856973e+29F, 1.58490194e+29F, \n1.78297253e+29F, 1.98104313e+29F, 2.17911372e+29F, 2.37718432e+29F, 2.57525491e+29F, 2.77332551e+29F, 2.9713961e+29F, \n3.1698069e+29F, 3.56594809e+29F, 3.96208928e+29F, 4.35823047e+29F, 4.75437166e+29F, 5.15051285e+29F, 5.54665404e+29F, \n5.94279523e+29F, 6.33962e+29F, 7.13190222e+29F, 7.9241846e+29F, 8.71646699e+29F, 9.50874937e+29F, 1.03010317e+30F, \n1.10933141e+30F, 1.18855965e+30F, 1.26792518e+30F, 1.42638165e+30F, 1.58483813e+30F, 1.74329461e+30F, 1.90175108e+30F, \n2.06020756e+30F, 2.21866403e+30F, 2.37712051e+30F, 2.53585277e+30F, 2.85276573e+30F, 3.16967868e+30F, 3.48659163e+30F, \n3.80350458e+30F, 4.12041753e+30F, 4.43733049e+30F, 4.75424344e+30F, 5.07171038e+30F, 5.70553629e+30F, 6.33936219e+30F, \n6.9731881e+30F, 7.607014e+30F, 8.24084e+30F, 8.87466581e+30F, 9.50849171e+30F, 1.01434304e+31F, 1.14110822e+31F, \n1.26787341e+31F, 1.39463859e+31F, 1.52140377e+31F, 1.64816895e+31F, 1.77493413e+31F, 1.90169931e+31F, 2.02868802e+31F, \n2.28221838e+31F, 2.53574874e+31F, 2.78927911e+31F, 3.04280947e+31F, 3.29633983e+31F, 3.54987019e+31F, 3.80340055e+31F, \n4.05738e+31F, 4.56444063e+31F, 5.07150136e+31F, 5.57856208e+31F, 6.08562281e+31F, 6.59268353e+31F, 7.09974425e+31F, \n7.60680498e+31F, 8.11476756e+31F, 9.12888901e+31F, 1.01430105e+32F, 1.11571319e+32F, 1.21712533e+32F, 1.31853748e+32F, \n1.41994962e+32F, 1.52136177e+32F, 1.62295506e+32F, 1.82577935e+32F, 2.02860364e+32F, 2.23142793e+32F, 2.43425222e+32F, \n2.63707651e+32F, 2.8399008e+32F, 3.04272509e+32F, 3.24591321e+32F, 3.65156179e+32F, 4.05721037e+32F, 4.46285895e+32F, \n4.86850753e+32F, 5.27415611e+32F, 5.67980469e+32F, 6.08545327e+32F, 6.49183262e+32F, 7.30313e+32F, 8.11442693e+32F, \n8.92572409e+32F, 9.73702125e+32F, 1.05483184e+33F, 1.13596156e+33F, 1.21709127e+33F, 1.29836776e+33F, 1.46062719e+33F, \n1.62288662e+33F, 1.78514606e+33F, 1.94740549e+33F, 2.10966492e+33F, 2.27192435e+33F, 2.43418378e+33F, 2.596738e+33F, \n2.92125686e+33F, 3.24577572e+33F, 3.57029459e+33F, 3.89481345e+33F, 4.21933231e+33F, 4.54385118e+33F, 4.86837e+33F, \n5.19348095e+33F, 5.84251867e+33F, 6.4915564e+33F, 7.14059413e+33F, 7.78963185e+33F, 8.43866958e+33F, 9.08770731e+33F, \n9.73674503e+33F, 1.03869718e+34F, 1.16850473e+34F, 1.29831227e+34F, 1.42811982e+34F, 1.55792736e+34F, 1.68773491e+34F, \n1.81754245e+34F, 1.94735e+34F, 2.07739634e+34F, 2.33701143e+34F, 2.59662652e+34F, 2.85624161e+34F, 3.1158567e+34F, \n3.37547179e+34F, 3.63508688e+34F, 3.89470197e+34F, 4.15479664e+34F, 4.67402682e+34F, 5.193257e+34F, 5.71248719e+34F, \n6.23171737e+34F, 6.75094755e+34F, 7.27017773e+34F, 7.78940791e+34F, 8.30960121e+34F, 9.34806157e+34F, 1.03865219e+35F, \n1.14249823e+35F, 1.24634427e+35F, 1.3501903e+35F, 1.45403634e+35F, 1.55788237e+35F, 1.66192183e+35F, 1.8696139e+35F, \n2.07730597e+35F, 2.28499804e+35F, 2.49269012e+35F, 2.70038219e+35F, 2.90807426e+35F, 3.11576633e+35F, 3.32384682e+35F, \n3.73923097e+35F, 4.15461511e+35F, 4.56999926e+35F, 4.9853834e+35F, 5.40076755e+35F, 5.81615169e+35F, 6.23153584e+35F, \n6.6477e+35F, 7.47846827e+35F, 8.30923656e+35F, 9.14000485e+35F, 9.97077314e+35F, 1.08015414e+36F, 1.16323097e+36F, \n1.2463078e+36F, 1.32954126e+36F, 1.49569492e+36F, 1.66184858e+36F, 1.82800224e+36F, 1.9941559e+36F, 2.16030955e+36F, \n2.32646321e+36F, 2.49261687e+36F, 2.65908506e+36F, 2.99139238e+36F, 3.32369969e+36F, 3.65600701e+36F, 3.98831433e+36F, \n4.32062164e+36F, 4.65292896e+36F, 4.98523627e+36F, 5.3181752e+36F, 5.98279e+36F, 6.64740446e+36F, 7.31201909e+36F, \n7.97663372e+36F, 8.64124836e+36F, 9.30586299e+36F, 9.97047762e+36F, 1.06363605e+37F, 1.19655898e+37F, 1.32948191e+37F, \n1.46240483e+37F, 1.59532776e+37F, 1.72825069e+37F, 1.86117361e+37F, 1.99409654e+37F, 2.12727414e+37F, 2.39312e+37F, \n2.65896584e+37F, 2.92481169e+37F, 3.19065755e+37F, 3.4565034e+37F, 3.72234925e+37F, 3.9881951e+37F, 4.25455233e+37F, \n4.78624403e+37F, 5.31793574e+37F, 5.84962744e+37F, 6.38131915e+37F, 6.91301085e+37F, 7.44470256e+37F, 7.97639426e+37F, \n8.50911277e+37F, 9.57249618e+37F, 1.06358796e+38F, 1.1699263e+38F, 1.27626464e+38F, 1.38260298e+38F, 1.48894132e+38F, \n1.59527966e+38F, 1.70182418e+38F, 1.91450086e+38F, 2.12717754e+38F, 2.33985422e+38F, 2.5525309e+38F, 2.76520759e+38F, \n2.97788427e+38F, 3.19056095e+38F, -1.4013e-45F, -1.46937074e-39F, -2.93874e-39F, -4.40811e-39F, -5.87747876e-39F, \n-7.3468481e-39F, -8.81621744e-39F, -1.02855868e-38F, -1.17549561e-38F, -1.32243255e-38F, -1.46936948e-38F, \n-1.61630641e-38F, -1.76324335e-38F, -1.91018028e-38F, -2.05711722e-38F, -2.20405415e-38F, -2.35099347e-38F, \n-2.64486733e-38F, -2.9387412e-38F, -3.23261507e-38F, -3.52648894e-38F, -3.82036281e-38F, -4.11423667e-38F, \n-4.40811054e-38F, -4.70199142e-38F, -5.28973915e-38F, -5.87748689e-38F, -6.46523462e-38F, -7.05298236e-38F, \n-7.64073e-38F, -8.22847783e-38F, -8.81622557e-38F, -9.4039918e-38F, -1.05794873e-37F, -1.17549827e-37F, \n-1.29304782e-37F, -1.41059737e-37F, -1.52814692e-37F, -1.64569646e-37F, -1.76324601e-37F, -1.88080015e-37F, \n-2.11589925e-37F, -2.35099834e-37F, -2.58609744e-37F, -2.82119653e-37F, -3.05629563e-37F, -3.29139472e-37F, \n-3.52649381e-37F, -3.76160389e-37F, -4.23180208e-37F, -4.70200027e-37F, -5.17219846e-37F, -5.64239665e-37F, \n-6.11259484e-37F, -6.58279303e-37F, -7.05299122e-37F, -7.52321496e-37F, -8.46361134e-37F, -9.40400772e-37F, \n-1.03444041e-36F, -1.12848005e-36F, -1.22251969e-36F, -1.31655932e-36F, -1.41059896e-36F, -1.50464443e-36F, \n-1.6927237e-36F, -1.88080298e-36F, -2.06888225e-36F, -2.25696153e-36F, -2.44504081e-36F, -2.63312e-36F, \n-2.82119936e-36F, -3.00929173e-36F, -3.38545028e-36F, -3.76160883e-36F, -4.13776738e-36F, -4.51392593e-36F, \n-4.89008448e-36F, -5.26624303e-36F, -5.64240158e-36F, -6.01858919e-36F, -6.77090629e-36F, -7.52322339e-36F, \n-8.2755405e-36F, -9.0278576e-36F, -9.7801747e-36F, -1.05324918e-35F, -1.12848089e-35F, -1.20371899e-35F, \n-1.35418241e-35F, -1.50464583e-35F, -1.65510925e-35F, -1.80557267e-35F, -1.95603609e-35F, -2.10649951e-35F, \n-2.25696293e-35F, -2.40744027e-35F, -2.70836711e-35F, -3.00929395e-35F, -3.31022079e-35F, -3.61114763e-35F, \n-3.91207447e-35F, -4.21300131e-35F, -4.51392815e-35F, -4.81488513e-35F, -5.41673881e-35F, -6.01859249e-35F, \n-6.62044617e-35F, -7.2223e-35F, -7.82415354e-35F, -8.42600722e-35F, -9.0278609e-35F, -9.62978e-35F, -1.08334868e-34F, \n-1.20371942e-34F, -1.32409015e-34F, -1.44446089e-34F, -1.56483163e-34F, -1.68520236e-34F, -1.8055731e-34F, \n-1.92595772e-34F, -2.1666992e-34F, -2.40744067e-34F, -2.64818214e-34F, -2.88892362e-34F, -3.12966509e-34F, \n-3.37040656e-34F, -3.61114803e-34F, -3.85191912e-34F, -4.33340207e-34F, -4.81488501e-34F, -5.29636796e-34F, \n-5.7778509e-34F, -6.25933385e-34F, -6.74081679e-34F, -7.22229974e-34F, -7.70384559e-34F, -8.66681148e-34F, \n-9.62977737e-34F, -1.05927433e-33F, -1.15557092e-33F, -1.2518675e-33F, -1.34816409e-33F, -1.44446068e-33F, \n-1.54077059e-33F, -1.73336377e-33F, -1.92595694e-33F, -2.11855012e-33F, -2.3111433e-33F, -2.50373648e-33F, \n-2.69632966e-33F, -2.88892283e-33F, -3.08154411e-33F, -3.46673047e-33F, -3.85191683e-33F, -4.23710318e-33F, \n-4.62228954e-33F, -5.0074759e-33F, -5.39266225e-33F, -5.77784861e-33F, -6.16309411e-33F, -6.93346682e-33F, \n-7.70383953e-33F, -8.47421224e-33F, -9.24458496e-33F, -1.00149577e-32F, -1.07853304e-32F, -1.15557031e-32F, \n-1.23262e-32F, -1.38669454e-32F, -1.54076908e-32F, -1.69484362e-32F, -1.84891817e-32F, -2.00299271e-32F, \n-2.15706725e-32F, -2.31114179e-32F, -2.46524234e-32F, -2.77339143e-32F, -3.08154051e-32F, -3.3896896e-32F, \n-3.69783868e-32F, -4.00598777e-32F, -4.31413685e-32F, -4.62228594e-32F, -4.93048939e-32F, -5.54678756e-32F, \n-6.16308573e-32F, -6.7793839e-32F, -7.39568207e-32F, -8.01198e-32F, -8.62827841e-32F, -9.24457658e-32F, \n-9.86098819e-32F, -1.10935845e-31F, -1.23261809e-31F, -1.35587772e-31F, -1.47913735e-31F, -1.60239699e-31F, \n-1.72565662e-31F, -1.84891626e-31F, -1.97219952e-31F, -2.21871879e-31F, -2.46523805e-31F, -2.71175732e-31F, \n-2.95827659e-31F, -3.20479586e-31F, -3.45131513e-31F, -3.69783439e-31F, -3.9444028e-31F, -4.43744133e-31F, \n-4.93048e-31F, -5.42351841e-31F, -5.91655694e-31F, -6.40959548e-31F, -6.90263401e-31F, -7.39567255e-31F, \n-7.88881312e-31F, -8.87489e-31F, -9.86096726e-31F, -1.08470443e-30F, -1.18331214e-30F, -1.28191985e-30F, \n-1.38052755e-30F, -1.47913526e-30F, -1.57776413e-30F, -1.77497954e-30F, -1.97219496e-30F, -2.16941037e-30F, \n-2.36662579e-30F, -2.5638412e-30F, -2.76105661e-30F, -2.95827203e-30F, -3.15553127e-30F, -3.54996209e-30F, \n-3.94439292e-30F, -4.33882375e-30F, -4.73325458e-30F, -5.12768541e-30F, -5.52211624e-30F, -5.91654707e-30F, \n-6.31106855e-30F, -7.09993e-30F, -7.88879187e-30F, -8.67765352e-30F, -9.46651518e-30F, -1.02553768e-29F, \n-1.10442385e-29F, -1.18331e-29F, -1.26221491e-29F, -1.41998725e-29F, -1.57775958e-29F, -1.73553191e-29F, \n-1.89330424e-29F, -2.05107657e-29F, -2.2088489e-29F, -2.36662123e-29F, -2.52443223e-29F, -2.8399769e-29F, \n-3.15552156e-29F, -3.47106622e-29F, -3.78661089e-29F, -4.10215555e-29F, -4.41770021e-29F, -4.73324488e-29F, \n-5.04886928e-29F, -5.67995861e-29F, -6.31104794e-29F, -6.94213726e-29F, -7.57322659e-29F, -8.20431591e-29F, \n-8.83540524e-29F, -9.46649457e-29F, -1.00977482e-28F, -1.13599269e-28F, -1.26221055e-28F, -1.38842842e-28F, \n-1.51464628e-28F, -1.64086415e-28F, -1.76708201e-28F, -1.89329988e-28F, -2.01955157e-28F, -2.2719873e-28F, \n-2.52442303e-28F, -2.77685876e-28F, -3.02929449e-28F, -3.28173022e-28F, -3.53416595e-28F, -3.78660168e-28F, \n-4.03910698e-28F, -4.54397844e-28F, -5.04885e-28F, -5.55372137e-28F, -6.05859283e-28F, -6.56346429e-28F, \n-7.06833575e-28F, -7.57320721e-28F, -8.07822167e-28F, -9.08796459e-28F, -1.00977075e-27F, -1.11074504e-27F, \n-1.21171934e-27F, -1.31269363e-27F, -1.41366792e-27F, -1.51464221e-27F, -1.61564587e-27F, -1.81759446e-27F, \n-2.01954304e-27F, -2.22149163e-27F, -2.42344021e-27F, -2.6253888e-27F, -2.82733738e-27F, -3.02928597e-27F, \n-3.23129483e-27F, -3.635192e-27F, -4.03908917e-27F, -4.44298634e-27F, -4.84688351e-27F, -5.25078067e-27F, \n-5.65467784e-27F, -6.05857501e-27F, -6.46259582e-27F, -7.27039e-27F, -8.0781845e-27F, -8.88597884e-27F, \n-9.69377317e-27F, -1.05015675e-26F, -1.13093618e-26F, -1.21171562e-26F, -1.2925204e-26F, -1.45407927e-26F, \n-1.61563813e-26F, -1.777197e-26F, -1.93875587e-26F, -2.10031473e-26F, -2.2618736e-26F, -2.42343247e-26F, \n-2.58504326e-26F, -2.908161e-26F, -3.23127873e-26F, -3.55439647e-26F, -3.8775142e-26F, -4.20063194e-26F, \n-4.52374967e-26F, -4.8468674e-26F, -5.17009145e-26F, -5.81632692e-26F, -6.46256239e-26F, -7.10879786e-26F, \n-7.75503333e-26F, -8.4012688e-26F, -9.04750427e-26F, -9.69374e-26F, -1.03401928e-25F, -1.16326637e-25F, \n-1.29251346e-25F, -1.42176056e-25F, -1.55100765e-25F, -1.68025475e-25F, -1.80950184e-25F, -1.93874893e-25F, \n-2.06804052e-25F, -2.32653471e-25F, -2.5850289e-25F, -2.84352309e-25F, -3.10201728e-25F, -3.36051146e-25F, \n-3.61900565e-25F, -3.87749984e-25F, -4.13608499e-25F, -4.65307337e-25F, -5.17006175e-25F, -5.68705e-25F, \n-6.2040385e-25F, -6.72102687e-25F, -7.23801525e-25F, -7.75500362e-25F, -8.27217788e-25F, -9.30615463e-25F, \n-1.03401314e-24F, -1.13741081e-24F, -1.24080849e-24F, -1.34420616e-24F, -1.44760384e-24F, -1.55100151e-24F, \n-1.65443715e-24F, -1.8612325e-24F, -2.06802785e-24F, -2.2748232e-24F, -2.48161855e-24F, -2.6884139e-24F, \n-2.89520926e-24F, -3.10200461e-24F, -3.30887746e-24F, -3.72246816e-24F, -4.13605886e-24F, -4.54964956e-24F, \n-4.96324026e-24F, -5.37683096e-24F, -5.79042167e-24F, -6.20401237e-24F, -6.61776123e-24F, -7.44494264e-24F, \n-8.27212404e-24F, -9.09930544e-24F, -9.92648684e-24F, -1.07536682e-23F, -1.15808496e-23F, -1.2408031e-23F, \n-1.32355351e-23F, -1.48898979e-23F, -1.65442607e-23F, -1.81986235e-23F, -1.98529863e-23F, -2.15073491e-23F, \n-2.31617119e-23F, -2.48160747e-23F, -2.64710954e-23F, -2.9779821e-23F, -3.30885466e-23F, -3.63972722e-23F, \n-3.97059978e-23F, -4.30147234e-23F, -4.63234491e-23F, -4.96321747e-23F, -5.29422413e-23F, -5.95596925e-23F, \n-6.61771438e-23F, -7.2794595e-23F, -7.94120462e-23F, -8.60295e-23F, -9.26469486e-23F, -9.92644e-23F, -1.05884584e-22F, \n-1.19119486e-22F, -1.32354388e-22F, -1.45589291e-22F, -1.58824193e-22F, -1.72059096e-22F, -1.85294e-22F, \n-1.98528901e-22F, -2.11769369e-22F, -2.38239174e-22F, -2.64708979e-22F, -2.91178784e-22F, -3.17648589e-22F, \n-3.44118393e-22F, -3.70588198e-22F, -3.97058e-22F, -4.23539142e-22F, -4.76478752e-22F, -5.29418362e-22F, \n-5.82357971e-22F, -6.35297581e-22F, -6.88237191e-22F, -7.411768e-22F, -7.9411641e-22F, -8.47079092e-22F, \n-9.52958312e-22F, -1.05883753e-21F, -1.16471675e-21F, -1.27059597e-21F, -1.37647519e-21F, -1.48235441e-21F, \n-1.58823363e-21F, -1.6941598e-21F, -1.90591824e-21F, -2.11767668e-21F, -2.32943512e-21F, -2.54119356e-21F, \n-2.75295199e-21F, -2.96471043e-21F, -3.17646887e-21F, -3.38832283e-21F, -3.81183971e-21F, -4.23535659e-21F, \n-4.65887346e-21F, -5.08239034e-21F, -5.50590722e-21F, -5.9294241e-21F, -6.35294097e-21F, -6.77665213e-21F, \n-7.62368588e-21F, -8.47072e-21F, -9.31775339e-21F, -1.01647871e-20F, -1.10118209e-20F, -1.18588547e-20F, \n-1.27058884e-20F, -1.35533172e-20F, -1.52473847e-20F, -1.69414522e-20F, -1.86355197e-20F, -2.03295872e-20F, \n-2.20236547e-20F, -2.37177222e-20F, -2.54117897e-20F, -2.71066602e-20F, -3.04947952e-20F, -3.38829302e-20F, \n-3.72710653e-20F, -4.06592e-20F, -4.40473353e-20F, -4.74354703e-20F, -5.08236053e-20F, -5.42133721e-20F, \n-6.09896422e-20F, -6.77659122e-20F, -7.45421822e-20F, -8.13184523e-20F, -8.80947223e-20F, -9.48709924e-20F, \n-1.01647262e-19F, -1.08426848e-19F, -1.21979388e-19F, -1.35531928e-19F, -1.49084468e-19F, -1.62637008e-19F, \n-1.76189548e-19F, -1.89742088e-19F, -2.03294628e-19F, -2.16853902e-19F, -2.43958982e-19F, -2.71064062e-19F, \n-2.98169143e-19F, -3.25274223e-19F, -3.52379303e-19F, -3.79484383e-19F, -4.06589463e-19F, -4.33708218e-19F, \n-4.87918378e-19F, -5.42128538e-19F, -5.96338699e-19F, -6.50548859e-19F, -7.04759e-19F, -7.5896918e-19F, \n-8.1317934e-19F, -8.67417262e-19F, -9.75837583e-19F, -1.0842579e-18F, -1.19267822e-18F, -1.30109855e-18F, \n-1.40951887e-18F, -1.51793919e-18F, -1.62635951e-18F, -1.73483618e-18F, -1.95167682e-18F, -2.16851746e-18F, \n-2.3853581e-18F, -2.60219874e-18F, -2.81903939e-18F, -3.03588e-18F, -3.25272067e-18F, -3.46967567e-18F, \n-3.90335695e-18F, -4.33703823e-18F, -4.77071952e-18F, -5.2044008e-18F, -5.63808208e-18F, -6.07176336e-18F, \n-6.50544465e-18F, -6.93935795e-18F, -7.80672052e-18F, -8.67408308e-18F, -9.54144565e-18F, -1.04088082e-17F, \n-1.12761708e-17F, -1.21435333e-17F, -1.30108959e-17F, -1.38787291e-17F, -1.56134543e-17F, -1.73481794e-17F, \n-1.90829045e-17F, -2.08176297e-17F, -2.25523548e-17F, -2.42870799e-17F, -2.60218051e-17F, -2.77574847e-17F, \n-3.1226935e-17F, -3.46963853e-17F, -3.81658355e-17F, -4.16352858e-17F, -4.51047361e-17F, -4.85741863e-17F, \n-5.20436366e-17F, -5.55150224e-17F, -6.2453923e-17F, -6.93928235e-17F, -7.6331724e-17F, -8.32706245e-17F, \n-9.0209525e-17F, -9.71484256e-17F, -1.04087326e-16F, -1.11030151e-16F, -1.24907952e-16F, -1.38785753e-16F, \n-1.52663554e-16F, -1.66541355e-16F, -1.80419156e-16F, -1.94296957e-16F, -2.08174758e-16F, -2.22060513e-16F, \n-2.49816115e-16F, -2.77571717e-16F, -3.0532732e-16F, -3.33082922e-16F, -3.60838524e-16F, -3.88594126e-16F, \n-4.16349728e-16F, -4.4412145e-16F, -4.99632654e-16F, -5.55143858e-16F, -6.10655063e-16F, -6.66166267e-16F, \n-7.21677471e-16F, -7.77188675e-16F, -8.32699879e-16F, -8.88243747e-16F, -9.99266155e-16F, -1.11028856e-15F, \n-1.22131097e-15F, -1.33233338e-15F, -1.44335579e-15F, -1.5543782e-15F, -1.66540061e-15F, -1.77648919e-15F, \n-1.998534e-15F, -2.22057882e-15F, -2.44262364e-15F, -2.66466846e-15F, -2.88671327e-15F, -3.10875809e-15F, \n-3.33080291e-15F, -3.55298176e-15F, -3.9970714e-15F, -4.44116103e-15F, -4.88525066e-15F, -5.3293403e-15F, \n-5.77343e-15F, -6.21751956e-15F, -6.6616092e-15F, -7.10597e-15F, -7.99414957e-15F, -8.88232884e-15F, -9.77050811e-15F, \n-1.06586874e-14F, -1.15468666e-14F, -1.24350459e-14F, -1.33232252e-14F, -1.42119542e-14F, -1.59883127e-14F, \n-1.77646712e-14F, -1.95410298e-14F, -2.13173883e-14F, -2.30937468e-14F, -2.48701054e-14F, -2.66464639e-14F, \n-2.84239354e-14F, -3.19766525e-14F, -3.55293696e-14F, -3.90820866e-14F, -4.26348037e-14F, -4.61875208e-14F, \n-4.97402378e-14F, -5.32929549e-14F, -5.68479251e-14F, -6.39533592e-14F, -7.10587933e-14F, -7.81642275e-14F, \n-8.52696616e-14F, -9.23750957e-14F, -9.94805299e-14F, -1.06585964e-13F, -1.13695959e-13F, -1.27906827e-13F, \n-1.42117695e-13F, -1.56328563e-13F, -1.70539432e-13F, -1.847503e-13F, -1.98961168e-13F, -2.13172036e-13F, \n-2.27392134e-13F, -2.55813871e-13F, -2.84235607e-13F, -3.12657344e-13F, -3.4107908e-13F, -3.69500817e-13F, \n-3.97922553e-13F, -4.2634429e-13F, -4.54784702e-13F, -5.11628175e-13F, -5.68471648e-13F, -6.25315121e-13F, \n-6.82158594e-13F, -7.39002067e-13F, -7.9584554e-13F, -8.52689e-13F, -9.09570271e-13F, -1.02325722e-12F, \n-1.13694416e-12F, -1.25063111e-12F, -1.36431806e-12F, -1.478005e-12F, -1.59169195e-12F, -1.70537889e-12F, \n-1.81914228e-12F, -2.04651617e-12F, -2.27389e-12F, -2.50126395e-12F, -2.72863785e-12F, -2.95601174e-12F, \n-3.18338563e-12F, -3.41075952e-12F, -3.63828802e-12F, -4.09303581e-12F, -4.54778359e-12F, -5.00253138e-12F, \n-5.45727916e-12F, -5.91202694e-12F, -6.36677473e-12F, -6.82152251e-12F, -7.27658298e-12F, -8.18607855e-12F, \n-9.09557412e-12F, -1.00050697e-11F, -1.09145653e-11F, -1.18240608e-11F, -1.27335564e-11F, -1.3643052e-11F, \n-1.45531798e-11F, -1.6372171e-11F, -1.81911621e-11F, -2.00101533e-11F, -2.18291444e-11F, -2.36481355e-11F, \n-2.54671267e-11F, -2.72861178e-11F, -2.91063874e-11F, -3.27443697e-11F, -3.6382352e-11F, -4.00203343e-11F, \n-4.36583165e-11F, -4.72963e-11F, -5.09342811e-11F, -5.45722634e-11F, -5.82128304e-11F, -6.54887949e-11F, \n-7.27647595e-11F, -8.0040724e-11F, -8.73166886e-11F, -9.45926532e-11F, -1.01868618e-10F, -1.09144582e-10F, \n-1.16425772e-10F, -1.30977701e-10F, -1.4552963e-10F, -1.60081559e-10F, -1.74633488e-10F, -1.89185417e-10F, \n-2.03737346e-10F, -2.18289276e-10F, -2.32851766e-10F, -2.61955624e-10F, -2.91059482e-10F, -3.2016334e-10F, \n-3.49267198e-10F, -3.78371057e-10F, -4.07474915e-10F, -4.36578773e-10F, -4.65704e-10F, -5.23911692e-10F, \n-5.82119408e-10F, -6.40327125e-10F, -6.98534841e-10F, -7.56742558e-10F, -8.14950274e-10F, -8.73158e-10F, \n-9.31408839e-10F, -1.04782427e-9F, -1.1642397e-9F, -1.28065514e-9F, -1.39707057e-9F, -1.513486e-9F, -1.62990144e-9F, \n-1.74631687e-9F, -1.86281945e-9F, -2.09565032e-9F, -2.32848119e-9F, -2.56131205e-9F, -2.79414292e-9F, -3.02697378e-9F, \n-3.25980465e-9F, -3.49263551e-9F, -3.72564246e-9F, -4.19130419e-9F, -4.65696592e-9F, -5.12262766e-9F, -5.58828939e-9F, \n-6.05395112e-9F, -6.51961285e-9F, -6.98527458e-9F, -7.45129203e-9F, -8.38261549e-9F, -9.31393895e-9F, -1.02452624e-8F, \n-1.11765859e-8F, -1.21079093e-8F, -1.30392328e-8F, -1.39705563e-8F, -1.49025983e-8F, -1.67652452e-8F, -1.86278921e-8F, \n-2.0490539e-8F, -2.2353186e-8F, -2.42158329e-8F, -2.60784798e-8F, -2.79411267e-8F, -2.9805225e-8F, -3.35305188e-8F, \n-3.72558127e-8F, -4.09811065e-8F, -4.47064e-8F, -4.84316942e-8F, -5.21569881e-8F, -5.58822819e-8F, -5.96105068e-8F, \n-6.70610945e-8F, -7.45116822e-8F, -8.19622699e-8F, -8.94128576e-8F, -9.68634453e-8F, -1.04314033e-7F, -1.11764621e-7F, \n-1.19221127e-7F, -1.34122303e-7F, -1.49023478e-7F, -1.63924653e-7F, -1.78825829e-7F, -1.93727e-7F, -2.0862818e-7F, \n-2.23529355e-7F, -2.38442482e-7F, -2.68244833e-7F, -2.98047183e-7F, -3.27849534e-7F, -3.57651885e-7F, -3.87454236e-7F, \n-4.17256587e-7F, -4.47058937e-7F, -4.76885418e-7F, -5.3649012e-7F, -5.96094822e-7F, -6.55699523e-7F, -7.15304225e-7F, \n-7.74908926e-7F, -8.34513628e-7F, -8.9411833e-7F, -9.53771746e-7F, -1.07298115e-6F, -1.19219055e-6F, -1.3114e-6F, \n-1.43060936e-6F, -1.54981876e-6F, -1.66902817e-6F, -1.78823757e-6F, -1.90754531e-6F, -2.14596412e-6F, -2.38438292e-6F, \n-2.62280173e-6F, -2.86122054e-6F, -3.09963934e-6F, -3.33805815e-6F, -3.57647696e-6F, -3.81509426e-6F, -4.29193187e-6F, \n-4.76876949e-6F, -5.2456071e-6F, -5.72244471e-6F, -6.19928232e-6F, -6.67612e-6F, -7.15295755e-6F, -7.6301958e-6F, \n-8.58387102e-6F, -9.53754625e-6F, -1.04912215e-5F, -1.14448967e-5F, -1.23985719e-5F, -1.33522472e-5F, -1.43059224e-5F, \n-1.52604061e-5F, -1.71677566e-5F, -1.9075107e-5F, -2.09824575e-5F, -2.2889808e-5F, -2.47971584e-5F, -2.67045089e-5F, \n-2.86118593e-5F, -3.05208414e-5F, -3.43355423e-5F, -3.81502432e-5F, -4.19649441e-5F, -4.5779645e-5F, -4.95943459e-5F, \n-5.34090468e-5F, -5.72237477e-5F, -6.1041741e-5F, -6.86711428e-5F, -7.63005446e-5F, -8.39299464e-5F, -9.15593482e-5F, \n-9.918875e-5F, -0.000106818152F, -0.000114447554F, -0.000122083598F, -0.000137342402F, -0.000152601206F, \n-0.000167860009F, -0.000183118813F, -0.000198377616F, -0.00021363642F, -0.000228895224F, -0.00024416743F, \n-0.000274685037F, -0.000305202644F, -0.000335720251F, -0.000366237859F, -0.000396755466F, -0.000427273073F, \n-0.00045779068F, -0.000488335325F, -0.000549370539F, -0.000610405754F, -0.000671440968F, -0.000732476183F, \n-0.000793511397F, -0.000854546612F, -0.000915581826F, -0.000976671581F, -0.00109874201F, -0.00122081244F, \n-0.00134288287F, -0.0014649533F, -0.00158702373F, -0.00170909415F, -0.00183116458F, -0.00195334502F, -0.00219748588F, \n-0.00244162674F, -0.0026857676F, -0.00292990846F, -0.00317404931F, -0.00341819017F, -0.00366233103F, -0.00390669378F, \n-0.00439497549F, -0.00488325721F, -0.00537153892F, -0.00585982064F, -0.00634810235F, -0.00683638407F, -0.00732466578F, \n-0.007813395F, -0.00878995843F, -0.00976652186F, -0.0107430853F, -0.0117196487F, -0.0126962122F, -0.0136727756F, \n-0.014649339F, -0.0156268049F, -0.0175799318F, -0.0195330586F, -0.0214861855F, -0.0234393124F, -0.0253924392F, \n-0.0273455661F, -0.0292986929F, -0.0312536396F, -0.0351598933F, -0.0390661471F, -0.0429724F, -0.0468786545F, \n-0.0507849082F, -0.054691162F, -0.0585974157F, -0.0625073388F, -0.0703198463F, -0.0781323537F, -0.0859448612F, \n-0.0937573686F, -0.101569876F, -0.109382384F, -0.117194891F, -0.125014797F, -0.140639812F, -0.156264827F, \n-0.171889842F, -0.187514856F, -0.203139871F, -0.218764886F, -0.234389901F, -0.250029832F, -0.281279862F, \n-0.312529892F, -0.343779922F, -0.375029951F, -0.406279981F, -0.43753F, -0.468780041F, -0.500060141F, -0.562560201F, \n-0.62506026F, -0.68756032F, -0.75006038F, -0.812560439F, -0.875060499F, -0.937560558F, -1.00012124F, -1.12512136F, \n-1.25012147F, -1.37512159F, -1.50012171F, -1.62512183F, -1.75012195F, -1.87512207F, -2.00024438F, -2.25024462F, \n-2.50024486F, -2.75024509F, -3.00024533F, -3.25024557F, -3.50024581F, -3.75024605F, -4.00049257F, -4.50049305F, \n-5.00049353F, -5.500494F, -6.00049448F, -6.50049496F, -7.00049543F, -7.50049591F, -8.00099277F, -9.00099373F, \n-10.0009947F, -11.0009956F, -12.0009966F, -13.0009975F, -14.0009985F, -15.0009995F, -16.002F, -18.0020027F, \n-20.0020046F, -22.0020065F, -24.0020084F, -26.0020103F, -28.0020123F, -30.0020142F, -32.0040321F, -36.0040359F, \n-40.0040398F, -44.0040436F, -48.0040474F, -52.0040512F, -56.004055F, -60.0040588F, -64.0081253F, -72.0081329F, \n-80.0081406F, -88.0081482F, -96.0081558F, -104.008163F, -112.008171F, -120.008179F, -128.016373F, -144.016388F, \n-160.016403F, -176.016418F, -192.016434F, -208.016449F, -224.016464F, -240.016479F, -256.033F, -288.03302F, \n-320.033051F, -352.033081F, -384.033112F, -416.033142F, -448.033173F, -480.033203F, -512.066467F, -576.066528F, \n-640.066589F, -704.06665F, -768.066711F, -832.066772F, -896.066833F, -960.066895F, -1024.13391F, -1152.13403F, \n-1280.13416F, -1408.13428F, -1536.1344F, -1664.13452F, -1792.13464F, -1920.13477F, -2048.26978F, -2304.27F, \n-2560.27026F, -2816.27051F, -3072.27075F, -3328.271F, -3584.27124F, -3840.27148F, -4096.54346F, -4608.54395F, \n-5120.54443F, -5632.54492F, -6144.54541F, -6656.5459F, -7168.54639F, -7680.54688F, -8193.09473F, -9217.0957F, \n-10241.0967F, -11265.0977F, -12289.0986F, -13313.1F, -14337.1006F, -15361.1016F, -16386.2051F, -18434.207F, \n-20482.209F, -22530.2109F, -24578.2129F, -26626.2148F, -28674.2168F, -30722.2188F, -32772.4414F, -36868.4453F, \n-40964.4492F, -45060.4531F, -49156.457F, -53252.4609F, -57348.4648F, -61444.4688F, -65544.9453F, -73736.9531F, \n-81928.9609F, -90120.9688F, -98312.9766F, -106504.984F, -114696.992F, -122889.0F, -131090.016F, -147474.031F, \n-163858.047F, -180242.062F, -196626.078F, -213010.094F, -229394.109F, -245778.125F, -262180.281F, -294948.312F, \n-327716.344F, -360484.375F, -393252.406F, -426020.438F, -458788.469F, -491556.5F, -524361.062F, -589897.125F, \n-655433.188F, -720969.25F, -786505.312F, -852041.375F, -917577.438F, -983113.5F, -1048723.12F, -1179795.25F, \n-1310867.38F, -1441939.5F, -1573011.62F, -1704083.75F, -1835155.88F, -1966228.0F, -2097448.25F, -2359592.5F, \n-2621736.75F, -2883881.0F, -3146025.25F, -3408169.5F, -3670313.75F, -3932458.0F, -4194900.5F, -4719189.0F, \n-5243477.5F, -5767766.0F, -6292054.5F, -6816343.0F, -7340631.5F, -7.86492e+6F, -8389809.0F, -9438386.0F, -10486963.0F, \n-11535540.0F, -12584117.0F, -13632694.0F, -14681271.0F, -15729848.0F, -16779634.0F, -18876788.0F, -20973942.0F, \n-23071096.0F, -25168250.0F, -27265404.0F, -29362558.0F, -31459712.0F, -3.35593e+7F, -37753608.0F, -41947916.0F, \n-46142224.0F, -50336532.0F, -54530840.0F, -58725148.0F, -62919456.0F, -67118664.0F, -75507280.0F, -83895896.0F, \n-92284512.0F, -100673128.0F, -109061744.0F, -117450360.0F, -125838976.0F, -134237456.0F, -151014688.0F, -167791920.0F, \n-184569152.0F, -201346384.0F, -218123616.0F, -234900848.0F, -251678080.0F, -268475168.0F, -302029632.0F, \n-335584096.0F, -369138560.0F, -402693024.0F, -436247488.0F, -469801952.0F, -503356416.0F, -536950848.0F, \n-604059776.0F, -671168704.0F, -738277632.0F, -805386560.0F, -872495488.0F, -939604416.0F, -1.00671334e+9F, \n-1.07390272e+9F, -1.20812058e+9F, -1.34233843e+9F, -1.47655629e+9F, -1.61077414e+9F, -1.744992e+9F, -1.87920986e+9F, \n-2.01342771e+9F, -2.14780749e+9F, -2.4162432e+9F, -2.68467891e+9F, -2.95311462e+9F, -3.22155034e+9F, -3.48998605e+9F, \n-3.75842176e+9F, -4.02685747e+9F, -4.29561907e+9F, -4.8324905e+9F, -5.36936192e+9F, -5.90623334e+9F, -6.44310477e+9F, \n-6.97997619e+9F, -7.51684762e+9F, -8.05371904e+9F, -8.59124634e+9F, -9.66498918e+9F, -1.0738732e+10F, \n-1.18124749e+10F, -1.28862177e+10F, -1.39599606e+10F, -1.50337034e+10F, -1.61074463e+10F, -1.71825091e+10F, \n-1.93299948e+10F, -2.14774804e+10F, -2.36249661e+10F, -2.57724518e+10F, -2.79199375e+10F, -3.00674232e+10F, \n-3.22149089e+10F, -3.43650509e+10F, -3.86600223e+10F, -4.29549937e+10F, -4.72499651e+10F, -5.15449364e+10F, \n-5.58399078e+10F, -6.01348792e+10F, -6.44298506e+10F, -6.87301673e+10F, -7.73201101e+10F, -8.59100529e+10F, \n-9.44999956e+10F, -1.03089938e+11F, -1.11679881e+11F, -1.20269824e+11F, -1.28859767e+11F, -1.37460466e+11F, \n-1.54640351e+11F, -1.71820237e+11F, -1.89000122e+11F, -2.0618e+11F, -2.23359894e+11F, -2.40539779e+11F, \n-2.57719665e+11F, -2.74921193e+11F, -3.09280965e+11F, -3.43640736e+11F, -3.78000507e+11F, -4.12360278e+11F, \n-4.46720049e+11F, -4.8107982e+11F, -5.15439591e+11F, -5.49842911e+11F, -6.18562454e+11F, -6.87282e+11F, \n-7.56001538e+11F, -8.2472108e+11F, -8.93440623e+11F, -9.62160165e+11F, -1.03087971e+12F, -1.09968687e+12F, \n-1.23712596e+12F, -1.37456504e+12F, -1.51200412e+12F, -1.64944321e+12F, -1.78688229e+12F, -1.92432138e+12F, \n-2.06176046e+12F, -2.19937584e+12F, -2.47425401e+12F, -2.74913218e+12F, -3.02401035e+12F, -3.29888852e+12F, \n-3.57376668e+12F, -3.84864485e+12F, -4.12352302e+12F, -4.39875587e+12F, -4.94851221e+12F, -5.49826855e+12F, \n-6.04802489e+12F, -6.59778123e+12F, -7.14753756e+12F, -7.6972939e+12F, -8.24705e+12F, -8.79752e+12F, -9.89703281e+12F, \n-1.09965455e+13F, -1.20960582e+13F, -1.31955708e+13F, -1.42950835e+13F, -1.53945962e+13F, -1.64941089e+13F, \n-1.7595057e+13F, -1.97940824e+13F, -2.19931078e+13F, -2.41921331e+13F, -2.63911585e+13F, -2.85901838e+13F, \n-3.07892092e+13F, -3.29882345e+13F, -3.51901476e+13F, -3.95882e+13F, -4.39862491e+13F, -4.83843e+13F, \n-5.27823505e+13F, -5.71804e+13F, -6.15784519e+13F, -6.59765026e+13F, -7.03803624e+13F, -7.91764638e+13F, \n-8.79725652e+13F, -9.67686666e+13F, -1.05564768e+14F, -1.14360869e+14F, -1.23156971e+14F, -1.31953072e+14F, \n-1.40760859e+14F, -1.58353062e+14F, -1.75945265e+14F, -1.93537467e+14F, -2.1112967e+14F, -2.28721873e+14F, \n-2.46314076e+14F, -2.63906279e+14F, -2.81522e+14F, -3.16706392e+14F, -3.51890798e+14F, -3.87075203e+14F, \n-4.22259609e+14F, -4.57444e+14F, -4.9262842e+14F, -5.27812826e+14F, -5.6304451e+14F, -6.33413321e+14F, \n-7.03782132e+14F, -7.74150944e+14F, -8.44519755e+14F, -9.14888566e+14F, -9.85257378e+14F, -1.05562619e+15F, \n-1.12609009e+15F, -1.26682772e+15F, -1.40756534e+15F, -1.54830296e+15F, -1.68904058e+15F, -1.82977821e+15F, \n-1.97051583e+15F, -2.11125345e+15F, -2.25218233e+15F, -2.53365758e+15F, -2.81513282e+15F, -3.09660807e+15F, \n-3.37808331e+15F, -3.65955856e+15F, -3.94103381e+15F, -4.22250905e+15F, -4.50436896e+15F, -5.06731945e+15F, \n-5.63027e+15F, -6.19322043e+15F, -6.75617092e+15F, -7.31912141e+15F, -7.88207191e+15F, -8.4450224e+15F, \n-9.00874652e+15F, -1.01346475e+16F, -1.12605485e+16F, -1.23864495e+16F, -1.35123504e+16F, -1.46382514e+16F, \n-1.57641524e+16F, -1.68900534e+16F, -1.80175102e+16F, -2.02693122e+16F, -2.25211141e+16F, -2.47729161e+16F, \n-2.70247181e+16F, -2.927652e+16F, -3.1528322e+16F, -3.37801239e+16F, -3.60350548e+16F, -4.05386587e+16F, \n-4.50422626e+16F, -4.95458666e+16F, -5.40494705e+16F, -5.85530744e+16F, -6.30566783e+16F, -6.75602822e+16F, \n-7.20701783e+16F, -8.10773861e+16F, -9.0084594e+16F, -9.90918e+16F, -1.0809901e+17F, -1.17106218e+17F, \n-1.26113425e+17F, -1.35120633e+17F, -1.44140494e+17F, -1.6215491e+17F, -1.80169325e+17F, -1.98183741e+17F, \n-2.16198157e+17F, -2.34212572e+17F, -2.52226988e+17F, -2.70241404e+17F, -2.88281263e+17F, -3.24310094e+17F, \n-3.60338926e+17F, -3.96367757e+17F, -4.32396588e+17F, -4.6842542e+17F, -5.04454251e+17F, -5.40483083e+17F, \n-5.76563076e+17F, -6.48620738e+17F, -7.20678401e+17F, -7.92736064e+17F, -8.64793727e+17F, -9.36851389e+17F, \n-1.00890905e+18F, -1.08096671e+18F, -1.15312725e+18F, -1.29724258e+18F, -1.4413579e+18F, -1.58547323e+18F, \n-1.72958855e+18F, -1.87370388e+18F, -2.0178192e+18F, -2.16193453e+18F, -2.3062567e+18F, -2.59448735e+18F, \n-2.882718e+18F, -3.17094865e+18F, -3.4591793e+18F, -3.74741e+18F, -4.03564061e+18F, -4.32387126e+18F, -4.6125178e+18F, \n-5.1889791e+18F, -5.7654404e+18F, -6.34190171e+18F, -6.91836301e+18F, -7.49482431e+18F, -8.07128561e+18F, \n-8.64774691e+18F, -9.22504439e+18F, -1.0377967e+19F, -1.15308896e+19F, -1.26838122e+19F, -1.38367348e+19F, \n-1.49896574e+19F, -1.614258e+19F, -1.72955026e+19F, -1.84501064e+19F, -2.07559516e+19F, -2.30617968e+19F, \n-2.5367642e+19F, -2.76734872e+19F, -2.99793324e+19F, -3.22851776e+19F, -3.45910228e+19F, -3.69002479e+19F, \n-4.15119384e+19F, -4.61236288e+19F, -5.07353192e+19F, -5.53470096e+19F, -5.99587e+19F, -6.45703904e+19F, \n-6.91820809e+19F, -7.38005663e+19F, -8.30239471e+19F, -9.22473279e+19F, -1.01470709e+20F, -1.1069409e+20F, \n-1.1991747e+20F, -1.29140851e+20F, -1.38364232e+20F, -1.47601273e+20F, -1.66048035e+20F, -1.84494797e+20F, \n-2.02941558e+20F, -2.2138832e+20F, -2.39835082e+20F, -2.58281843e+20F, -2.76728605e+20F, -2.95202828e+20F, \n-3.32096351e+20F, -3.68989875e+20F, -4.05883398e+20F, -4.42776921e+20F, -4.79670445e+20F, -5.16563968e+20F, \n-5.53457491e+20F, -5.90406219e+20F, -6.64193266e+20F, -7.37980312e+20F, -8.11767359e+20F, -8.85554406e+20F, \n-9.59341452e+20F, -1.0331285e+21F, -1.10691555e+21F, -1.18081356e+21F, -1.32838766e+21F, -1.47596175e+21F, \n-1.62353584e+21F, -1.77111e+21F, -1.91868403e+21F, -2.06625812e+21F, -2.21383222e+21F, -2.36162938e+21F, \n-2.65677757e+21F, -2.95192575e+21F, -3.24707394e+21F, -3.54222213e+21F, -3.83737031e+21F, -4.1325185e+21F, \n-4.42766669e+21F, -4.72326326e+21F, -5.31355964e+21F, -5.90385601e+21F, -6.49415238e+21F, -7.08444876e+21F, \n-7.67474513e+21F, -8.2650415e+21F, -8.85533788e+21F, -9.44653553e+21F, -1.06271283e+22F, -1.1807721e+22F, \n-1.29883138e+22F, -1.41689065e+22F, -1.53494993e+22F, -1.6530092e+22F, -1.77106848e+22F, -1.88930891e+22F, \n-2.12542746e+22F, -2.36154601e+22F, -2.59766456e+22F, -2.83378311e+22F, -3.06990165e+22F, -3.3060202e+22F, \n-3.54213875e+22F, -3.77862142e+22F, -4.25085852e+22F, -4.72309562e+22F, -5.19533271e+22F, -5.66757e+22F, \n-6.13980691e+22F, -6.61204401e+22F, -7.08428111e+22F, -7.55725e+22F, -8.50172424e+22F, -9.44619844e+22F, \n-1.03906726e+23F, -1.13351468e+23F, -1.2279621e+23F, -1.32240952e+23F, -1.41685694e+23F, -1.51145145e+23F, \n-1.70034629e+23F, -1.88924113e+23F, -2.07813597e+23F, -2.26703081e+23F, -2.45592565e+23F, -2.64482049e+23F, \n-2.83371533e+23F, -3.02290578e+23F, -3.40069546e+23F, -3.77848514e+23F, -4.15627482e+23F, -4.5340645e+23F, \n-4.91185418e+23F, -5.28964386e+23F, -5.66743353e+23F, -6.04581733e+23F, -6.80139669e+23F, -7.55697604e+23F, \n-8.3125554e+23F, -9.06813476e+23F, -9.82371412e+23F, -1.05792935e+24F, -1.13348728e+24F, -1.20916462e+24F, \n-1.36028049e+24F, -1.51139636e+24F, -1.66251223e+24F, -1.8136281e+24F, -1.96474398e+24F, -2.11585985e+24F, \n-2.26697572e+24F, -2.41833154e+24F, -2.72056329e+24F, -3.02279503e+24F, -3.32502677e+24F, -3.62725852e+24F, \n-3.92949026e+24F, -4.231722e+24F, -4.53395374e+24F, -4.8366677e+24F, -5.44113118e+24F, -6.04559467e+24F, \n-6.65005816e+24F, -7.25452164e+24F, -7.85898513e+24F, -8.46344861e+24F, -9.0679121e+24F, -9.67334462e+24F, \n-1.08822716e+25F, -1.20911986e+25F, -1.33001255e+25F, -1.45090525e+25F, -1.57179795e+25F, -1.69269065e+25F, \n-1.81358334e+25F, -1.93467077e+25F, -2.17645616e+25F, -2.41824156e+25F, -2.66002695e+25F, -2.90181235e+25F, \n-3.14359774e+25F, -3.38538314e+25F, -3.62716853e+25F, -3.86934523e+25F, -4.35291601e+25F, -4.8364868e+25F, \n-5.32005759e+25F, -5.80362838e+25F, -6.28719917e+25F, -6.77077e+25F, -7.25434075e+25F, -7.73869783e+25F, \n-8.70583941e+25F, -9.67298099e+25F, -1.06401226e+26F, -1.16072641e+26F, -1.25744057e+26F, -1.35415473e+26F, \n-1.45086889e+26F, -1.54774104e+26F, -1.74116936e+26F, -1.93459767e+26F, -2.12802599e+26F, -2.3214543e+26F, \n-2.51488262e+26F, -2.70831094e+26F, -2.90173925e+26F, -3.09548504e+26F, -3.48234167e+26F, -3.8691983e+26F, \n-4.25605493e+26F, -4.64291156e+26F, -5.02976819e+26F, -5.41662482e+26F, -5.80348145e+26F, -6.19097597e+26F, \n-6.96468924e+26F, -7.7384025e+26F, -8.51211576e+26F, -9.28582902e+26F, -1.00595423e+27F, -1.08332555e+27F, \n-1.16069688e+27F, -1.23819638e+27F, -1.39293903e+27F, -1.54768168e+27F, -1.70242433e+27F, -1.85716699e+27F, \n-2.01190964e+27F, -2.16665229e+27F, -2.32139494e+27F, -2.47639511e+27F, -2.78588042e+27F, -3.09536572e+27F, \n-3.40485103e+27F, -3.71433633e+27F, -4.02382164e+27F, -4.33330694e+27F, -4.64279225e+27F, -4.95279495e+27F, \n-5.57176556e+27F, -6.19073617e+27F, -6.80970678e+27F, -7.42867739e+27F, -8.047648e+27F, -8.66661861e+27F, \n-9.28558922e+27F, -9.90559934e+27F, -1.11435406e+28F, -1.23814818e+28F, -1.3619423e+28F, -1.48573642e+28F, \n-1.60953054e+28F, -1.73332467e+28F, -1.85711879e+28F, -1.98112176e+28F, -2.22871e+28F, -2.47629824e+28F, \n-2.72388649e+28F, -2.97147473e+28F, -3.21906298e+28F, -3.46665122e+28F, -3.71423946e+28F, -3.96224729e+28F, \n-4.45742378e+28F, -4.95260027e+28F, -5.44777675e+28F, -5.94295324e+28F, -6.43812973e+28F, -6.93330622e+28F, \n-7.42848271e+28F, -7.92450214e+28F, -8.91485511e+28F, -9.90520809e+28F, -1.08955611e+29F, -1.1885914e+29F, \n-1.2876267e+29F, -1.386662e+29F, -1.4856973e+29F, -1.58490194e+29F, -1.78297253e+29F, -1.98104313e+29F, \n-2.17911372e+29F, -2.37718432e+29F, -2.57525491e+29F, -2.77332551e+29F, -2.9713961e+29F, -3.1698069e+29F, \n-3.56594809e+29F, -3.96208928e+29F, -4.35823047e+29F, -4.75437166e+29F, -5.15051285e+29F, -5.54665404e+29F, \n-5.94279523e+29F, -6.33962e+29F, -7.13190222e+29F, -7.9241846e+29F, -8.71646699e+29F, -9.50874937e+29F, \n-1.03010317e+30F, -1.10933141e+30F, -1.18855965e+30F, -1.26792518e+30F, -1.42638165e+30F, -1.58483813e+30F, \n-1.74329461e+30F, -1.90175108e+30F, -2.06020756e+30F, -2.21866403e+30F, -2.37712051e+30F, -2.53585277e+30F, \n-2.85276573e+30F, -3.16967868e+30F, -3.48659163e+30F, -3.80350458e+30F, -4.12041753e+30F, -4.43733049e+30F, \n-4.75424344e+30F, -5.07171038e+30F, -5.70553629e+30F, -6.33936219e+30F, -6.9731881e+30F, -7.607014e+30F, \n-8.24084e+30F, -8.87466581e+30F, -9.50849171e+30F, -1.01434304e+31F, -1.14110822e+31F, -1.26787341e+31F, \n-1.39463859e+31F, -1.52140377e+31F, -1.64816895e+31F, -1.77493413e+31F, -1.90169931e+31F, -2.02868802e+31F, \n-2.28221838e+31F, -2.53574874e+31F, -2.78927911e+31F, -3.04280947e+31F, -3.29633983e+31F, -3.54987019e+31F, \n-3.80340055e+31F, -4.05738e+31F, -4.56444063e+31F, -5.07150136e+31F, -5.57856208e+31F, -6.08562281e+31F, \n-6.59268353e+31F, -7.09974425e+31F, -7.60680498e+31F, -8.11476756e+31F, -9.12888901e+31F, -1.01430105e+32F, \n-1.11571319e+32F, -1.21712533e+32F, -1.31853748e+32F, -1.41994962e+32F, -1.52136177e+32F, -1.62295506e+32F, \n-1.82577935e+32F, -2.02860364e+32F, -2.23142793e+32F, -2.43425222e+32F, -2.63707651e+32F, -2.8399008e+32F, \n-3.04272509e+32F, -3.24591321e+32F, -3.65156179e+32F, -4.05721037e+32F, -4.46285895e+32F, -4.86850753e+32F, \n-5.27415611e+32F, -5.67980469e+32F, -6.08545327e+32F, -6.49183262e+32F, -7.30313e+32F, -8.11442693e+32F, \n-8.92572409e+32F, -9.73702125e+32F, -1.05483184e+33F, -1.13596156e+33F, -1.21709127e+33F, -1.29836776e+33F, \n-1.46062719e+33F, -1.62288662e+33F, -1.78514606e+33F, -1.94740549e+33F, -2.10966492e+33F, -2.27192435e+33F, \n-2.43418378e+33F, -2.596738e+33F, -2.92125686e+33F, -3.24577572e+33F, -3.57029459e+33F, -3.89481345e+33F, \n-4.21933231e+33F, -4.54385118e+33F, -4.86837e+33F, -5.19348095e+33F, -5.84251867e+33F, -6.4915564e+33F, \n-7.14059413e+33F, -7.78963185e+33F, -8.43866958e+33F, -9.08770731e+33F, -9.73674503e+33F, -1.03869718e+34F, \n-1.16850473e+34F, -1.29831227e+34F, -1.42811982e+34F, -1.55792736e+34F, -1.68773491e+34F, -1.81754245e+34F, \n-1.94735e+34F, -2.07739634e+34F, -2.33701143e+34F, -2.59662652e+34F, -2.85624161e+34F, -3.1158567e+34F, \n-3.37547179e+34F, -3.63508688e+34F, -3.89470197e+34F, -4.15479664e+34F, -4.67402682e+34F, -5.193257e+34F, \n-5.71248719e+34F, -6.23171737e+34F, -6.75094755e+34F, -7.27017773e+34F, -7.78940791e+34F, -8.30960121e+34F, \n-9.34806157e+34F, -1.03865219e+35F, -1.14249823e+35F, -1.24634427e+35F, -1.3501903e+35F, -1.45403634e+35F, \n-1.55788237e+35F, -1.66192183e+35F, -1.8696139e+35F, -2.07730597e+35F, -2.28499804e+35F, -2.49269012e+35F, \n-2.70038219e+35F, -2.90807426e+35F, -3.11576633e+35F, -3.32384682e+35F, -3.73923097e+35F, -4.15461511e+35F, \n-4.56999926e+35F, -4.9853834e+35F, -5.40076755e+35F, -5.81615169e+35F, -6.23153584e+35F, -6.6477e+35F, \n-7.47846827e+35F, -8.30923656e+35F, -9.14000485e+35F, -9.97077314e+35F, -1.08015414e+36F, -1.16323097e+36F, \n-1.2463078e+36F, -1.32954126e+36F, -1.49569492e+36F, -1.66184858e+36F, -1.82800224e+36F, -1.9941559e+36F, \n-2.16030955e+36F, -2.32646321e+36F, -2.49261687e+36F, -2.65908506e+36F, -2.99139238e+36F, -3.32369969e+36F, \n-3.65600701e+36F, -3.98831433e+36F, -4.32062164e+36F, -4.65292896e+36F, -4.98523627e+36F, -5.3181752e+36F, \n-5.98279e+36F, -6.64740446e+36F, -7.31201909e+36F, -7.97663372e+36F, -8.64124836e+36F, -9.30586299e+36F, \n-9.97047762e+36F, -1.06363605e+37F, -1.19655898e+37F, -1.32948191e+37F, -1.46240483e+37F, -1.59532776e+37F, \n-1.72825069e+37F, -1.86117361e+37F, -1.99409654e+37F, -2.12727414e+37F, -2.39312e+37F, -2.65896584e+37F, \n-2.92481169e+37F, -3.19065755e+37F, -3.4565034e+37F, -3.72234925e+37F, -3.9881951e+37F, -4.25455233e+37F, \n-4.78624403e+37F, -5.31793574e+37F, -5.84962744e+37F, -6.38131915e+37F, -6.91301085e+37F, -7.44470256e+37F, \n-7.97639426e+37F, -8.50911277e+37F, -9.57249618e+37F, -1.06358796e+38F, -1.1699263e+38F, -1.27626464e+38F, \n-1.38260298e+38F, -1.48894132e+38F, -1.59527966e+38F, -1.70182418e+38F, -1.91450086e+38F, -2.12717754e+38F, \n-2.33985422e+38F, -2.5525309e+38F, -2.76520759e+38F, -2.97788427e+38F, -3.19056095e+38F, 3.402823466e+38F, \n1.17549435e-38F]" + } + }, + { + "name": "sSingleThird", + "metadata": { + "uuid": "3f379542-e299-4c20-a797-75c72242f7f8", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.629808", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_type": "single", + "_value": "0.333333343F" + } + }, + { + "name": "sSingleTies", + "metadata": { + "uuid": "2c3cde07-1512-48df-8643-9dce817bf019", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261016T235609.630254", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_type": "single", + "_value": "[1000000.12F, 1000000.38F, 1000000.62F, -1000000.12F, 2097151.88F]" + } + } + ], + "Dictionary References": [], + "AllowAccessBWS": false + } + } + } +} \ No newline at end of file diff --git a/test/fixtures/mcos/typed_mcos_binary.sldd b/test/fixtures/mcos/typed_mcos_binary.sldd new file mode 100644 index 0000000000000000000000000000000000000000..39fc698e9c38159a96b9cb3ac8526f95b39bcf65 GIT binary patch literal 4534 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mcos/typed_objects.mat b/test/fixtures/mcos/typed_objects.mat new file mode 100644 index 0000000000000000000000000000000000000000..b279702b9a0218f90f7fc8e1abf05bf0f9b83217 GIT binary patch literal 19134 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 uI*{~nqUi&vk6=Jf4-h^Bqo*%SzXt

4Fu?2hqOH{=qPFKmY(AYMnqN0RpiA literal 0 HcmV?d00001 diff --git a/test/fixtures/mcos/typed_ws.slx b/test/fixtures/mcos/typed_ws.slx new file mode 100644 index 0000000000000000000000000000000000000000..dc7268d743ce1c1280be1938835a450198410f31 GIT binary patch literal 49913 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 literal 0 HcmV?d00001 diff --git a/test/matSingleDigits.test.ts b/test/matSingleDigits.test.ts new file mode 100644 index 00000000..875667f6 --- /dev/null +++ b/test/matSingleDigits.test.ts @@ -0,0 +1,130 @@ +// Copyright 2026 The MathWorks, Inc. +// +// C-033, its digits half: a SINGLE read out of MAT bytes shows MATLAB's digits, not the +// double it widens to. MatParser read each float32 with getFloat32, which hands back the +// double of the same value, and every number in this package prints as the shortest text +// that is that DOUBLE: single(3.3) is the double 3.299999952316284, and showed so — in a +// .mat, in an MCOS object's property (a .mat, a model workspace, a binary dictionary's +// hex) and in a text dictionary's MAT stream — where both dictionaries hold MATLAB's own +// text for the same value, 3.3 (the corpus twins param_vars.mat / param_json.sldd, +// P30_TypeMaxUnitDesc, and the plain SingleRowVec). +// +// The reader now keeps, for a value of class single, the decimal MATLAB spells it with, +// measured (R2027a, both dictionary formats): C's `%.6g` where that is the same float32, +// otherwise `%.9g` with an exact tie to the even digit, and `%.10g` for realmax('single'). +// That is not the shortest decimal that is the same float32: single(1/3) is 0.333333343, +// where 0.33333334 would do. typedMcosFixtures.test.ts grades it against MATLAB's own text +// for 4,086 float32 bit patterns. It is lossless: it is the same float32, so a save writes +// the bits it read (MatWriter's setFloat32, a text dictionary's `3.3F`). A value of another +// class is read as it was, a double whose bytes happen to be stored as miSINGLE included: +// its value is the double, whatever its storage. +// +// Each value is built byte by byte (test/tools/matBytes.ts) and read through the real +// readers: a .mat by the session, and a MAT stream by decodeMatStream, the reader a text +// dictionary's cdata and a binary dictionary's hex go through. +import { describe, it, expect } from 'vitest'; +import { decodeMatStream } from '../src/datamodel/parser/MatParser.js'; +import { createSession } from '../src/index.js'; +import { CLASS, MI, matFile, numericVar, sparseVar } from './tools/matBytes.js'; + +const opened = (variables: Uint8Array[]): any => createSession().addMatSource('t.mat', matFile(variables)); +const single = (name: string, dimensions: number[], real: number[], imag?: number[]) => + numericVar({ name, cls: CLASS.SINGLE, dimensions, real, imag }); +const child = (root: any, name: string): any => root.children.find((c: any) => c.name === name); + +/** The value of a MAT stream holding the one variable `bytes`, as decodeMatStream reads it. */ +function streamValue(bytes: Uint8Array): unknown { + const decoded = decodeMatStream(Uint8Array.from([0x00, 0x01, 0x49, 0x4d, 0x00, 0x00, 0x00, 0x00, ...bytes])); + if (!decoded.ok) throw new Error('the stream did not decode'); + return decoded.variable.value; +} + +describe('a single read out of MAT bytes shows MATLAB\'s digits for it', () => { + it('a .mat: single(3.3) shows 3.3 and single([1.1 2.2 3.3]) shows [1.1 2.2 3.3]', () => { + const root = opened([single('s', [1, 1], [3.3]), single('r', [1, 3], [1.1, 2.2, 3.3])]); + // Before: 3.299999952316284, and [1.100000023841858 2.200000047683716 3.299999952316284]. + expect([child(root, 's').displayValue, child(root, 's').className]).toEqual(['3.3', 'single']); + expect([child(root, 'r').displayValue, child(root, 'r').className]).toEqual(['[1.1 2.2 3.3]', 'single']); + expect(child(root, 'r').children.map((c: any) => c.displayValue)).toEqual(['1.1', '2.2', '3.3']); + }); + + it('a MAT stream (a text dictionary\'s cdata, a binary dictionary\'s hex): the same numbers', () => { + expect(streamValue(single('', [1, 1], [3.3]))).toBe(3.3); + expect(streamValue(single('', [1, 3], [1.1, 2.2, 3.3]))).toEqual([1.1, 2.2, 3.3]); + expect(streamValue(single('', [2, 1], [0.1, 1 / 3]))).toEqual([0.1, 0.333333343]); + }); + + it('a complex single: both parts', () => { + const root = opened([single('z', [1, 1], [0.1], [0.2])]); + // Before: 0.10000000149011612+0.20000000298023224i. + expect(child(root, 'z').displayValue).toBe('0.1+0.2i'); + }); + + it('a sparse single: its non-zeros', () => { + const root = opened([ + sparseVar({ name: 'sp', cls: CLASS.SINGLE, sparseFlag: true, dataType: MI.SINGLE, dimensions: [2, 2], ir: [0, 1], jc: [0, 1, 2], real: [1.1, 2.2] }), + ]); + const sp = child(root, 'sp'); + expect(sp.className).toBe('single'); + expect(sp.children.map((c: any) => c.displayValue)).toEqual(['1.1', '2.2']); + }); + + it('MATLAB\'s digits: %.6g where that is the same single, %.9g where it is not', () => { + const stored = [1 / 3, 3.4028234663852886e38, 1e-45, 12187.2695, 473.15, 0.01, 2.3023181].map(Math.fround); + const values = streamValue(single('', [1, stored.length], stored)) as number[]; + // MATLAB's own text for each (R2027a, make_typed_fixtures.m, both dictionary formats): + // single(1/3) is 0.333333343, though 0.33333334 is the same single; realmax('single') is + // 3.402823466e+38, its %.9g being past it; the smallest subnormal is 1.4013e-45, though + // 1e-45 is the same single. 12187.2695, 473.15, 0.01 and 2.3023181 are a customer + // dictionary's text for the same singles. + expect(values).toEqual([0.333333343, 3.402823466e38, 1.4013e-45, 12187.2695, 473.15, 0.01, 2.3023181]); + // Lossless: each is the float32 that was stored. + expect(values.map(Math.fround)).toEqual(stored); + }); + + it('a nine-digit tie goes to the even digit, as MATLAB writes it', () => { + // 1000000.125 is halfway between 1000000.12 and 1000000.13; MATLAB writes 1000000.12 + // (typed_mcos.sldd's sSingleTies), where toPrecision gives 1000000.13. + const stored = [1000000.125, 1000000.375, 1000000.625, -1000000.125, 2097151.875, 2 ** -13]; + const values = streamValue(single('', [1, stored.length], stored)) as number[]; + expect(values).toEqual([1000000.12, 1000000.38, 1000000.62, -1000000.12, 2097151.88, 0.000122070312]); + expect(values.map(Math.fround)).toEqual(stored); + }); + + it('lossless over a sweep of float32 bit patterns: each shown number is the stored single', () => { + // Every 1048577th pattern of the positive finite range, and its negation: the exponents + // from subnormal to the largest, with mantissas that need from one digit to nine. The + // same patterns as make_typed_fixtures.m's sSingleSweep, whose digits are graded against + // MATLAB's own in typedMcosFixtures.test.ts. + const stored: number[] = []; + const bits = new DataView(new ArrayBuffer(4)); + for (let b = 1; b < 0x7f800000; b += 0x100001) { + bits.setUint32(0, b); + stored.push(bits.getFloat32(0), -bits.getFloat32(0)); + } + const read = streamValue(single('', [1, stored.length], stored)) as number[]; + expect(read).toHaveLength(stored.length); + expect(read.filter((v, k) => Math.fround(v) !== stored[k])).toEqual([]); + // And none is the widened double, which takes up to seventeen digits: at most ten. + expect(read.filter((v) => v.toPrecision(11) !== Number(v.toPrecision(10)).toPrecision(11))).toEqual([]); + }); + + it('control: a single that is exact is unchanged, and so are Inf, -Inf, NaN and -0', () => { + const values = streamValue(single('', [1, 7], [0.5, 16777216, -2.25, Infinity, -Infinity, NaN, -0])) as number[]; + expect(values.slice(0, 6)).toEqual([0.5, 16777216, -2.25, Infinity, -Infinity, NaN]); + expect(Object.is(values[6], -0)).toBe(true); + }); + + it('control: a DOUBLE stored as miSINGLE keeps the double it is', () => { + // A writer may store a double whose values a float32 holds exactly as miSINGLE. Its + // value is the double, so it shows every digit the double has. + const bytes = numericVar({ name: 'd', cls: CLASS.DOUBLE, dataType: MI.SINGLE, dimensions: [1, 1], real: [1.1] }); + expect(streamValue(bytes)).toBe(Math.fround(1.1)); + const root = opened([bytes]); + expect([child(root, 'd').displayValue, child(root, 'd').className]).toEqual(['1.100000023841858', 'double']); + }); + + it('control: a double is read as it was', () => { + expect(streamValue(numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 2], real: [3.3, 1 / 3] }))).toEqual([3.3, 1 / 3]); + }); +}); diff --git a/test/mcosColumnVector.test.ts b/test/mcosColumnVector.test.ts index 1579037e..9ae7e83b 100644 --- a/test/mcosColumnVector.test.ts +++ b/test/mcosColumnVector.test.ts @@ -6,6 +6,7 @@ import { decodeMcosBlob, type OpaqueVarRef } from '../src/datamodel/parser/McosP import { parseMat } from '../src/datamodel/parser/MatParser.js'; import * as NodeRegistry from '../src/datamodel/node/NodeRegistry.js'; import '../src/datamodel/node/data/NodeClassMap.js'; +import { CLASS } from './tools/matBytes.js'; // An Nx1 real or logical MCOS property keeps its column shape. The decoder handed the // node layer any numeric or logical VECTOR as a bare list, and a bare list is a row @@ -14,14 +15,15 @@ import '../src/datamodel/node/data/NodeClassMap.js'; // [10 20 30] — a different MATLAB value. The text dictionary's twin states a column as // Matrix(3,1), as MATLAB itself writes it, and the binary dictionary's reader keeps // it; a complex value and a logical MATRIX already kept their shape in this decoder. -// Now a rank-2 column takes the typed Matrix(r,1) literal too. A 1xN row is still the -// bare list it was, and rank > 2 is unchanged. +// Now a rank-2 column takes the typed Matrix(r,1) literal too. A double 1xN row is still +// the bare list it was, and rank > 2 is unchanged. (A row of any other class, a logical +// one included, is typed since C-033: see the second describe below.) // // ParamMat.mat (MATLAB-written) holds a Simulink.Parameter whose Value is the 2x3 // [1 2 3; 4 5 6]. Its dims subelement in the MCOS blob is respelled, same length, so // the six doubles MATLAB stored column-major (1 4 2 5 3 6) are read as another shape; // setting the array-flags logical bit, as the Bp.mat tests in mcosParser.test.ts do, -// makes the same cell logical. +// makes the same cell logical, and respelling its class byte makes it another class. function blobParts(file: string): { raw: Uint8Array; vars: OpaqueVarRef[] } { const path = fileURLToPath(new URL(`./fixtures/mcos/${file}`, import.meta.url)); @@ -47,8 +49,12 @@ function findAll(raw: Uint8Array, needle: number[]): number[] { return at; } -/** ParamMat.mat's Value respelled as rows x cols, optionally logical. */ -function paramMatValue(rows: number, cols: number, logical = false): unknown { +/** + * ParamMat.mat's Value respelled as rows x cols, optionally logical, and optionally of + * another class: `cls` is the array-flags class byte (matBytes.ts CLASS), which leaves the + * six stored elements as they were, so only the class the cell declares changes. + */ +function paramMatValue(rows: number, cols: number, logical = false, cls?: number): unknown { const { raw, vars } = blobParts('ParamMat.mat'); // Exactly one such subelement, so fixture drift fails loudly instead of silently // patching the wrong bytes. @@ -62,6 +68,7 @@ function paramMatValue(rows: number, cols: number, logical = false): unknown { view.setUint32(dimsAt + 8, rows, true); view.setUint32(dimsAt + 12, cols, true); if (logical) patched[dimsAt - 7] |= LOGICAL_FLAG; + if (cls !== undefined) patched[dimsAt - 8] = cls; return decodeMcosBlob(patched, vars).get('ParamMat')!.properties.Value; } @@ -100,9 +107,74 @@ describe('decodeMcosBlob — an Nx1 MCOS property keeps its column shape', () => }); }); - it('control: a logical 1x6 is still the bare row of booleans it was', () => { + // C-033: a bare list of booleans is read as a DOUBLE row by the node layer + // (MatlabVariableNode.parseFlatArray, which also serves a text dictionary's bare list, + // where double is right), so the row showed class double. It is the typed literal the + // binary dictionary's reader gives a logical row (typed_binary.sldd's lglVec). + it('a logical 1x6 is the typed logical row a binary dictionary gives, and shows as logical', () => { const value = paramMatValue(1, 6, true); - expect(value).toEqual([true, true, true, true, true, true]); - expect(shown(value)).toMatchObject({ dims: [1, 6] }); + expect(value).toEqual({ _type: 'logical', _value: '[1, 1, 1, 1, 1, 1]' }); + expect(shown(value)).toEqual({ + className: 'logical', + dims: [1, 6], + display: '[true true true true true true]', + }); + }); +}); + +// C-033: a REAL numeric property of a class other than double keeps its class. The +// decoder handed every numeric scalar and row over bare, and stamped `double` on every +// column and matrix, so a Simulink.Parameter whose Value is int32([1 2 3]) showed class +// double in a .mat and a model workspace, where both dictionaries show int32 (the corpus +// twins param_vars.mat / param_bin.sldd, P47_ValInt32Vec). Each is now the binary +// dictionary's spelling of the same value (BinarySlddParser formatTypedScalar, +// formatTypedVector, formatMatrix), which the node layer already reads. A double is +// unchanged: bare scalar and row, `_type: 'double'` column and matrix. +describe('decodeMcosBlob — a real non-double MCOS property keeps its class', () => { + it('an int32 1x6 is a typed int32 row and shows as int32', () => { + const value = paramMatValue(1, 6, false, CLASS.INT32); + expect(value).toEqual({ _type: 'int32', _value: '[1, 4, 2, 5, 3, 6]' }); + expect(shown(value)).toEqual({ className: 'int32', dims: [1, 6], display: '[1 4 2 5 3 6]' }); + }); + + it('an int16 6x1 is a typed int16 Matrix(6,1) and shows as an int16 column', () => { + const value = paramMatValue(6, 1, false, CLASS.INT16); + expect(value).toEqual({ _type: 'int16', _value: 'Matrix(6,1)\n[1, 4, 2, 5, 3, 6]' }); + expect(shown(value)).toEqual({ className: 'int16', dims: [6, 1], display: '[1; 4; 2; 5; 3; 6]' }); + }); + + it('a uint8 1x1 is a typed uint8 scalar and shows as uint8', () => { + const value = paramMatValue(1, 1, false, CLASS.UINT8); + expect(value).toEqual({ _type: 'uint8', _value: '1U' }); + expect(shown(value)).toEqual({ className: 'uint8', dims: [1, 1], display: '1' }); + }); + + it('a single 2x3 is a typed single matrix and shows as single', () => { + const value = paramMatValue(2, 3, false, CLASS.SINGLE); + expect(value).toEqual({ _type: 'single', _value: 'Matrix(2,3)\n[[1F, 2F, 3F]; [4F, 5F, 6F]]' }); + expect(shown(value)).toMatchObject({ className: 'single', dims: [2, 3] }); + }); + + it('a uint64 1x3 is a typed uint64 row, each element with its U', () => { + const value = paramMatValue(1, 3, false, CLASS.UINT64); + // Three of the six stored elements are held: the dims say 1x3. + expect(value).toEqual({ _type: 'uint64', _value: '[1U, 4U, 2U]' }); + expect(shown(value)).toEqual({ className: 'uint64', dims: [1, 3], display: '[1 4 2]' }); + }); + + it('control: a double 1x1 is still the bare number it was', () => { + const value = paramMatValue(1, 1, false, CLASS.DOUBLE); + expect(value).toBe(1); + expect(shown(value)).toEqual({ className: 'double', dims: [1, 1], display: '1' }); + }); + + it('control: a double 1x6, 6x1 and 2x3 are exactly as they were', () => { + expect(paramMatValue(1, 6, false, CLASS.DOUBLE)).toEqual([1, 4, 2, 5, 3, 6]); + expect(paramMatValue(6, 1, false, CLASS.DOUBLE)).toEqual({ _type: 'double', _value: 'Matrix(6,1)\n[1.0, 4.0, 2.0, 5.0, 3.0, 6.0]' }); + expect(paramMatValue(2, 3, false, CLASS.DOUBLE)).toEqual({ _type: 'double', _value: 'Matrix(2,3)\n[[1.0, 2.0, 3.0]; [4.0, 5.0, 6.0]]' }); + }); + + it('control: a logical 1x1 is still the boolean it was', () => { + expect(paramMatValue(1, 1, true)).toBe(true); }); }); diff --git a/test/mcosParser.test.ts b/test/mcosParser.test.ts index 747c88d4..ea21ed29 100644 --- a/test/mcosParser.test.ts +++ b/test/mcosParser.test.ts @@ -690,9 +690,11 @@ describe('decodeMcosBlob — logical-flagged heap cells resolve as booleans', () expect(typeof bpProps.TunableSizeValue).toBe('boolean'); }); - it('array of logicals resolves as boolean[], not number[] (Dimensions)', () => { + it('array of logicals resolves as a typed logical row, not number[] (Dimensions)', () => { // cells[4] in Bp.mat is a double array [0, 0] used as Dimensions. Setting - // isLogical should resolve it to [false, false]. + // isLogical should resolve it to a logical [false false]: the typed literal a binary + // dictionary gives a logical row (C-033), since a bare list of booleans is read by the + // node layer as a DOUBLE row. const { raw, vars } = blobParts('Bp.mat'); const patched = raw.slice(); // Flags byte for cells[4] is at raw offset 1481 (class = 0x06 at 1480). @@ -702,8 +704,9 @@ describe('decodeMcosBlob — logical-flagged heap cells resolve as booleans', () const bp = decodeMcosBlob(patched, vars).get('Bp')!; const breakpoints = bp.properties.Breakpoints as Record; const bpProps = (breakpoints._properties as Record); - // Before fix: [0, 0] (number[]). After fix: [false, false] (boolean[]). - expect(bpProps.Dimensions).toEqual([false, false]); + // Before the first fix: [0, 0] (number[]). Then [false, false] (boolean[]), which + // showed as a double row. Now the logical row. + expect(bpProps.Dimensions).toEqual({ _type: 'logical', _value: '[0, 0]' }); }); }); diff --git a/test/parity/matlab/DESIGN.md b/test/parity/matlab/DESIGN.md index e75e14a5..2df5d915 100644 --- a/test/parity/matlab/DESIGN.md +++ b/test/parity/matlab/DESIGN.md @@ -2462,17 +2462,6 @@ Two findings from that hardening, measured and deliberately NOT acted on: of the four channels carry no property data for it at all — defect 40. Recorded from the raw bags, because MATLAB does not call `Choices` a property and parity therefore passes. -- **A REAL array inside an MCOS object is classed double.** `McosParser.buildMatrixValue` - writes `_type: 'double'` and a row goes through as a bare list, so `single([0.1 0.3])` - as a Parameter's Value shows Data Type double on its Value row in a `.mat`, where both - dictionaries say single. Defect 57 gives a COMPLEX value its class (`_class`); the real - arms predate it and are left as they were. -- **A single shows the double it widens to, out of a `.mat`.** MatParser reads a float32 - into a JavaScript number, and every `.mat` arm prints that: complex(single(0.1), 0.2) - is `0.10000000149011612+0.20000000298023224i` in a plain `.mat` variable, in an MCOS - object and in a text dictionary (whose stream is read by the same arm), where a binary - dictionary shows MATLAB's own text, `0.1+0.2i`, and MATLAB's display `0.1000 + 0.2000i`. - The shortest spelling of the float32 would change every one of those venues at once. - **A complex EMPTY in a binary dictionary shows as an empty quoted char.** MATLAB writes `

`; the empty body fails parseCdata's text test and its stream decode, so the value is `''` where the same Parameter in a diff --git a/test/typedMcosFixtures.test.ts b/test/typedMcosFixtures.test.ts new file mode 100644 index 00000000..f6954ba3 --- /dev/null +++ b/test/typedMcosFixtures.test.ts @@ -0,0 +1,270 @@ +// Copyright 2026 The MathWorks, Inc. +// +// C-033: a real number of a class other than double, inside an MCOS object, against +// MATLAB's own answers, on the fixtures test/fixtures/mcos/make_typed_fixtures.m writes +// (R2027a): typed_objects.mat; typed_ws.slx, whose MODEL WORKSPACE holds the same values; +// and typed_mcos.sldd (text) and typed_mcos_binary.sldd (compressed-binary), dictionaries +// holding them entry for variable. Every name is in all four. +// +// A Simulink.Parameter whose Value is int32([100 200 300 400]) showed class double in the +// .mat and the workspace, where both dictionaries showed int32; a logical row showed +// double; and single(3.3) showed 3.299999952316284 where both dictionaries showed 3.3. The +// MCOS decoder handed a non-double number over bare, which the node layer reads as a +// double, and MatParser read a single as the double it widens to. Each venue now presents +// each value as every other does, of MATLAB's class and size. +// +// The digits a single shows are MATLAB's: a dictionary holds MATLAB's own text for it, so +// sSingleSweep, 4,082 float32 bit patterns from the smallest subnormal to realmax, is +// MATLAB's rule for that text, element by element, and a single read out of MAT bytes is +// held to it. The sweep is in every venue but the binary dictionary (make_typed_fixtures.m's +// names_in gives the reason), whose text for the same singles was measured to be the text +// dictionary's. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { unzipSync } from 'fflate'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import { decodeMcosBlob } from '../src/datamodel/parser/McosParser.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; +import { presentation } from './tools/nodePresentation.js'; + +const fixturePath = (name: string): string => fileURLToPath(new URL(`./fixtures/${name}`, import.meta.url)); +const bytes = (name: string): Uint8Array => new Uint8Array(readFileSync(fixturePath(name))); +const buffer = (u8: Uint8Array): ArrayBuffer => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; + +interface ValueTruth { + class: string; + size: number[]; + numel?: number; + mat2str?: string; + elements?: string[]; +} +interface Venue { + file: string; + paths: Record; +} +const truth: { release: string; names: string[]; mat: Venue; slx: Venue; text: Venue; binary: Venue } = JSON.parse( + readFileSync(fixturePath('mcos/typed_fixtures.truth.json'), 'utf8'), +); + +/** A venue's variables: the node MATLAB's top-level names sit under. */ +function variablesOf(file: string, session = createSession()): any { + const root: any = ingest(session, buffer(bytes(`mcos/${file}`)), { filename: file }); + if (file.endsWith('.slx')) return root.getSection('workspace'); + if (file.endsWith('.sldd')) return root.getSection('design'); + return root; +} +const VENUES = (['mat', 'slx', 'text', 'binary'] as const).map((key) => ({ key, file: truth[key].file, variables: variablesOf(truth[key].file) })); +const named = (variables: any, name: string): any => variables.children.find((c: any) => c.name === name); + +/** The node that holds a value's numbers: a Parameter's value node, or the variable itself. */ +function valueNodeOf(node: any): any | null { + if (!/Parameter$/.test(node.className)) return node; + return node._valueNode ?? node.children.find((c: any) => c.name === 'Value') ?? null; +} + +/** What a host is shown for a value: its own cell, class and size, and every element's. */ +function shownOf(node: any): unknown { + const v = valueNodeOf(node); + return { + className: node.className, + displayValue: node.displayValue, + row: node.toRow().Value, + value: v && { + className: v.className, + dims: v.dims, + displayValue: v.displayValue, + elements: v.children.map((c: any) => [c.toRow().Name.label.replace(/^[^(]*/, ''), c.className, c.displayValue]), + }, + }; +} + +// A double or a logical SCALAR in a Parameter is shown inline, with no node of its own +// to carry a class (parameterNode.test.ts): there the class is graded on the dictionaries' +// side alone, by the presentation being theirs. +const INLINE = new Set(['pDouble', 'pLogical']); + +// The two values of more than 64 elements, whose truth is their size (make_typed_fixtures.m). +const LONG = new Set(['sSingleSweep']); + +// The names a venue holds, by its truth: every one, but for the sweep in the binary dictionary. +const holds = (key: (typeof VENUES)[number]['key'], name: string): boolean => name in truth[key].paths; + +describe('typed MCOS fixtures: every venue holds every name', () => { + it('as MATLAB read it back', () => { + expect(truth.release).toBe('2027a'); + for (const { key, variables } of VENUES) { + const expected = truth.names.filter((n) => !(key === 'binary' && LONG.has(n))); + expect(Object.keys(truth[key].paths).sort(), key).toEqual([...expected].sort()); + for (const name of expected) { + expect(named(variables, name), `${key} ${name}`).toBeDefined(); + } + } + }); +}); + +describe('typed MCOS fixtures: each value presents alike in every venue, as MATLAB\'s class and size', () => { + for (const name of truth.names) { + it(name, () => { + const t = truth.mat.paths[name]; + const text = shownOf(named(VENUES[2].variables, name)); + // The .mat, the workspace and the binary dictionary, each as the text dictionary. + for (const { key, variables } of VENUES.filter((v) => holds(v.key, name))) { + expect(shownOf(named(variables, name)), `${key} ${name}`).toEqual(text); + } + const node = named(VENUES[0].variables, name); + expect(node.className, name).toBe(t.class); + if (INLINE.has(name)) { + expect(valueNodeOf(node), name).toBeNull(); + return; + } + const v = valueNodeOf(node); + expect(v.className, name).toBe(t.value.class); + expect(v.dims, name).toEqual(t.value.size); + }); + } +}); + +/** A float32's value from MATLAB's num2hex of it. */ +const fromHex = (hex: string): number => { + const view = new DataView(new ArrayBuffer(hex.length / 2)); + for (let i = 0; i < hex.length; i += 2) view.setUint8(i / 2, parseInt(hex.slice(i, i + 2), 16)); + return hex.length === 8 ? view.getFloat32(0) : view.getFloat64(0); +}; + +// An element row's label names its subscripts, and the truth is column-major. +function columnMajorIndex(label: string, size: number[]): number { + const m = /\(([\d,]+)\)$/.exec(label); + if (!m) return 0; + const subs = m[1].split(',').map(Number); + if (subs.length === 1) return subs[0] - 1; + let k = 0; + let stride = 1; + subs.forEach((s, d) => { + k += (s - 1) * stride; + stride *= size[d]; + }); + return k; +} + +describe('typed MCOS fixtures: the .mat\'s numbers are MATLAB\'s', () => { + for (const name of truth.names.filter((n) => !INLINE.has(n) && !LONG.has(n))) { + it(name, () => { + const t = truth.mat.paths[name].value; + const v = valueNodeOf(named(VENUES[0].variables, name)); + const rows: any[] = v.children.length > 0 ? v.children : [v]; + expect(rows, name).toHaveLength(t.elements!.length); + for (const row of rows) { + const label = row === v ? '' : row.toRow().Name.label; + const k = columnMajorIndex(label, t.size); + const matlab = t.elements![k]; + const ours = row.displayValue; + if (t.class === 'single' || t.class === 'double') { + // The number shown is the one MATLAB stored, to the bit. + const bits = fromHex(matlab); + expect(t.class === 'single' ? Math.fround(Number(ours)) : Number(ours), `${name}${label}`).toBe(bits); + } else if (t.class === 'logical') { + expect(ours, `${name}${label}`).toBe(matlab === '1' ? 'true' : 'false'); + } else { + expect(ours, `${name}${label}`).toBe(matlab); + } + } + }); + } +}); + +describe('typed MCOS fixtures: a single shows the digits MATLAB writes for it', () => { + // MATLAB's own text for each element of sSingleSweep, out of each dictionary's bytes. + const textTokens = (): string[] => { + const json = JSON.parse(new TextDecoder().decode(bytes('mcos/typed_mcos.sldd'))); + const entries: any[] = json.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + const value: string = entries.find((e) => e.name === 'sSingleSweep').value._value; + return value.slice(value.indexOf('[') + 1, value.lastIndexOf(']')).split(',').map((s) => s.trim().replace(/F$/, '')); + }; + it('the sweep is the 4,082 singles it says', () => { + expect(textTokens()).toHaveLength(4082); + expect(truth.mat.paths.sSingleSweep.value).toMatchObject({ class: 'single', size: [1, 4082] }); + }); + + for (const key of ['mat', 'slx', 'text'] as const) { + it(`${key}: every element of the sweep shows MATLAB's digits`, () => { + const matlab = textTokens().map((s) => String(Number(s))); + const sweep = named(VENUES.find((v) => v.key === key)!.variables, 'sSingleSweep'); + expect(sweep.children).toHaveLength(matlab.length); + const ours: string[] = sweep.children.map((c: any) => c.displayValue); + const differ = ours.map((o, k) => [k, o, matlab[k]]).filter(([, o, m]) => o !== m); + expect(differ).toEqual([]); + }); + } + + it('an exact tie at nine digits goes to the even one, in every venue', () => { + for (const { key, variables } of VENUES) { + expect(named(variables, 'sSingleTies').displayValue, key).toBe('[1000000.12 1000000.38 1000000.62 -1000000.12 2097151.88]'); + } + }); +}); + +describe('typed MCOS fixtures: a Parameter out of the .mat goes into a dictionary as MATLAB\'s own entry is', () => { + const PARAMS = truth.names.filter((n) => truth.mat.paths[n].class === 'Simulink.Parameter'); + + /** The Value `

` of an entry in a binary dictionary's chunk XML. */ + const valueTag = (xml: string): string => /

]*>[^<]*<\/P>/.exec(xml)![0]; + const entryBlock = (xml: string, name: string): string => { + const at = xml.indexOf('

' + name + '

'); + return xml.slice(xml.lastIndexOf('', at)); + }; + + for (const target of ['typed_mcos.sldd', 'typed_mcos_binary.sldd']) { + describe(target, () => { + const session = createSession(); + const mat = variablesOf('typed_objects.mat', session); + const root: any = ingest(session, buffer(bytes(`mcos/${target}`)), { filename: target }); + const design = root.getSection('design'); + const meta = named(design, 'pInt8').metadata; + let seq = 0; + for (const name of PARAMS) { + const payload: any = JSON.parse(JSON.stringify(named(mat, name).serialize())); + payload.name = name + '_fromMat'; + payload.metadata = { ...meta, uuid: `00000000-0000-4000-8000-${String(++seq).padStart(12, '0')}` }; + design.parseEntry(payload); + } + const saved: any = session.serializeSource(root.name); + const reopened: any = ingest(createSession(), buffer(saved.bytes ?? new TextEncoder().encode(saved.text)), { filename: target }).getSection('design'); + + for (const name of PARAMS) { + it(name, () => { + const pasted = named(reopened, name + '_fromMat'); + const own = named(reopened, name); + expect(presentation(pasted, pasted.displayName)).toEqual(presentation(own, own.displayName)); + if (target.endsWith('binary.sldd')) { + // The Value MATLAB wrote for the same value: its class, its shape, its text. + const xml = new TextDecoder().decode(unzipSync(saved.bytes)['data/chunk0.xml']); + const matlab = new TextDecoder().decode(unzipSync(bytes(`mcos/${target}`))['data/chunk0.xml']); + expect(valueTag(entryBlock(xml, name + '_fromMat')), name).toBe(valueTag(entryBlock(matlab, name))); + } + }); + } + }); + } +}); + +describe('what reads a typed number back out of an MCOS property', () => { + it('an int32 enumeration keeps the number each enumeral stands for', () => { + // display/dispcat_opaque.mat (R2027a) holds a Simulink.Parameter whose Value is + // DispColor.Green, DispColor being an Simulink.IntEnumType. The enumeral's number is its + // object's `int32.Data`, an int32 the decoder now spells typed; the enumeration reader + // takes its number from that spelling as it took it from the bare number. + const buf = bytes('display/dispcat_opaque.mat'); + const { variables } = parseMat(buffer(buf)); + const anon = variables.find((v) => (v as unknown as { _anonymous?: boolean })._anonymous)!; + const opaque = variables.filter((v) => v.isOpaque && v.name); + const decoded = decodeMcosBlob(anon._rawBytes!, opaque.map((v) => ({ name: v.name, className: v.className, rawBytes: v._rawBytes }))); + const enumerals = [...decoded.values()].flatMap((d) => { + const value = d.properties.Value as { _elements?: { _enumeration?: unknown }[] } | undefined; + return (value?._elements ?? []).map((e) => e._enumeration).filter(Boolean); + }); + expect(enumerals).toContainEqual({ name: 'Green', type: 'int32', value: '2' }); + }); +}); From 9c247d6b9afcc65559e1b789baf9bd46143cca5e Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 16 Oct 2026 20:32:09 -0400 Subject: [PATCH 2/4] An object array of mixed classes in a .mat keeps each element's class, as a dictionary does F1-47, per the maintainer's group E ruling of 2026-10-16 (theme 2: follow MATLAB, and measure it first; recommendation (a)). An object array held by an MCOS object's property, in a .mat or a model workspace, was named after its first element, and no element kept a class of its own. A config set's Components read as a Simulink.SolverCC array, and a copy of the config set pasted into a dictionary wrote all nine components as Simulink.SolverCC. A dexdata.DerivedSignal beside a Simulink.Signal read and showed as two DerivedSignals. The binary dictionary reader already reads such an array as MATLAB's text format names it (the maintainer's D6 and D15), but its rules were private to BinarySlddParser. They move to one new module, src/datamodel/parser/objectArrayClass.ts: arrayClassOf, heterogeneousBaseOf, componentsBaseOf and the lists they use, unchanged but for the wording of their comments. BinarySlddParser imports them and behaves as before (objectArrayElementClass.test.ts is unchanged and green). McosParser.resolveValue now uses the same rules: - the array is named by componentsBaseOf where its place names a class (a ConfigSet's or an RTWCC's Components), and otherwise by arrayClassOf over its elements' classes; - each element of another class than the array's carries `_object_class`, ahead of its `_properties`, as the binary reader writes it; - a later element whose object names no class row is one of the first element's class, as a classless later element is in a binary dictionary. buildProperties passes the owning object's class and the property's name. A struct field and a cell element pass neither, as in the binary reader. Measured on R2027a: MATLAB's class() of each array, read back out of the new fixture, is the class the rule names. It is Simulink.ConfigComponent for both config sets' Components and for their RTWCC's Components, and Simulink.Signal for a dexdata.DerivedSignal beside a Simulink.Signal. Corpus, all 168 .mat/.slx files, this commit's parent against this commit: - Of the decoded MCOS variables, exactly two change: the config set cs in findVar/dConfig.mat and in models/topMat.mat. Their Components and RTWCC Components are now Simulink.ConfigComponent arrays, with each component's own class. - The node tree walk is unchanged, 0 of 419,476 rows, because a ConfigSet shows no Components rows. No file newly fails to load. New fixture, made by MATLAB (test/fixtures/mcos/make_configset_fixture.m): configset.mat, 23 KB, and configset.truth.json. It holds cs (grt.tlc), csErt (ert.tlc, so its RTWCC's Components holds an ERTTargetCC) and mixed, an NdHolder whose Kids is [dexdata.DerivedSignal, Simulink.Signal]. New tests. On the parent commit, objectArrayClass.test.ts does not load, because the module does not exist, and 10 of the 14 tests in mcosMixedObjectArray.test.ts fail, each on the class the old reader gave. The other 4 are preconditions and controls. - objectArrayClass.test.ts: the rule itself, the binary reader's assertions asked of the module. - mcosMixedObjectArray.test.ts: - configset.mat against MATLAB's truth: each array's class, and each element's in order; - the node layer: mixed's Kids shows <1x2 Simulink.Signal>, an ObjectNode and a SignalNode; - each value copied out of the .mat and pasted into a binary dictionary writes each element's own Class, and reads back the same; - busArray.mat with its object table re-pointed: two MathWorks classes, a user's class beside one, and a later element of no class; - controls: a uniform array (busArray, ndNested) and an enumeration Value carry no element class. No existing test changed. Three tests that walk every fixture (noObjectObject, mcosDecodeWarnings, usageScanSummary) now also open configset.mat, and pass. Not in scope, recorded in DESIGN.md: a .mat variable that is itself a mixed-class object array is refused whole, by decodeMcosVariables's check that every object is of the declared class. That is read from the code. It was not measured on a MATLAB-written file, and no such variable is in the corpus or the fixtures. --- .../parser/BinarySlddParser.d.ts.map | 2 +- dist/datamodel/parser/BinarySlddParser.js | 96 +------ dist/datamodel/parser/BinarySlddParser.js.map | 2 +- dist/datamodel/parser/McosParser.d.ts.map | 2 +- dist/datamodel/parser/McosParser.js | 40 ++- dist/datamodel/parser/McosParser.js.map | 2 +- dist/datamodel/parser/objectArrayClass.d.ts | 51 ++++ .../parser/objectArrayClass.d.ts.map | 1 + dist/datamodel/parser/objectArrayClass.js | 107 +++++++ dist/datamodel/parser/objectArrayClass.js.map | 1 + src/datamodel/parser/BinarySlddParser.ts | 103 +------ src/datamodel/parser/McosParser.ts | 53 +++- src/datamodel/parser/objectArrayClass.ts | 114 ++++++++ test/fixtures/mcos/configset.mat | Bin 0 -> 23076 bytes test/fixtures/mcos/configset.truth.json | 123 ++++++++ test/fixtures/mcos/make_configset_fixture.m | 188 ++++++++++++ test/mcosMixedObjectArray.test.ts | 272 ++++++++++++++++++ test/objectArrayClass.test.ts | 78 +++++ test/parity/matlab/DESIGN.md | 19 ++ 19 files changed, 1043 insertions(+), 211 deletions(-) create mode 100644 dist/datamodel/parser/objectArrayClass.d.ts create mode 100644 dist/datamodel/parser/objectArrayClass.d.ts.map create mode 100644 dist/datamodel/parser/objectArrayClass.js create mode 100644 dist/datamodel/parser/objectArrayClass.js.map create mode 100644 src/datamodel/parser/objectArrayClass.ts create mode 100644 test/fixtures/mcos/configset.mat create mode 100644 test/fixtures/mcos/configset.truth.json create mode 100644 test/fixtures/mcos/make_configset_fixture.m create mode 100644 test/mcosMixedObjectArray.test.ts create mode 100644 test/objectArrayClass.test.ts diff --git a/dist/datamodel/parser/BinarySlddParser.d.ts.map b/dist/datamodel/parser/BinarySlddParser.d.ts.map index 6723d8b5..feac42ca 100644 --- a/dist/datamodel/parser/BinarySlddParser.d.ts.map +++ b/dist/datamodel/parser/BinarySlddParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BinarySlddParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/BinarySlddParser.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA6BhE,OAAO,EAA2E,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAgCtH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,YAAY,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoDzB;AAQD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,QAAQ,CAAC,EAAE,YAAY,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiKzB;AAuLD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAuIvG;AAwsBD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAExE"} \ No newline at end of file +{"version":3,"file":"BinarySlddParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/BinarySlddParser.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA8BhE,OAAO,EAA2E,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAgCtH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,YAAY,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoDzB;AAQD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,QAAQ,CAAC,EAAE,YAAY,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiKzB;AAuLD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAuIvG;AAsmBD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAExE"} \ No newline at end of file diff --git a/dist/datamodel/parser/BinarySlddParser.js b/dist/datamodel/parser/BinarySlddParser.js index e059c513..207c61f1 100644 --- a/dist/datamodel/parser/BinarySlddParser.js +++ b/dist/datamodel/parser/BinarySlddParser.js @@ -51,6 +51,7 @@ import { DATA_PART_KEY, DATA_PART_XML, TEXT_CONTENT, TEXT_PARTS } from './SlddPa import { encodedStream, encodedValueOf, isEncodedValue } from './EncodedValue.js'; import { charFromDecimal, charNeedsShape, complexClassTag, formatMatrixSerial, formatMxCharSerial, formatNumLiteral, needsExactInt, parseExactBody, parseMatlabNum, parseNumericBody, transposeFromColumnMajorND, BINARY_EMPTY_KEY, ENUM_KEY, ENUMERATION_KEY, PROPERTY_SOURCE_KEY, SAVEOBJ_KEY, } from './XmlUtils.js'; import { setOwn } from './ownKeys.js'; +import { arrayClassOf, componentsBaseOf } from './objectArrayClass.js'; import { headerDigits } from './Size.js'; import { recordPackageStamps, recordReadFrame, recordReadSource } from './EntrySource.js'; /** @@ -836,7 +837,8 @@ function cellValue(elements, dimParts) { // unclassed element set decodes as the struct array it is. // // `base` is the class the array's place names, where it names one (componentsBaseOf): it is -// the array's class whatever its elements are. +// the array's class whatever its elements are. Both rules are objectArrayClass.ts's, which the +// MCOS reader (McosParser) names a .mat's and a model workspace's object arrays by too. function objectArrayValue(elements, dimParts, base) { const first = elements.length > 0 ? elements[0]['@_Class'] || '' : ''; if (!first) { @@ -899,98 +901,6 @@ function propertySources(el) { } return sources; } -/** - * The class an object array of elements of `classes` is, as MATLAB's text format names it in - * `_array_class`: the class every element shares; for elements of several classes, the common - * base class where it can be derived (heterogeneousBaseOf); and otherwise the first element's, - * which is what this reader named every such array before it kept the elements' own. A config - * set's Components does not come here: its place names its class (componentsBaseOf). - * - * The first element's class is still what an array of no derivable base reads as: of the 71 - * mixed arrays the binary dictionaries of the test fixtures, the parity artifacts and the local - * corpus hold, one, a simmechanics.ConfigurationSet's Components of two simmechanics classes. - */ -function arrayClassOf(classes) { - if (classes.every((c) => c === classes[0])) { - return classes[0]; - } - return heterogeneousBaseOf(classes) ?? classes[0]; -} -/** - * The common base class of an array mixing `classes`, where this reader can derive one, or - * undefined. - * - * A binary dictionary does not state it: its `

` carries - * no Class, and each element names only its own. A text dictionary does, and two rules give the - * base it names from the classes alone: - * - Simulink.ConfigComponent, for an array whose classes each belong to CONFIG_COMPONENTS: every - * Components array of a Simulink.ConfigSet and of a Simulink.RTWCC that MATLAB wrote into a - * text dictionary is `_array_class` Simulink.ConfigComponent (30 of 30, in five - * dictionaries), over classes each listed there. - * - The one known MathWorks class (isMathWorksClass) of an array mixing it with classes that are - * not: a user's class can derive from a MathWorks class and a MathWorks class never from a - * user's, so the MathWorks class is the base the user classes extend. A text dictionary MATLAB - * wrote names a Simulink.Signal subclass beside a Simulink.Signal `{"_array_class": - * "Simulink.Signal", …}`, and this reader read the binary twin of that array, in two - * dictionaries, as the subclass, the first element's class. - * Of two MathWorks classes or more beside other classes, or of none, it names no base. - */ -function heterogeneousBaseOf(classes) { - if (classes.every((c) => c === CONFIG_COMPONENT || CONFIG_COMPONENTS.has(c))) { - return CONFIG_COMPONENT; - } - const known = new Set(classes.filter(isMathWorksClass)); - return known.size === 1 ? [...known][0] : undefined; -} -/** - * Whether `cls` is a known MathWorks class: a class of a package whose classes this package - * already names as MathWorks' (MATHWORKS_PACKAGES). Simulink and mpt are the packages of every - * class the node registry, the schema and the Kind column name (NodeClassMap, schema/index, - * kindMap), and the two the test suite tells MATLAB's own objects from custom ones by; SlCovCC, - * Sldv and hdlcoderui are the packages of the config components CONFIG_COMPONENTS names. A class - * of any other package, MathWorks' or not (CoderTarget, SSC, simmechanics, AUTOSAR among them), - * is not known here, and counts as one that is not MathWorks' (heterogeneousBaseOf). - */ -function isMathWorksClass(cls) { - const dot = cls.indexOf('.'); - return dot > 0 && MATHWORKS_PACKAGES.has(cls.slice(0, dot)); -} -/** The packages of the known MathWorks classes (isMathWorksClass). */ -const MATHWORKS_PACKAGES = new Set(['Simulink', 'mpt', 'SlCovCC', 'Sldv', 'hdlcoderui']); -/** - * The class the place of a property named `name` of an object of `ownerClass` names for an - * object array there, or undefined where it names none: Simulink.ConfigComponent, for the - * Components of a Simulink.ConfigSet or a Simulink.RTWCC, whatever components it holds. - * - * Every such array MATLAB wrote into a text dictionary is `_array_class` - * Simulink.ConfigComponent (30 of 30, in five dictionaries). A binary dictionary names no base - * for it, and can hold components no text dictionary has shown, so that CONFIG_COMPONENTS does - * not list them: a CoderTarget.SettingsController, in seven config sets of a corpus dictionary, - * and an SSC.SimscapeCC, in one of another. Those arrays used to read under their first - * component's class, a Simulink.SolverCC. - */ -function componentsBaseOf(ownerClass, name) { - return name === 'Components' && (ownerClass === 'Simulink.ConfigSet' || ownerClass === 'Simulink.RTWCC') ? CONFIG_COMPONENT : undefined; -} -const CONFIG_COMPONENT = 'Simulink.ConfigComponent'; -/** Each class MATLAB's text format lists as an element of a Simulink.ConfigComponent array (see heterogeneousBaseOf). */ -const CONFIG_COMPONENTS = new Set([ - 'Simulink.SolverCC', - 'Simulink.DataIOCC', - 'Simulink.OptimizationCC', - 'Simulink.DebuggingCC', - 'Simulink.HardwareCC', - 'Simulink.ModelReferenceCC', - 'Simulink.SFSimCC', - 'Simulink.RTWCC', - 'Simulink.CodeAppCC', - 'Simulink.GRTTargetCC', - 'Simulink.ERTTargetCC', - 'Simulink.STFCustomTargetCC', - 'SlCovCC.ConfigComp', - 'Sldv.ConfigComp', - 'hdlcoderui.hdlcc', -]); /** * A classed or shaped empty, as every place a value is read holds one, an entry's Value, an * object's property or a struct's field, and a cell's element: its class under the bare header diff --git a/dist/datamodel/parser/BinarySlddParser.js.map b/dist/datamodel/parser/BinarySlddParser.js.map index e80b30de..91d3a461 100644 --- a/dist/datamodel/parser/BinarySlddParser.js.map +++ b/dist/datamodel/parser/BinarySlddParser.js.map @@ -1 +1 @@ -{"version":3,"file":"BinarySlddParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/BinarySlddParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BinarySlddParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/BinarySlddParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/McosParser.d.ts.map b/dist/datamodel/parser/McosParser.d.ts.map index 02f9de4b..bca64da4 100644 --- a/dist/datamodel/parser/McosParser.d.ts.map +++ b/dist/datamodel/parser/McosParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAgExB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IAOvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAsO1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AAumBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file +{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAiExB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IASvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAsO1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AAyoBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file diff --git a/dist/datamodel/parser/McosParser.js b/dist/datamodel/parser/McosParser.js index 06f579e1..6b4dea97 100644 --- a/dist/datamodel/parser/McosParser.js +++ b/dist/datamodel/parser/McosParser.js @@ -4,6 +4,7 @@ import { isObjectHandle, objectHandleFromRaw, objectHandleFromValue } from './Mc import { matStreamOfElement } from './MatWriter.js'; import { uuencode } from './CdataCodec.js'; import { setOwn } from './ownKeys.js'; +import { arrayClassOf, componentsBaseOf } from './objectArrayClass.js'; import { complexClassTag, ENUM_KEY, ENUMERATION_KEY, formatComplexNum, formatMatlabNum, formatMatrixSerial, formatNumLiteral, isExactToken, transposeToColumnMajorND, } from './XmlUtils.js'; const MI_MATRIX = 14; const MAX_RECURSION_DEPTH = 32; @@ -286,7 +287,12 @@ const isFinitePart = (x) => typeof x !== 'number' || Number.isFinite(x); // data model expects. Object handles recurse into nested { _object_class, // _properties }; structs and cells recurse into { _array_type: 'Struct'|'Cell', … }. // Unresolvable values return undefined (dropped). -function resolveValue(cell, ctx, path, depth) { +// +// `owner` and `propName` are the class of the object whose property this is and the +// property's name, where the value is a property's (buildProperties): the place an object +// array sits can name its class (componentsBaseOf). A struct's field and a cell's element +// pass neither, as the binary reader names no place for them either. +function resolveValue(cell, ctx, path, depth, owner, propName) { if (!cell) return undefined; if (isObjectHandle(cell)) { @@ -301,7 +307,23 @@ function resolveValue(cell, ctx, path, depth) { // BusElements): expand EVERY id into its own element, producing the same // value-object array shape the SLDD path emits so the data model builds one // child node per element instead of dropping all but the first. - const cls = ctx.meta.classes[ctx.meta.objects[handle.ids[0]]?.classId]; + // + // The array is under the class MATLAB's text format names it by, and each element + // of another class carries its own `_object_class`, as the binary reader reads one: + // both readers use objectArrayClass.ts. This used to read the first element's class + // for the whole array and give no element a class of its own. So a config set's + // Components in a .mat read as a Simulink.SolverCC array of nine SolverCCs, and a + // copy of the config set wrote every component as one. A dexdata.DerivedSignal + // beside a Simulink.Signal read as two DerivedSignals, where MATLAB says a + // Simulink.Signal array of the two (test/fixtures/mcos/configset.mat). + // + // A later element whose object names no class row is one of the first element's + // class, as the binary reader reads a classless later element: in the class the + // array is named by, and as the class it is marked with. Where the first names none + // either, the array has no class, as before. + const own = handle.ids.map((id) => ctx.meta.classes[ctx.meta.objects[id]?.classId]?.fullName ?? ''); + const classes = own.map((c) => c || own[0]); + const arrayClass = componentsBaseOf(owner, propName) ?? (classes[0] ? arrayClassOf(classes) : ''); // Every extent, as at the root-variable site below: a property holding a 2x3x2 // object array (ndNested.mat's h.Kids) reported [2, 3] over twelve elements, so // the container printed a shape MATLAB never had and the element subscripts ran @@ -309,11 +331,14 @@ function resolveValue(cell, ctx, path, depth) { // holds, which is why nothing here noticed. const dims = handle.dims.length >= 2 ? handle.dims.slice() : [1, handle.ids.length]; return { - _array_class: cls ? cls.fullName : '', + _array_class: arrayClass, _array_type: 'MATLABArray', _dimensions: dims, _mw_element_type: 'MATLABArray', - _elements: handle.ids.map((id) => ({ _properties: buildProperties(id, ctx, path, depth + 1) })), + _elements: handle.ids.map((id, k) => ({ + ...(classes[k] && classes[k] !== arrayClass ? { _object_class: classes[k] } : {}), + _properties: buildProperties(id, ctx, path, depth + 1), + })), }; } const cls = cell.className; @@ -619,11 +644,14 @@ function buildProperties(objId, ctx, path, depth) { // 1) Class defaults FIRST, so every property this class declares surfaces by name // (and value) even when the instance left it at its default and the instance // block omits it. Then the instance block overrides those it mutated. + // The class whose properties these are: an object array's place is named by it + // (resolveValue's `owner`). + const owner = ctx.meta.classes[obj.classId]?.fullName; const dflt = ctx.defaults[obj.classId]; if (dflt && dflt.className === 'struct' && dflt.fields) { for (const [fieldName, fieldVar] of Object.entries(dflt.fields)) { const fv = Array.isArray(fieldVar) ? fieldVar[0] : fieldVar; - const resolved = resolveValue(fv, ctx, path, depth); + const resolved = resolveValue(fv, ctx, path, depth, owner, fieldName); if (resolved !== undefined) { setOwn(props, fieldName, resolved); } @@ -643,7 +671,7 @@ function buildProperties(objId, ctx, path, depth) { continue; let resolved; if (flag === 1) { - resolved = resolveValue(ctx.cells[value + 2] || null, ctx, path, depth); + resolved = resolveValue(ctx.cells[value + 2] || null, ctx, path, depth, owner, name); } else if (flag === 0) { // An index past the string table names no string: drop the property, as an diff --git a/dist/datamodel/parser/McosParser.js.map b/dist/datamodel/parser/McosParser.js.map index 088b504e..a296943c 100644 --- a/dist/datamodel/parser/McosParser.js.map +++ b/dist/datamodel/parser/McosParser.js.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/objectArrayClass.d.ts b/dist/datamodel/parser/objectArrayClass.d.ts new file mode 100644 index 00000000..61ccbd51 --- /dev/null +++ b/dist/datamodel/parser/objectArrayClass.d.ts @@ -0,0 +1,51 @@ +/** + * The class an object array of elements of `classes` is, as MATLAB's text format names it in + * `_array_class`: the class every element shares; for elements of several classes, the common + * base class where it can be derived (heterogeneousBaseOf); and otherwise the first element's, + * which is what each reader named every such array before it kept the elements' own. A config + * set's Components does not come here: its place names its class (componentsBaseOf). + * + * The first element's class is still what an array of no derivable base reads as: of the 71 + * mixed arrays the binary dictionaries of the test fixtures, the parity artifacts and the local + * corpus hold, one, a simmechanics.ConfigurationSet's Components of two simmechanics classes. + */ +export declare function arrayClassOf(classes: string[]): string; +/** + * The common base class of an array mixing `classes`, where the readers can derive one, or + * undefined. + * + * Neither a binary dictionary nor an MCOS blob states it: a binary dictionary's `

` carries no Class, an MCOS object array is a list of + * object ids, and in both each element names only its own. A text dictionary does, and two + * rules give the base it names from the classes alone: + * - Simulink.ConfigComponent, for an array whose classes each belong to CONFIG_COMPONENTS: every + * Components array of a Simulink.ConfigSet and of a Simulink.RTWCC that MATLAB wrote into a + * text dictionary is `_array_class` Simulink.ConfigComponent (30 of 30, in five + * dictionaries), over classes each listed there. + * - The one known MathWorks class (isMathWorksClass) of an array mixing it with classes that are + * not: a user's class can derive from a MathWorks class and a MathWorks class never from a + * user's, so the MathWorks class is the base the user classes extend. A text dictionary MATLAB + * wrote names a Simulink.Signal subclass beside a Simulink.Signal `{"_array_class": + * "Simulink.Signal", …}`, and the binary reader read the binary twin of that array, in two + * dictionaries, as the subclass, the first element's class. MATLAB's class() of a + * dexdata.DerivedSignal beside a Simulink.Signal, read out of a .mat, is Simulink.Signal + * (test/fixtures/mcos/configset.truth.json). + * Of two MathWorks classes or more beside other classes, or of none, it names no base. + */ +export declare function heterogeneousBaseOf(classes: string[]): string | undefined; +/** + * The class the place of a property named `name` of an object of `ownerClass` names for an + * object array there, or undefined where it names none: Simulink.ConfigComponent, for the + * Components of a Simulink.ConfigSet or a Simulink.RTWCC, whatever components it holds. + * + * Every such array MATLAB wrote into a text dictionary is `_array_class` + * Simulink.ConfigComponent (30 of 30, in five dictionaries), and MATLAB's class() of one read + * out of a .mat is the same (test/fixtures/mcos/configset.truth.json). A binary dictionary and + * an MCOS blob name no base for it, and a binary dictionary can hold components no text + * dictionary has shown, so that CONFIG_COMPONENTS does not list them: a + * CoderTarget.SettingsController, in seven config sets of a corpus dictionary, and an + * SSC.SimscapeCC, in one of another. Those arrays used to read under their first component's + * class, a Simulink.SolverCC. + */ +export declare function componentsBaseOf(ownerClass: string | undefined, name: string | undefined): string | undefined; +//# sourceMappingURL=objectArrayClass.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/objectArrayClass.d.ts.map b/dist/datamodel/parser/objectArrayClass.d.ts.map new file mode 100644 index 00000000..3c4c3a12 --- /dev/null +++ b/dist/datamodel/parser/objectArrayClass.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"objectArrayClass.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/objectArrayClass.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAKtD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAMzE;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7G"} \ No newline at end of file diff --git a/dist/datamodel/parser/objectArrayClass.js b/dist/datamodel/parser/objectArrayClass.js new file mode 100644 index 00000000..cdcebb9c --- /dev/null +++ b/dist/datamodel/parser/objectArrayClass.js @@ -0,0 +1,107 @@ +// Copyright 2026 The MathWorks, Inc. +// The class of an object array whose elements are of more than one class, as MATLAB's text +// format names it, for the readers whose format does not state it: a binary dictionary +// (BinarySlddParser), and a .mat or a model workspace's MCOS blob (McosParser). Both used to +// name such an array after its first element; one rule here keeps the two from drifting +// apart again. +// +// Each element of another class than the array's keeps its own, as `_object_class`; that is +// the readers' half. This is the class the array itself is, `_array_class`. +/** + * The class an object array of elements of `classes` is, as MATLAB's text format names it in + * `_array_class`: the class every element shares; for elements of several classes, the common + * base class where it can be derived (heterogeneousBaseOf); and otherwise the first element's, + * which is what each reader named every such array before it kept the elements' own. A config + * set's Components does not come here: its place names its class (componentsBaseOf). + * + * The first element's class is still what an array of no derivable base reads as: of the 71 + * mixed arrays the binary dictionaries of the test fixtures, the parity artifacts and the local + * corpus hold, one, a simmechanics.ConfigurationSet's Components of two simmechanics classes. + */ +export function arrayClassOf(classes) { + if (classes.every((c) => c === classes[0])) { + return classes[0]; + } + return heterogeneousBaseOf(classes) ?? classes[0]; +} +/** + * The common base class of an array mixing `classes`, where the readers can derive one, or + * undefined. + * + * Neither a binary dictionary nor an MCOS blob states it: a binary dictionary's `

` carries no Class, an MCOS object array is a list of + * object ids, and in both each element names only its own. A text dictionary does, and two + * rules give the base it names from the classes alone: + * - Simulink.ConfigComponent, for an array whose classes each belong to CONFIG_COMPONENTS: every + * Components array of a Simulink.ConfigSet and of a Simulink.RTWCC that MATLAB wrote into a + * text dictionary is `_array_class` Simulink.ConfigComponent (30 of 30, in five + * dictionaries), over classes each listed there. + * - The one known MathWorks class (isMathWorksClass) of an array mixing it with classes that are + * not: a user's class can derive from a MathWorks class and a MathWorks class never from a + * user's, so the MathWorks class is the base the user classes extend. A text dictionary MATLAB + * wrote names a Simulink.Signal subclass beside a Simulink.Signal `{"_array_class": + * "Simulink.Signal", …}`, and the binary reader read the binary twin of that array, in two + * dictionaries, as the subclass, the first element's class. MATLAB's class() of a + * dexdata.DerivedSignal beside a Simulink.Signal, read out of a .mat, is Simulink.Signal + * (test/fixtures/mcos/configset.truth.json). + * Of two MathWorks classes or more beside other classes, or of none, it names no base. + */ +export function heterogeneousBaseOf(classes) { + if (classes.every((c) => c === CONFIG_COMPONENT || CONFIG_COMPONENTS.has(c))) { + return CONFIG_COMPONENT; + } + const known = new Set(classes.filter(isMathWorksClass)); + return known.size === 1 ? [...known][0] : undefined; +} +/** + * Whether `cls` is a known MathWorks class: a class of a package whose classes this package + * already names as MathWorks' (MATHWORKS_PACKAGES). Simulink and mpt are the packages of every + * class the node registry, the schema and the Kind column name (NodeClassMap, schema/index, + * kindMap), and the two the test suite tells MATLAB's own objects from custom ones by; SlCovCC, + * Sldv and hdlcoderui are the packages of the config components CONFIG_COMPONENTS names. A class + * of any other package, MathWorks' or not (CoderTarget, SSC, simmechanics, AUTOSAR among them), + * is not known here, and counts as one that is not MathWorks' (heterogeneousBaseOf). + */ +function isMathWorksClass(cls) { + const dot = cls.indexOf('.'); + return dot > 0 && MATHWORKS_PACKAGES.has(cls.slice(0, dot)); +} +/** The packages of the known MathWorks classes (isMathWorksClass). */ +const MATHWORKS_PACKAGES = new Set(['Simulink', 'mpt', 'SlCovCC', 'Sldv', 'hdlcoderui']); +/** + * The class the place of a property named `name` of an object of `ownerClass` names for an + * object array there, or undefined where it names none: Simulink.ConfigComponent, for the + * Components of a Simulink.ConfigSet or a Simulink.RTWCC, whatever components it holds. + * + * Every such array MATLAB wrote into a text dictionary is `_array_class` + * Simulink.ConfigComponent (30 of 30, in five dictionaries), and MATLAB's class() of one read + * out of a .mat is the same (test/fixtures/mcos/configset.truth.json). A binary dictionary and + * an MCOS blob name no base for it, and a binary dictionary can hold components no text + * dictionary has shown, so that CONFIG_COMPONENTS does not list them: a + * CoderTarget.SettingsController, in seven config sets of a corpus dictionary, and an + * SSC.SimscapeCC, in one of another. Those arrays used to read under their first component's + * class, a Simulink.SolverCC. + */ +export function componentsBaseOf(ownerClass, name) { + return name === 'Components' && (ownerClass === 'Simulink.ConfigSet' || ownerClass === 'Simulink.RTWCC') ? CONFIG_COMPONENT : undefined; +} +const CONFIG_COMPONENT = 'Simulink.ConfigComponent'; +/** Each class MATLAB's text format lists as an element of a Simulink.ConfigComponent array (see heterogeneousBaseOf). */ +const CONFIG_COMPONENTS = new Set([ + 'Simulink.SolverCC', + 'Simulink.DataIOCC', + 'Simulink.OptimizationCC', + 'Simulink.DebuggingCC', + 'Simulink.HardwareCC', + 'Simulink.ModelReferenceCC', + 'Simulink.SFSimCC', + 'Simulink.RTWCC', + 'Simulink.CodeAppCC', + 'Simulink.GRTTargetCC', + 'Simulink.ERTTargetCC', + 'Simulink.STFCustomTargetCC', + 'SlCovCC.ConfigComp', + 'Sldv.ConfigComp', + 'hdlcoderui.hdlcc', +]); +//# sourceMappingURL=objectArrayClass.js.map \ No newline at end of file diff --git a/dist/datamodel/parser/objectArrayClass.js.map b/dist/datamodel/parser/objectArrayClass.js.map new file mode 100644 index 00000000..b2ef3a98 --- /dev/null +++ b/dist/datamodel/parser/objectArrayClass.js.map @@ -0,0 +1 @@ +{"version":3,"file":"objectArrayClass.js","sourceRoot":"","sources":["../../../src/datamodel/parser/objectArrayClass.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,2FAA2F;AAC3F,uFAAuF;AACvF,6FAA6F;AAC7F,wFAAwF;AACxF,eAAe;AACf,EAAE;AACF,4FAA4F;AAC5F,4EAA4E;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,OAAiB;IAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,sEAAsE;AACtE,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAE9G;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA8B,EAAE,IAAwB;IACvF,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,UAAU,KAAK,oBAAoB,IAAI,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1I,CAAC;AAED,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD,yHAAyH;AACzH,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IACrD,mBAAmB;IACnB,mBAAmB;IACnB,yBAAyB;IACzB,sBAAsB;IACtB,qBAAqB;IACrB,2BAA2B;IAC3B,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,4BAA4B;IAC5B,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;CACnB,CAAC,CAAC"} \ No newline at end of file diff --git a/src/datamodel/parser/BinarySlddParser.ts b/src/datamodel/parser/BinarySlddParser.ts index c1912094..846613d5 100644 --- a/src/datamodel/parser/BinarySlddParser.ts +++ b/src/datamodel/parser/BinarySlddParser.ts @@ -74,6 +74,7 @@ import { type PropertySource, } from './XmlUtils.js'; import { setOwn } from './ownKeys.js'; +import { arrayClassOf, componentsBaseOf } from './objectArrayClass.js'; import { headerDigits } from './Size.js'; import { recordPackageStamps, recordReadFrame, recordReadSource, type ChunkFrame, type Span } from './EntrySource.js'; @@ -936,7 +937,8 @@ function cellValue(elements: XmlNode[], dimParts: number[]): Record { const first = elements.length > 0 ? elements[0]['@_Class'] || '' : ''; if (!first) { @@ -1002,105 +1004,6 @@ function propertySources(el: XmlNode): Record | null { return sources; } -/** - * The class an object array of elements of `classes` is, as MATLAB's text format names it in - * `_array_class`: the class every element shares; for elements of several classes, the common - * base class where it can be derived (heterogeneousBaseOf); and otherwise the first element's, - * which is what this reader named every such array before it kept the elements' own. A config - * set's Components does not come here: its place names its class (componentsBaseOf). - * - * The first element's class is still what an array of no derivable base reads as: of the 71 - * mixed arrays the binary dictionaries of the test fixtures, the parity artifacts and the local - * corpus hold, one, a simmechanics.ConfigurationSet's Components of two simmechanics classes. - */ -function arrayClassOf(classes: string[]): string { - if (classes.every((c) => c === classes[0])) { - return classes[0]; - } - return heterogeneousBaseOf(classes) ?? classes[0]; -} - -/** - * The common base class of an array mixing `classes`, where this reader can derive one, or - * undefined. - * - * A binary dictionary does not state it: its `

` carries - * no Class, and each element names only its own. A text dictionary does, and two rules give the - * base it names from the classes alone: - * - Simulink.ConfigComponent, for an array whose classes each belong to CONFIG_COMPONENTS: every - * Components array of a Simulink.ConfigSet and of a Simulink.RTWCC that MATLAB wrote into a - * text dictionary is `_array_class` Simulink.ConfigComponent (30 of 30, in five - * dictionaries), over classes each listed there. - * - The one known MathWorks class (isMathWorksClass) of an array mixing it with classes that are - * not: a user's class can derive from a MathWorks class and a MathWorks class never from a - * user's, so the MathWorks class is the base the user classes extend. A text dictionary MATLAB - * wrote names a Simulink.Signal subclass beside a Simulink.Signal `{"_array_class": - * "Simulink.Signal", …}`, and this reader read the binary twin of that array, in two - * dictionaries, as the subclass, the first element's class. - * Of two MathWorks classes or more beside other classes, or of none, it names no base. - */ -function heterogeneousBaseOf(classes: string[]): string | undefined { - if (classes.every((c) => c === CONFIG_COMPONENT || CONFIG_COMPONENTS.has(c))) { - return CONFIG_COMPONENT; - } - const known = new Set(classes.filter(isMathWorksClass)); - return known.size === 1 ? [...known][0] : undefined; -} - -/** - * Whether `cls` is a known MathWorks class: a class of a package whose classes this package - * already names as MathWorks' (MATHWORKS_PACKAGES). Simulink and mpt are the packages of every - * class the node registry, the schema and the Kind column name (NodeClassMap, schema/index, - * kindMap), and the two the test suite tells MATLAB's own objects from custom ones by; SlCovCC, - * Sldv and hdlcoderui are the packages of the config components CONFIG_COMPONENTS names. A class - * of any other package, MathWorks' or not (CoderTarget, SSC, simmechanics, AUTOSAR among them), - * is not known here, and counts as one that is not MathWorks' (heterogeneousBaseOf). - */ -function isMathWorksClass(cls: string): boolean { - const dot = cls.indexOf('.'); - return dot > 0 && MATHWORKS_PACKAGES.has(cls.slice(0, dot)); -} - -/** The packages of the known MathWorks classes (isMathWorksClass). */ -const MATHWORKS_PACKAGES: ReadonlySet = new Set(['Simulink', 'mpt', 'SlCovCC', 'Sldv', 'hdlcoderui']); - -/** - * The class the place of a property named `name` of an object of `ownerClass` names for an - * object array there, or undefined where it names none: Simulink.ConfigComponent, for the - * Components of a Simulink.ConfigSet or a Simulink.RTWCC, whatever components it holds. - * - * Every such array MATLAB wrote into a text dictionary is `_array_class` - * Simulink.ConfigComponent (30 of 30, in five dictionaries). A binary dictionary names no base - * for it, and can hold components no text dictionary has shown, so that CONFIG_COMPONENTS does - * not list them: a CoderTarget.SettingsController, in seven config sets of a corpus dictionary, - * and an SSC.SimscapeCC, in one of another. Those arrays used to read under their first - * component's class, a Simulink.SolverCC. - */ -function componentsBaseOf(ownerClass: string | undefined, name: string | undefined): string | undefined { - return name === 'Components' && (ownerClass === 'Simulink.ConfigSet' || ownerClass === 'Simulink.RTWCC') ? CONFIG_COMPONENT : undefined; -} - -const CONFIG_COMPONENT = 'Simulink.ConfigComponent'; - -/** Each class MATLAB's text format lists as an element of a Simulink.ConfigComponent array (see heterogeneousBaseOf). */ -const CONFIG_COMPONENTS: ReadonlySet = new Set([ - 'Simulink.SolverCC', - 'Simulink.DataIOCC', - 'Simulink.OptimizationCC', - 'Simulink.DebuggingCC', - 'Simulink.HardwareCC', - 'Simulink.ModelReferenceCC', - 'Simulink.SFSimCC', - 'Simulink.RTWCC', - 'Simulink.CodeAppCC', - 'Simulink.GRTTargetCC', - 'Simulink.ERTTargetCC', - 'Simulink.STFCustomTargetCC', - 'SlCovCC.ConfigComp', - 'Sldv.ConfigComp', - 'hdlcoderui.hdlcc', -]); - /** * A classed or shaped empty, as every place a value is read holds one, an entry's Value, an * object's property or a struct's field, and a cell's element: its class under the bare header diff --git a/src/datamodel/parser/McosParser.ts b/src/datamodel/parser/McosParser.ts index 8e6bedbe..4589927f 100644 --- a/src/datamodel/parser/McosParser.ts +++ b/src/datamodel/parser/McosParser.ts @@ -12,6 +12,7 @@ import { isObjectHandle, objectHandleFromRaw, objectHandleFromValue } from './Mc import { matStreamOfElement } from './MatWriter.js'; import { uuencode } from './CdataCodec.js'; import { setOwn } from './ownKeys.js'; +import { arrayClassOf, componentsBaseOf } from './objectArrayClass.js'; import { complexClassTag, ENUM_KEY, @@ -79,8 +80,10 @@ export interface McosObjectData { // Reconstructed `_properties` bag in the same shape the SLDD path produces: // scalars as numbers/strings/booleans, matrices as a Matrix(r,c) value object, // complex values as the binary dictionary's { _type: 'cdata' } text - // (complexPropertyValue), nested objects as { _object_class, _properties }. For an - // object ARRAY this mirrors elements[0] (back-compat for callers that only read a + // (complexPropertyValue), nested objects as { _object_class, _properties }, and a + // nested object ARRAY as { _array_class, _elements }, each element of another class + // than the array's carrying its own `_object_class` (resolveValue). For an object + // ARRAY variable this mirrors elements[0] (back-compat for callers that only read a // scalar). properties: Record; // One `_properties` bag per array element, in column-major order (MATLAB's). @@ -477,7 +480,19 @@ const isFinitePart = (x: unknown): boolean => typeof x !== 'number' || Number.is // data model expects. Object handles recurse into nested { _object_class, // _properties }; structs and cells recurse into { _array_type: 'Struct'|'Cell', … }. // Unresolvable values return undefined (dropped). -function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set, depth: number): unknown { +// +// `owner` and `propName` are the class of the object whose property this is and the +// property's name, where the value is a property's (buildProperties): the place an object +// array sits can name its class (componentsBaseOf). A struct's field and a cell's element +// pass neither, as the binary reader names no place for them either. +function resolveValue( + cell: MatVariable | null, + ctx: DecodeContext, + path: Set, + depth: number, + owner?: string, + propName?: string, +): unknown { if (!cell) return undefined; if (isObjectHandle(cell)) { @@ -492,7 +507,23 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set ctx.meta.classes[ctx.meta.objects[id]?.classId]?.fullName ?? ''); + const classes = own.map((c) => c || own[0]); + const arrayClass = componentsBaseOf(owner, propName) ?? (classes[0] ? arrayClassOf(classes) : ''); // Every extent, as at the root-variable site below: a property holding a 2x3x2 // object array (ndNested.mat's h.Kids) reported [2, 3] over twelve elements, so // the container printed a shape MATLAB never had and the element subscripts ran @@ -500,11 +531,14 @@ function resolveValue(cell: MatVariable | null, ctx: DecodeContext, path: Set= 2 ? handle.dims.slice() : [1, handle.ids.length]; return { - _array_class: cls ? cls.fullName : '', + _array_class: arrayClass, _array_type: 'MATLABArray', _dimensions: dims, _mw_element_type: 'MATLABArray', - _elements: handle.ids.map((id) => ({ _properties: buildProperties(id, ctx, path, depth + 1) })), + _elements: handle.ids.map((id, k) => ({ + ...(classes[k] && classes[k] !== arrayClass ? { _object_class: classes[k] } : {}), + _properties: buildProperties(id, ctx, path, depth + 1), + })), }; } @@ -817,11 +851,14 @@ function buildProperties(objId: number, ctx: DecodeContext, path: Set, d // 1) Class defaults FIRST, so every property this class declares surfaces by name // (and value) even when the instance left it at its default and the instance // block omits it. Then the instance block overrides those it mutated. + // The class whose properties these are: an object array's place is named by it + // (resolveValue's `owner`). + const owner = ctx.meta.classes[obj.classId]?.fullName; const dflt = ctx.defaults[obj.classId]; if (dflt && dflt.className === 'struct' && dflt.fields) { for (const [fieldName, fieldVar] of Object.entries(dflt.fields)) { const fv = Array.isArray(fieldVar) ? fieldVar[0] : fieldVar; - const resolved = resolveValue(fv, ctx, path, depth); + const resolved = resolveValue(fv, ctx, path, depth, owner, fieldName); if (resolved !== undefined) { setOwn(props, fieldName, resolved); } @@ -841,7 +878,7 @@ function buildProperties(objId: number, ctx: DecodeContext, path: Set, d if (!name) continue; let resolved: unknown; if (flag === 1) { - resolved = resolveValue(ctx.cells[value + 2] || null, ctx, path, depth); + resolved = resolveValue(ctx.cells[value + 2] || null, ctx, path, depth, owner, name); } else if (flag === 0) { // An index past the string table names no string: drop the property, as an // out-of-range heap index (flag 1) and an unknown flag do, rather than invent ''. diff --git a/src/datamodel/parser/objectArrayClass.ts b/src/datamodel/parser/objectArrayClass.ts new file mode 100644 index 00000000..59f5878c --- /dev/null +++ b/src/datamodel/parser/objectArrayClass.ts @@ -0,0 +1,114 @@ +// Copyright 2026 The MathWorks, Inc. + +// The class of an object array whose elements are of more than one class, as MATLAB's text +// format names it, for the readers whose format does not state it: a binary dictionary +// (BinarySlddParser), and a .mat or a model workspace's MCOS blob (McosParser). Both used to +// name such an array after its first element; one rule here keeps the two from drifting +// apart again. +// +// Each element of another class than the array's keeps its own, as `_object_class`; that is +// the readers' half. This is the class the array itself is, `_array_class`. + +/** + * The class an object array of elements of `classes` is, as MATLAB's text format names it in + * `_array_class`: the class every element shares; for elements of several classes, the common + * base class where it can be derived (heterogeneousBaseOf); and otherwise the first element's, + * which is what each reader named every such array before it kept the elements' own. A config + * set's Components does not come here: its place names its class (componentsBaseOf). + * + * The first element's class is still what an array of no derivable base reads as: of the 71 + * mixed arrays the binary dictionaries of the test fixtures, the parity artifacts and the local + * corpus hold, one, a simmechanics.ConfigurationSet's Components of two simmechanics classes. + */ +export function arrayClassOf(classes: string[]): string { + if (classes.every((c) => c === classes[0])) { + return classes[0]; + } + return heterogeneousBaseOf(classes) ?? classes[0]; +} + +/** + * The common base class of an array mixing `classes`, where the readers can derive one, or + * undefined. + * + * Neither a binary dictionary nor an MCOS blob states it: a binary dictionary's `

` carries no Class, an MCOS object array is a list of + * object ids, and in both each element names only its own. A text dictionary does, and two + * rules give the base it names from the classes alone: + * - Simulink.ConfigComponent, for an array whose classes each belong to CONFIG_COMPONENTS: every + * Components array of a Simulink.ConfigSet and of a Simulink.RTWCC that MATLAB wrote into a + * text dictionary is `_array_class` Simulink.ConfigComponent (30 of 30, in five + * dictionaries), over classes each listed there. + * - The one known MathWorks class (isMathWorksClass) of an array mixing it with classes that are + * not: a user's class can derive from a MathWorks class and a MathWorks class never from a + * user's, so the MathWorks class is the base the user classes extend. A text dictionary MATLAB + * wrote names a Simulink.Signal subclass beside a Simulink.Signal `{"_array_class": + * "Simulink.Signal", …}`, and the binary reader read the binary twin of that array, in two + * dictionaries, as the subclass, the first element's class. MATLAB's class() of a + * dexdata.DerivedSignal beside a Simulink.Signal, read out of a .mat, is Simulink.Signal + * (test/fixtures/mcos/configset.truth.json). + * Of two MathWorks classes or more beside other classes, or of none, it names no base. + */ +export function heterogeneousBaseOf(classes: string[]): string | undefined { + if (classes.every((c) => c === CONFIG_COMPONENT || CONFIG_COMPONENTS.has(c))) { + return CONFIG_COMPONENT; + } + const known = new Set(classes.filter(isMathWorksClass)); + return known.size === 1 ? [...known][0] : undefined; +} + +/** + * Whether `cls` is a known MathWorks class: a class of a package whose classes this package + * already names as MathWorks' (MATHWORKS_PACKAGES). Simulink and mpt are the packages of every + * class the node registry, the schema and the Kind column name (NodeClassMap, schema/index, + * kindMap), and the two the test suite tells MATLAB's own objects from custom ones by; SlCovCC, + * Sldv and hdlcoderui are the packages of the config components CONFIG_COMPONENTS names. A class + * of any other package, MathWorks' or not (CoderTarget, SSC, simmechanics, AUTOSAR among them), + * is not known here, and counts as one that is not MathWorks' (heterogeneousBaseOf). + */ +function isMathWorksClass(cls: string): boolean { + const dot = cls.indexOf('.'); + return dot > 0 && MATHWORKS_PACKAGES.has(cls.slice(0, dot)); +} + +/** The packages of the known MathWorks classes (isMathWorksClass). */ +const MATHWORKS_PACKAGES: ReadonlySet = new Set(['Simulink', 'mpt', 'SlCovCC', 'Sldv', 'hdlcoderui']); + +/** + * The class the place of a property named `name` of an object of `ownerClass` names for an + * object array there, or undefined where it names none: Simulink.ConfigComponent, for the + * Components of a Simulink.ConfigSet or a Simulink.RTWCC, whatever components it holds. + * + * Every such array MATLAB wrote into a text dictionary is `_array_class` + * Simulink.ConfigComponent (30 of 30, in five dictionaries), and MATLAB's class() of one read + * out of a .mat is the same (test/fixtures/mcos/configset.truth.json). A binary dictionary and + * an MCOS blob name no base for it, and a binary dictionary can hold components no text + * dictionary has shown, so that CONFIG_COMPONENTS does not list them: a + * CoderTarget.SettingsController, in seven config sets of a corpus dictionary, and an + * SSC.SimscapeCC, in one of another. Those arrays used to read under their first component's + * class, a Simulink.SolverCC. + */ +export function componentsBaseOf(ownerClass: string | undefined, name: string | undefined): string | undefined { + return name === 'Components' && (ownerClass === 'Simulink.ConfigSet' || ownerClass === 'Simulink.RTWCC') ? CONFIG_COMPONENT : undefined; +} + +const CONFIG_COMPONENT = 'Simulink.ConfigComponent'; + +/** Each class MATLAB's text format lists as an element of a Simulink.ConfigComponent array (see heterogeneousBaseOf). */ +const CONFIG_COMPONENTS: ReadonlySet = new Set([ + 'Simulink.SolverCC', + 'Simulink.DataIOCC', + 'Simulink.OptimizationCC', + 'Simulink.DebuggingCC', + 'Simulink.HardwareCC', + 'Simulink.ModelReferenceCC', + 'Simulink.SFSimCC', + 'Simulink.RTWCC', + 'Simulink.CodeAppCC', + 'Simulink.GRTTargetCC', + 'Simulink.ERTTargetCC', + 'Simulink.STFCustomTargetCC', + 'SlCovCC.ConfigComp', + 'Sldv.ConfigComp', + 'hdlcoderui.hdlcc', +]); diff --git a/test/fixtures/mcos/configset.mat b/test/fixtures/mcos/configset.mat new file mode 100644 index 0000000000000000000000000000000000000000..d78bcbe9886346d1d851532c2b84870a233ed64d GIT binary patch literal 23076 zcma&NV~{31&@Mc-XJ>ZDwr$(CZJYPlwr$(CZ5unbXU;zFd+IxXzfPs9E7i%Bq>}DV zCy^0QmKG4iXQ8FXml05=F}1KZp~jcDHgGnzbF|_7S0*ID%1n(fS%#4XXK2}z>3dE&&j~d$-?}PVPwVs|4T){K>tg?5;BPYIIVx#J?qd&Uq20K$eMo& zcqjl4sc)=rC{7!$K;w^h_E#W=zo8&Mc2>GpMq+wu^=VdaYDzk8mL`b8EaVWb_{pu{ zv_bIwdY`EvJ!ldgu)&UrV1iN5UvMBka9I2QAaws91n~cZfEude&(glsR0cU|q<`i7 zfD9Z8_G4#fYGo#4qSKn?;G?5q;$d$FD~Lr5W(KwVU(@dD|IJa9hExnuJMuJc6uj3y zaMuHJ7xM@fXo&xOZHLL3S#bpnIUR&DDTzY_p_6z?2QwAkINR+jtL_JwFS7BsvSlB9 z83{z7F?|o6`mV9Yb0+{W<{N&axBqZK{rw?=3FtfJ;{)v3y}zhnn&F*DVFChYOLIG) z^tLs2y$Qdpaz5hRQxaWvE)$=g-)s(k=6nIuUCiI`yoi#MW@HtT9XGvl7l3cI)*ddp zm>*vv$h#k-9G|&t$_cV4{I<`tX#?+tjW<+yyO( zg;y)Qaf-CrX(6bb*LDb5$O_?an}ZpldTkh!SHjHV%TNxLRo_+P*563yE}>73bmMl; zRn7EOYQ%xy?1FZEs&57~frVHFeOiH!g;x>I%;;xdGZ)s1z-icg6HLA`HjNVj)%7iY zr2MxR#ja`{3Y}-gOIg|X#ATB3D-#7smv}lc0=Tsqwji zED!kEVekDL?gfm~kD*1AzlDF(+=_Mj24vHT`03=;%>-aWXlWqWe^qllczRhKrZ*kuvNh+2JBEhB3nuJ}^0F0hmUC`M#| z)uNo@ddV^-_t-}eQD#!geIygtlBNEBU^xI$6rw)ydyp^-GBxuH#B#JO3kEHJazttf z=B(t`vaTxd3k2()ABb>l`>g zFx#Y(%aM69d18i}_3Jd-Cq!y6C7D`q@}iOK*eZWn4h17`y-`DdyE1g#xPTkFR6LQP zcTazYKnugtOmn9#G*&@CdP*ki3csOg(0@<*Jm}_b^fL{jDfee!zKe9kD5YgxgA&-< z3rv)o{+!Waj+;)}=w8wdIYT*RMu^uxA8tvYAZuCflKZx(zGe7AHN~YLC5GltaQ>j{ zYDA*jIEI$FPjv_6-a}2BeRsXgwNgta$?)uHL-LIY@%lYb1VdOz?Lvh zoa%;^{$dvaVbT8E8fq}OTYH>QT9H~V&r%3W|Kb`a377R=MmZfLP3{k3%D(J4X2LYR zUSS(YMf%~peV(+s*FD6i+_@B!Qq}}+G^h55HIozJM~abg667!Xh@5b8+1Kx~D_wK< zWMLojJ+JsVJsAPRnEfS>fwHb!-?%!7*Tz;D7J>~H+_3=eJq>fb={+tjk>ts<)>EK{T);$-V+%X zIY!7iE==JBviZ4)oUic|rC#ts18XM1et=34L-Q%vxR1an(R3Vy3VHG+Y{Ff`hw$5c zB07;~6sm#;Sy&gpUD&>=KgT z%7KrcSEM5L9nWU#HQ9(2Y0u?EdjkuX=*z{nkni~w=fwkKRV1GDD-bTL{J|c5#6(`L zf&GUNS6u1}>3(4u@mur_(myTps-sY8g>^6CS*c7g;v(OnaSQti^N)~WdkET_R~W^M z7l;GFs|58bU<9mk9T5n%YqYM{HBZ-=0#3WcYG77;rr$6v+&e+HILp{VvL_&i&RrZ6 zM1*~2!Y|fVN*-xwPN?!KlId}f2lDjUi&EXk30_pw3au@)w(O`8>BpFwh*H1P?qcVG zalJx?KZP;$xk=md&SC_6GYdH1;80oUO@XOzK2U9*{75=9QW$0ve~;V}z0-FhW;;`6 z;%i8{B{__hWN|7JIT@!uDi0of*Js41#FZUs`2n|0p2bLMS`C(r2X-kPs>o3S12p52 zxIJhP?X-f$A8Q-DDM}={8$&oC&!U%2JH-0S4nBeqGt) z7ZDdDODp#C+0l~ivs`%vrNpCgNmcK`7b%EWS@<8j`&L1@9A?|o*b-A5LKbJ0$bnLz zZ0vztu17t*oPRqnZvTFwlMiDM0i$%;s}Y7$8MK;*lLaNY%%=!P%5di@r$OUmG_cEa zDq2L8(?+mQ(k4S%)5zYX4J=6bgS1EAq^uymr-Xqai+};q2Z_Z~ly|a2i@{^NxD!K3 zqW!{sLU)trThaLkBNfoq1rF-in&L!GTX?Ouj4 z@S4e}2-;nU(;Tag^88^tXU+ zBzMFkFp~>lobjTR_!>ZA{O9^sSvD4Cwhd8*B#RYg1-f}3OMG64pG|V|AK~?K3ngHM zW^!5-Hy2iS2MdA24x&KRxjN(4&2!9-w1)kqWhC=j5wp@r%TX68Pe63FIhjZl3Wdnwsugwc&YJn zllnp~Ks$&WlU}%$VQkYyx9G&Th)JO@><>#{LFP85&03RMc!{B&nKy8D!PY@d~yW@=~!qVhTtxknZbu?0yDkg9Sk#?GO5blXCHzC*J}t7ukN-b;XBl7fRy( zUkn!)DYr3y=$1-}MV=+1DIr1X7$LQzIf?FS1aG9DNZJZZn+j^n#W6AQ7dTOe9IS%a zh1;u;=*j6H|0GnZ8V!bz+8)FRpxlO${xB>+wN1}>X`~?6v_nd0NI24Me^#5Z&kv2Q z9f%d2+@q@y1Q_aKBpjCWb~F3K5eHV)QM*{4l)ssZ$9E)gRbsI-S#`P*oADeSwIb$j z=Neo0vX=MQR4wc2Ysa`o&Zp@HjY}`a#5D?b?s3i8{3+sbDbQFAda2zOs>cGFiv|-S?OsXEE&nbF-7r=MFImW3obgcwW6&Ib!fR~SXAlt#D zPtC|T-*P9XO;Sk5nHcsch&6jVjbx&*8icAN6~V6P!mZ@n{Iabuowy!|K8l;J%b`iQ zZKIk+EeBcpmT^}r`DlpNdQ#e+10fI$>A^u9t)F}$$2R1q;=m3s&&F4pgPR{oMI36O zS9Yj$hw3@HCTDW48YI!Omg3LvZ7HLmnmLy%WsE(@14bxsuQOZFDObynSfM__^yci4 zyWui22hrT15Yo`tFNiDRV1v7DKMODLD}VtwANZHW4DaDkJ2{QCanX&&g$i3` zTwYbOA2*?jnc5&4+~DLy?$qL@01Yr+)MxU{>`=vRz{EZ zZah3NN*m$tIz_W(>*8ry)rbM5lNC%Zp7GE8=d`}Vc1tV{wB)r)MV3~6aNYfjNJZ?o zA?srdB`>PW>3mWfqXt!~gC|wC1*YD5lh_Wq);`r}@hf!c;2vykYKm5Nj{@&qm%`GV}Lge){7+r%1u z_PCxR$u}iT#QITd)-aRkj4X5^(UP%6<9LN%)|!-){ul%cTblKJ8UHO~?LF7ixVAbF z1HE3IV6-JT-rycE_4KDX1bxEnmS5)5A*!1SZ;$lwVs@EHx?03``j5wMnPXIDZtW}& z&{XbRiicf&Kl`h9Xf#0zu+~~Wb1XeZI@`9W8ArK=&Es@C`iCNd z2rvYab>C|PP#FTuwN%dQFL-5%dJ$EYd`8lt}F=ji>d4qO@ab*pz zXav3hNH=4<7Y=bRd9=AcFIiT$V3x}QnH_x|Y>~UH3ztUn9J+_aSne#Y?$Bku&iaO~JIAAPOROhH*8-KIze z?JQDg>mWbQoDiB-l*mijJ^g_Rfgk(^T2pHZWk#)9Ktm?8uFhVT1+VnWj`l7?Z+V%1 zx^#;#45>SB9)_4qMqHY*EJOX>vf99rUJwE`Eu>{K6exu&Yk^wkV>HgH`l2DNfAksg z;Rt>`iC%MmnF8BDODu;HS$XND)0x^?*IE<%OEViMVPJf>tqEj>q=q2{&fJfvwaCjr zwp>`+uBfKH2@?hV0ve_c;^dL$QNF1s$5pM@df&bd=Uz))#dM_+JoJ~Ew``z{y?Pp{ zlW}cp34$3XWENUuj4V=9c2@)r;*}%yeq*d*B4wE=DqduAUh{{x3YYD}%S*FtZ5X|0U(;B#&^j`0?b1Zbx3`~l$*)#G zgWTcJiC{@aD&V@#C&dMGM=h8v1wclgru<=jfbpa*a*K>>?ryl=ct>kUt$RCff$Qm$ zJe#vpaLE-0PLiUW5BXEOVPM=(YUZ>gyBx(#&G%8oQiI)V0_nCDeF z2NDi=wvI~=L&wVJvt7o7bY&NrN79OKaHS8nc5e9(tIoB7r9$z|=HJwL6zb+BL=LQg z_lSd&tJXF=Rm7V8<^++Y)@pjiar83>HMCdlJIh?}t4C{Kih-Cq=vU)x2Tl_l z*8t|(Y$tr~%j0Z0=k@!e1}AXi-%Qna4w*k&@{Ll3$2O_6Tj??xZKl6TqiB8RVBn#Y z(>J?v1B32kVc!OLma(Z-O z9g_-j!#i1IpnH;HjcE}OQMG{Wd-iGb<}H&Z*ZmX7!nl5wDxOWXIBI~I`;(^fZwx>? zX$V7psL~6>$e3Jn!6U{eee|@9&PSC%epV3(x|rf2DEyW^Wt^*Q6v|%uqLNwyw+y{f?l=*bk<$!c(4%5Lcuoh3o?d)Ag?6twr{z|1EPZ38sH`|9>$^2a z=aX@uf%Ib#Rk~*TDm6(zb$5jmtI#1ED9AO=oSu#iob?0K$88L5xC&s(x4t zepmv2!k_p=9|0otU!PuJd@m2(1e?%2=cqrKzB_lldhXh5AGX2(;!V&TL7DXJXNn>Xe@^tZ&q zj?({bM-w$Dqa9)vs9nzU@Hp8ZLjLR}h-e%xNYzZ(Bh>Sb*z%S?m zt;jZ5#C#pD z{xkfGT>Y(|6AG_AHip7 zP_OXotbI4-4Idf1UL1oS%9mQuPe#<;>bA^EH_m9ed$uL?rL^(L{;DN3y(CTaE-uQ4 z4%i1}!0D;g0@S5S&c~ZqGxE_53)rEiAzzd`GoY5psCLx1qX#QWRF*f&$E;r+3C~mk zfbdHWK+!qM&3L63dovJ->i#nb=9BgV7@QJ-X z1oiU2whB7l(;Jp^yN4WYHU(y1J%Qf}EqCMiARbZfTYEd22NjRF1g^PWlD{dFCCHYs=e z!4xwI@)hve&EHE1z?-uhi$%ib+=XV;BRKFbH11(w-2F1{>AC}0t^EDShCgDxul$=a zA*7P2TG+D;wUgGBXt=3GJ9yJ}VP5siHkaFVaPuIC8JhWN7P2x87)XiDuX4Onw&X8_5@nc0l z(fXqs8?uTTqn72I&UU^=LPU6N3$Hfrq3TegvEy(Am1*kg$_xqP_DpcXsnKs@4Zv#C zAV{Z@)&hOXlh9@R3&NFmB(NA07jbfDVw+)Wm45=0qk`$#5&NS6GWm$dVYQ$@=f|9d8?4^>kCWVcuWHlUqXw#vBAewaxqsWVbe&3LTL4X*c#O`A)j}vo zB86Eb0ah*`A~^wtvX;fdk)d_woAe>58Z~NVyVU(8+q+mwU$d<%JV=B^FcVH!y z%%g?zdJX)1q$Uz`rtT_gRS(YLL2^(@%!5{U`j(TqD<;?-<0&9E;&)3fXHIj_i@tjH z-0k04HE_(A55s)Gtwf#Uoz$k%`h3|%^qyY5Vz99W$B$#lF{i>;WE_Buq&2$CJsVT^ zRIn?5LYk;pjojC7RlNUrzyD&5hEquzh*+7MNYh8NcAtV{7Wb)v&|Q7>iHanM=mHPZ zg}sZX&}a5?{x<1ySIr09OfV;86ma;q!j?tHD(IKXLUo7x(c*IV@~4{0;enEhx>MD# zJweBqc1!WryM|2g@}o<&y2CyfuD#|E9sj=h?8hl6dy;^!2E(?oiDK{RQe+r*GW7ie z3tfYrN+lE6v*ykOsWnFLT8Mt)Wl9%bZv1JW`dfQ)N%+eSx5J0#KtWgvles2pjJJR{CP3dJ_+uL^(l>hmJ#UJ=?mrnXL4qOhXOaZ=g3tRn$S~J9 zVH_3#b!qk}OG~raz1`MVtBmZs{qEEASwPBCF3HzrjiuiC4~Cl?%jr%-+cW!W_U}Dp zI0L*`3Ya=a8PyXT4emG|^f}@oNEnKxPrjEl!pfjBF23(RI9L`i(EO?g^&zv{R&yOL z{-mI`X`!ldOZ?ODU6v0;HL6XuCS0^z?+tpoiZLq9T^RRmo zLv_B|%%5~0yxVi|{#3mqGvw3sVGmP#{Ss^g3UMT?!Vi<3-wv%b*Db>=jG;Q6uOzC^uMFNr3QW4st7bvvClD!$;DhEIVa#%V=TRj^omGYx+WF0>^0 zDpmRLd%wGz7dIrHX0tLcY+E2%F0O6gofO?}&dj7Z5hgW%?`SQ;xu51Ft{gSEo2FXW zot$o>@ZD&6;_F53WPN46HEGWMG~`3_cFMjj54|Q27n|?Ck)eS74W_$ur;G1`=0bme zIL~}o$kAIjnW1a@hV5LX_KB;Hqmc;Q_<$`2pd3JzAI^qjt7y>yTG;Uiw{XgjR6}7r zk1IgRD)J-Kq?FGUTkX#zXDsYPpfX1)r*;ZljPZt1U|)0u&Htz!{mR~L3ubct-t*=U4KdVB0X?6`B!#n2xryxh8*IPlB5`q1Q!Jt9GI_Zvc*RBh!m zC#%;y96KFHFA4XyJK%!NGBDV+_BGSEOq_ffzuhTG%r)Ax2HWM^vxeHmXvy-w{k$`9*YizzxTCAKQtLR z6f0f7bIkVcI?;e^WV&gs@VP1CxMW{GXfYgyKSF*B5~>EYI6l1mz1%c*-MzLe&*MAA zH1o*sozpv`d;I;b`C}*alT&P0+iDNkJ6i4iAN@0>@jv=Ut)t3{t?9z=+F)()onBvP z9%1}Bp>;SWaat(rPy8YX#e1K)StgVS4Dm7Nhw=yczXa8pXslImw5E_y0+!|1@qu%L zH_kQwVC%*`ygPFp@`CikH?S-E{rTYiZS!qiI2PNB@dFwP7-@}b)ad{Dcv^mihx`%Z z#luguOK$T)UNN}HDoH3>PT zZO=g&uO(Q9=wzuj63!z_{hjSaBi;mI5pJ!$--CiW2dL-Ib|UrCAEguyTTU0mffxbf zL0d7yGOY+k{o@FYTocz1d&Cf#A4>qv;~%i(EiZa)VIrNZOxQXkZecqbZ}b8+!*bZ4 zujpVZx?ER-UEz-z4Hj21KJZzSFKstmzlY>nynD6Ub_~W+`$wd(7OqtOnT2ecHrtzU zUMH%xg{%pKCDFz~0coZ{y~r!60c0^jN((862=dCam2S?b+VH50I-U!u3=Cs|+%dgu z$hkOJA!R3!Zn1|>&t}8xnGaUfS zKP`IAdf^An9DCZqZX_pCpO9vfj6E~A6=zGpQJh1>liJ!f+}@SWN0&31>k;YnhB4FP zyRHe_sxe^Wxe28moEZ&n>%+7C^rvKtvkj7D3pCc-C-s765bb6)l%?(9>$UBu_Oz2t z!_5u+TB;TsF~iQTd+Xcflw|6@LW9@ZW_#+|tdni<=jFp^$OFx`Flh6(CG-8a?$3%b zpmM)%zTJMcZ8K&tm&$&&+i_=ct0;BPswWATl=XqVz$8$H~kpET=XX=71 ze^)R2?Rz+u|F+2>-UsK4tP~!Qp1P>xwdLf@8gXilbFCD`loG|p37NS|w*!Auil?@7 z(O6%h+ab#hpxxVg0ilg~{qb<@?)m=k?rBUQQnn^8m9%huZ za26lN;>F8v61v<(QaOVC%#xbQAcX$CCg8yDJya^g{htY5lnze<1oI? zGa^-@j3mWdy@b|VUBCn+_M)RBN_awfOUq7;lG|%j{t#AjUOCjCb8lcjFKASkw=qA< zg(HH#=9wcL(~!rYpv<&`OZ>$jC2gkxX_D%FjmmS4>U}kHX`YM99tTVoR z(IwHf(`}cQJMMWZwfG_<^CGnEg(SrbGM#_RTQ9LSf1+0wXYu}hxNSunTC2O4`{KlN zZ3vhi@p-nnb6dUG^qn}BW6-zB4~RsCO4MI(4R>xrO9_x(uwiS9O7+PpMsy?~6Oay@ z{G#yr71WeLt>%OCr$Km)cTqjb@M}GUA=CcYmy3sGZXeZF9yg^~O#J``4Rkp@oTe!Q zKu@crpu;gT)p!*IyO~^*Lw?0iZt4}D7GA+b@H^qgJ!xOe9PX??O#%=0r0ab~hCP|U z+%okwPDtGak@oLw84s=3CE$P5`;o@>f9|E)Mw1oZ3YvQEbJA!J+#09;+Ri~NF_Zpi z&T*5F-oJSAx;D8YKE?30UN4uVtF=apNvnE7v>y_E$F9$AIJaDP#d3Ur)Y({+#Z1xD zn>wSx%Git&hI&mA(W&E>;({ef4cyrqRbzV9i$S_M>^fzyuc5~jpMX-?UdiH1^@25= zRR_x=IS5bCQdO^(W=vkGAX1E8j3!xU0(ZuhsRt>UGz1c>hP_jbaG0uce6u=zzuIp> z9VP}aW0)|_2fJ_IQsrGjZ)-9kD5cXv%LdUjj_o->uvw){8YyO!0IL=p{|hCFpTr`) zj4crYp|%_%A(d`|a0o@QSYy!u9C7C{#Cu2O2)BMguJQ%xdb1zykN{()>ST46KC=K9 zsrevj12EG_dvopvaWg!RsFh{BN`23R78VNExnax(OukO=NxSmox{4?Kq9SztA`lEu zqu&fuU3k2fjp@2AWv%~uqW@t!l^f||TUl*!8$5w323&H3&KSS*`|GmsQn;ql7dr}Xbr5f+82#S$c^>01|N78o46lZ=OKTn zrmu*1sxlt}q^7D+U&efBtCH^9`Iz+@-Eq zZN-PY_(xl=xU#Gj{E9X~C$LvuoxTqcUYoRTJaw*7xff=at*4cQG&h)XK5Og~fqZq8EK zi%GSm?lk;BmInRUgl^eMy)WX@*|=*+v1FaSea&|NaQp1!_~L%oE`Hn{W@d6a-cgLdMe#)y%Yu(d&Yw@XLv~Yc$$2_I*!ylX_;Z~V!TO& z=HlgBUwm+>0KX^OQl;8jrP>N{*b9FCJ=T6FLvzKczU6rKrFqr^oO%q-10fQ6|Gnze zl*F{9#??2ih6ZE9A{#kgp39idpiItRM@;*{oR6O;N%SJPn+h%>%AUZ_y;uT2MG2LT zG2l}P?HeE!mK=oqROg>v8uEzgLe`jr1eI|0$y!A+YFmkdWOmsA4RvVBA{Cdu93L>l z@ZNJ}%msI8?_zKvp7pm?1UIMrQAWH9IQqL^}!m_n^xX>Cmhvb&q}UoDVVs3yKfIW@bbYW0I|-zKK)322tQ$ z(l`&2)74>paOxlnYJbeRs5Wq8&f7RDq~&Wz*H#B;zLmfvj<51`4cvZ=I*K{b<#69f z6qX%G0!b)Yy7kTD@3Mc63~KRs`H((dzB&$X%3V6M`;%xn^xx@2Opnab?ET-yk|!kr z%S+8|6wi&Hp9*|QP@m`9;_Y}1^hp{vM+G!3%QU{{Q!D5%|NR>H`8i6{`lrNy`E9da zgz&(9kqF_wuXI&VyMq0vYaWGmBwqhde?xmr%F)W1M!-NweL&rP#JOWp}<9Quj)_nqs9BB!?bI| zwDqV!ucSB=6$%>|^esBK41B3d62qfd?fn94^u7YWrtvIoUQk2VW1gvsqdo}Otj=`_ z@lM?ANf>E)97VRq02Zq&CXxal#7<8VV$@HWZsBkj&z6E_c+WYfQ9!3i>UB+o4Xa)t zGG*CC0?uf9iery5$%RH9D0$!ruHcd$4&b^n; z#y&h{qL(BJK|IWsEV;A^9W!TQ2t#2W#}EZ$z#-ac@=CADX%v7Sr24!5sutguSw!`l z7xZ^$)kY{6$=`cN>ZN}DgTbU#ZC=SIVl&b>D()Nr&=QFv*mmVHO5qAg147L5HmO*z zJ=am%E-Yz833*juve2mdX0{nzeFJdyC9J7xZhA_NS=Lb=hRH$T!2*POx$}hK+DBD8 z!g7DZh=kRawpo>N@0>foGy*W(g@8?|>5KlTdO%ULvNK^c8V@yLBMUlX1wQCZilTu= z_-u5ep3CF0!MXfC^}rR}RB#&JJhJ&kFJ=3m@=ilp^&EPw>!9ryI5_)Be%EHxO#+iZ zH=W_A{rX|YeZ1o3V5s)q%(|`YuF~Hfpz9S+Y3UFRwyS$or4^%&Ob3obtiN2&L`sD% zUlSj}#LhJcBp-CQ4>{CdWQe>YF2zDQH;}k^@()J!7yf8Wk6_H07*q%pQzdq?kU-iT zf)0?1nnu{@pFYm3h3SJ{%P`pc!wN~>2Kf94b{{ucklqVUmvbT@tPRv`2=ZTGPJD7t!CIqG?3 z`P6<}R!rKoZ|>Utpq+A_jy5_iJO~TMZvK?`_N25wG~3%9bL~~HohtACuTOlbq41wi zY>L9BQ`a(fF_+3qiU`h`2ldXp7LG&gmkk}?4d-Pv+$a-7$`T>F@ZI>G{2lNW6`!IV z$*jYn%DsLD1%>>y?Z&;6JtI~evT!G@$9HZerZ?NzYl?09;6=@G4EiX!3z%E=CDqgN z*Q49RTr4EF_;`|vqkvO2{niZ^X_ zute$!Y1@+zQel-gd{$iUC@%;;5az@-6_4>KR9pW6jbAfXc{haPg`>r<5;z-HCch8*Y zJ(+?~j8Uink2Mmckn@?!v;R_j%a^hR_9&xq#zq%H=MJ1n?}J^jjJOkn&?QGoqKe}s zFUrloQ2Rr^Ui9U=8nB^`fUf{gBFen58Q3p;gU!se#IIQ=aZ@v#mRM7_YUv=z5K5fx zwiF#Vv=(}jZ!iAwHv=I=veH((B7_N+>Ba@jq1(Y>F^CIO;6*7bv}45nINAx<@gOTS zi~W>2Ci1Chg_C93t%y8e>AG>&Zs*WA(^#$zy{-rGQez|OTOj*Uxk zEE9*~mv~rl80V|N4Lvl48f=~}?!BoP%+o8)@0Tr2%ITe6C15NDmj;%1s30JY#gF7u zzh!m71VI9vXpG}lT4#Tfc{EJf;GXfE(DG|i;`pNaf&m7Qd?tp7Cpj3k@W?z;nYtOY z0-ESk1?Jt6v&4&(E!)h-7whJG~qo`B`BfM@L@{ zq%VN4xA+UWj(2o?52|RjFUM{g@48l!vOfs2B zHw~XEpBS3DP|M{9z2A(LBSRhAUQ?-$$}^7$exfRlXNFKW9PwL^ zT4XRWu9&A|e3M(c`Apa~5S73O)52e~aNdko@=@<(88x=-pwrs3H9RsB)1`-0ZFB}q7#bWP~!j}iqv_()kB23gb5RBfIvhV%v@fIk4OR%l94+$4;0ac=J=;0__(%L+$+!J!xgFRqu&F}YEv#6Zb4w@;^o zavOtiZwh-d%nW1i+K3*Mr_@2aY|xiULiEHI(}Xa>ZmJ;~6R0_I%iBmw=NCqUWl1c6 zPiU!!6QtljQ|&xL(GX_E<}OsmTWPwvb@T6Cef_`$l&(LhY5afzc8z~Zd~%juutpfnI*(`-|C(MTQDhXqri zs}m*m+1+Ny7Z*R`!e~Fen_NXx6T9(&3!R`uv1klnrX# zlsNWKJ9>j~+Km+VF=>F4qyH^cg==h=WZu{a&wiac`K!VqrqhjI^7N zew`!cE7t0CWXv)rKyqr#m?9ioy4ZtCb{ugljLv%qZJmg$D4=TnR5|v{FVJU4O~Ni1 zG+F2FjN5Hh`JlZd6JBz^qR7Fy&BfK|wZJA3kbSYrKxVo7mLs5l7s_1adl@jPQ+YMs_vaxcCJ_!&CSdCO6LqFQa; z?u5RXv76%|l=Jakb_4j%yJxR_D?j4@?1{zll!nYaD6RC<`ns#*T$Wb-tX2}Az|$Wz zV`7#ho(u*N_G==KFd3tq>!#}n(xZ~|Olm%lEqm$C+FI+0Cokh^)1ciMOiBDQ@XbW1 zCRoTfR`GXowDUrM(!2S~G$h195tvS?K00?JeIp;ME#pSEE5{)PW3y+lQ$)blPsnU3 z!Ga=asVMP_;VFy*wH38s-0&e(f+iwgV{p*=UgDjvu)qLHNem%6qMa+NI@Q$7LEhhZ zMat1wnzV5PT47YE1jdM^(G)IXL&zr#SFw0QUb9(ZG**M?n5}{K%_jb9)$C8u`4rZU zNLj*kmDRNSBwT5~PyW-Le7+{9@kE@J2Q1gi~rLCHA9G zBLGw4I3IIdvUiVVVM2%{gGQdj$AUL@X}kJpu7px~rl8I!MfFW# zeGzW*vWzD6#z72d*+jPk=RU#f_)>h*UghJrr@>i(D9;y%J2B{`90N^<3<&9D+s62`yZ<9mCKF3xv9;fpoe7;G4>+u3-e6g^;@;*K9mkjU3z&pzDPSgJ<aX`u>UkCK(H8HK#aUwCSq1M!&M*2o_qlgHChDrqg8-O% zi1yauZH6fhs{C}C05{+l;3n>G?bf*O&?UnxES8tz#zc^y1a>PA{Q`U7CY-DO zs03$6zM_356=5E9buzV$;o}mq1l9A{fX+(9r8opR(PBYY6}Yhg>;oaf2i!A8!UeFN z&xx|JW#H;<%mJg>>AHk1(KT#N#N33kEN$HcLZ5h`+YhcRh*}x$gh~)MV7J^s>s;eyh_NI4Y_n5|Q`<=~0I|SN$HcoPOJlusqM3)g zg>RNjm2px#;@HQ3jyYw<+Lq#U1o%*#Zq@_>eghpU$;=166Q#Hb8m&rDx9g%0sg|f? z*;wPSprNH#C{LD^NvlobFsrNck4oKVT{4+O0?ZvO7`7~UN9a!6q@3vt z)?G=bk{RdlNO(|<(^aJcrR#=_4aK_SfWoc~Oyb`=F5kxW>{fxjqflY-`G6TRPtXOM zml%5yVI#s4Qrro#4!PX!^vd5#uz!H`1Pu$i(A{Wnic5L;S!pFe<#=hNKD2YzLpuM~ zzsGFu++%(W|Ifc(w+>ss{&^BsYKjdkIOM!l=Uy*v9zXv-;<3&-xSKf#zpLPXpX2K} z9-rt`E&Qp{Wnrp<_pk9BcYpVZWxTTr{h#G{dOjSvjsCE4>2&v(W4d=~zj@Pm)ptfe z?rBHedqWdXzuWAi_w$_IdhV>Hf}k3u5 z|1SUl0RR8&Sxax*Mi8bFCvnmDrRcE-AA&+P+O&rpEm3kLgt7&Zv5)SG97!9IyTo$o zM}A9xY-g9GEYTvDegP`b0SIY@Z-z6o^V(I*%IF7t-r#e>Bg#l zZ;8sWUlZ${zqV@fIjlZ>pzqR)JL-cgr z{<~ev&w|$d($v1^eBXWY`mI&HZ)HA(-*4UGUu?0fwIOFu^QiT&`1Bz01&t+DMGUhh zia7(!KZWhlL?vM`7CcTG`f(Th@$=jJ`QtEO|MR0|^`j{S0R%P=K=i1u97Dv7wVlQx zkuxr$9?U4Cxf3gCKtymw1avumsRL?q7yQaj6Un23uM@|$=t6fhzR%RgY8yLAl16&} z6Au!ZG)9kb9rhpw7GS{K@_LSanjwrPB7Fd+1fR07%E#+8B1_aGiU>3NPs;{DBq**K zRo$eH#>8KeITTDf0y-?{2uWweFFPhjpODBPR+9%&95&a4CsMs#`^IQ&q3{G^E~H75 ziFbYmV#<>yYFiVKgfiqgHY%OT?xr*h2AnU=n~zmRxdOwbi6#i^!8DyW!D_V4FVQXY zM!VzK7}sESo+f3Yr0n?EJGV&~PB9Q_(CCv-2{_y*VV2BlV-0ARMh&o7tu@Hysqn!7 zU7-g+FpZm{hs+OC6SSm>5uBqPIu+HGwT#vkwz2H4({USYPN7L>+_68J@fjL7zKQ6S z2eB=X5T{$w0PTTL$0f<@!3CQ0&|hGJ8tQGni-VgOL`d0k$m(i^LsI51npG23tAteD z;hc*=&G7YkZ{vV3!5uo|q0M}H^ZXY>g-tkJR8;VmWZr^y!+W7;_d)lgO5p|i9Hy5Pu4-+(MJtbwKnm(7HMXv!*CMNeV>LZeoDBjK z4{n=^Jlr{F9r7w}{PdLXNj z?Jn@3fYxCe6Fm0W#9v?vdkX={g5Tl9Ecgh5L8#{5vA~{uT_YROJ-DP8t-Tu58hV6% zmHQ)eo@sP;EE!>85ttwhXT8dX7~v!))fMm-y^1O$PcB2>C!)oL^ z$|FTu8k@-mx+-~BTJ>|Wu>3)3Q+I*i{M`Q^XLS8+mf1dgt`N;6T z?@N4YJs0u<$6=C&@s$<;sC0zXWmN41Wc| zgiU01#fA8S8kKfLQ z_;yzC-7ct4)8AOocf%6B-Ydzsy}-9^Jr*3+(f4o#->$Wo2mQeqXsDRr9VvRugCcU? zG30324u?Y`&)eKPpZvawc(1biUBhk-2a3=^?EAWQmxlCzKT^VsPD4xh>wO3_V@M=_C75=KZQK-fwCS0w{*Oc z{(iiI??XeshQ9^yo7`g@n%owlq;NDD<<`u5wMaa740|+O3j-yFo7u}Q+J9cYJ)_@R z5ucmr!N)QDCtmC>P$Au#7=a{xuu=yx9iqKXzItZC~$JCUb<>x|k3QIrX3x4nvP9 zHUg7h`!~Zn;;E2>z$X;GBQn9;sMj-bG5?Gge>4NNfbW7Yq{`CY4wWCOI#DF;e~e?9 zAw<09(w8YSM~IKKwt0tyL5e`<4_6JZ3%$medZ8P?4|Dj&7}Ljz*JzzYp)~D3qCAb5 z;SWW~UEF!Ar-389e0&$YO#G7o9HvVE%@`3cg|`)vN>k*-$5z76Lr?stF4Zx}!^d%H zazf)IGs0C|t98Kng-xnAhkxkfvpJlW}cIhQ$aTvc3O*SRm@Th-s+H{z*bI{(hiyi6_s5qTdN@-#dr;u(#uM&Wprse|N{sq@RO*D~|me`kOH{QJv)zAnrEUe5kf=G|?PV4!EBtGZ{&+2s6tt8%gV_f8CdVwwGUu^VUg-q#@>zkPMFc-)WS z7kANTyBa* zxoJsE*CJy_vVJ|3Bzpu)>&*~0=LZC-6(dtGjE`96z?-70%G6Snro-V@_D)~~=KPzS zXm@ryL}E+9LAc}L5~3F(gU%tc52|hFYm81S^b~9IKoL%%A*GPD%yf5!P|Y^3SeT7v z^6c=GCYNg&PuF=`t9F_;>*GeTBrY-C#NQ=kQ+b$QC_opPwuG+Hb!ZVw6PARQR` zIMk#fgLKEPEJUZLp;%@f)s!xlxs)#Y*Tr%&D_Y33$o3CtUU0_zOn;+9;7f>t&X*M6 zBoR)?VOf#ldE|*xl!toj&|{qCEk=tJ`FCk14>wehfYq8whjGzDI)n~LA8&A8#da}V zlgDbJ_t5(v00960>{&~X+cpsP=G7D}+8k1##~z9v7fo9PImYWpBGlSlSlT4F1x<}? zHZ&m5F;l$f^Snm|xNTHyUq0d$m#Jv=eZ90l< zbdXcB><6qkK@P*nBNBk~CC$N9^Rn`ELnlSC3&ZK|28*dLjNLy!O$vEViP$Z$SZ+>BGR9(`lj z8trTuW?w_zU5^{C6gT?AM5wm8gB@RJ>i(|3sz+rVA=w*U%GEQAle+FtS zHM3aL7ASqd>OAl)cgc(1E#jf7Q$fcq|CEVJwHz&2Xv~e2$BtPgR^YQ+qlt6q!vZy zE?C>D75un#5%`g$Tp$!}f!8REqGnY0u`ywinj&lgjN?0jw-s;XswbH(cdS_UO(SEp zA%3nt=8FAMDjtHQL|tzg;-`)6&r&ThTZLj-ukb|AUodlu;f2A3vDRegvj6k@;iP{; z_%uP^Nj+7bRBlxIlc^iyYF-}D>UH~@aXc-p(D~YE3OzF4$1l${mc$l)$pa)bha2`y zOML}Hky4vQC((+VqSCen^-eC@P~?s3+rlR*$A>8lHC-UTbOKkhO=$STSDhFd*l~u~B4Edk4T_3&6H$5EWgImXFgjC{Ie$xWBRx1eQR;(T z=%@`j(fYMZLbCDM>^I;x54S#s_0~mcauIH>XKQ$;l7b67B9(inlDT8@ZQR)JH|TqoSWG@|F+!po-Eerhvd-|wFuLjU_8$NhiG&UJM6x9IXYtn4Kguw|Fra%|Gm z*hlWY3LVX};_)b_f7(I+b%mbhr&>M7BF_w82yDam;`5-whn^Em|0f!wdbDCxa`(~a zZiNrcvwo+r$MX*QhZTC7dnyuFB63WAhn=rmmJz>?Kit{kcPFcUxt~?!(i|IcCz-i%zV;No9^NnCx9Gk2FXfk;_7DFS-N(MqD&4O? zO!uNY+M+w^(VO*~#!2xb&w+U<+$*m%+3C;Q*L1f!d8ByxqtEh} zhVspS`6k{K3$9pj#lkFqzuqffPq^YAyil8RPCuEHznmP>H-4h~ME5b$J#C>Q{1+8E zn*04%msw0*hKKR-PX9KaFE{x71pom5|Lj-YPTMdPc1vM{F~+26yUhg`Olqs~BLrNP zwMbN=g*9d3t~0Guc_eX_IE?NI_9A~oIoRRF*;>y?A^hJ#JIv)!mO2v%4xu)e_hW7adE*XBK(V*QEt%iF4lxek-r+U&{5 z>y)dBb(RI4pkKbwh<-N615TcU`=q!TZx^xP0>`xEakp{$!H(zrDyg5KL zZDMgYZ9D%3Z&(~nYhEnc7-=1%>eUM{xb7UY9J7#P^J1lFj@hJ`tHslMF6ePw3ljsA zjjvgcOPPJMN(^j5eJuQ0nWu5Yfmpx&7OdaAjlwHL*co>I*vM{Xx3b&Wd_I4pBXj;x z@n@8MYaw{qA?#XdXX`v0C!-hTXV|^3NOZ?Aa|Zm_J7~$?TajhC0y1@dt+sYJ3Qs2A z)@qFwq|mkZLx7(O;RnwXGIpx!;pTnIPru2WJ0>|^lDu9A!`DsZx%rXq|34k#S86~f zJCeza-t> z5wwde?5wh>k^Xdmdbfk#IZ($MMppmzfsUaKZZ-D0Z5qg=gRjeWQ7xXr<|S;SlPgxy zajS*QzTHXZI~Bs4#yva8TNZd>^ZSRjQR3;>T(b3i=HVZ#*N8*?n!?(tg^7h}*MlX@ zR>@{X!xo@hdWyv8=;+%2y9zn1W3K|akV$)0s%&D4q5dA~4u>UVH!a-p3lgtHJchh+ zE7-p$^dP(r!V+noF|~oflG!&d99wF==E11-/test/fixtures/mcos'); make_configset_fixture" + % + % (One line, for the reason make_class_fixtures.m gives. The `cd` puts NdHolder.m and the + % +dexdata package on the path. Verify by the WROTE lines and the trailing + % MAKE_CONFIGSET_FIXTURE_DONE, not by the exit code; any FAIL line above it means the file + % says something other than what this header promises.) An optional argument names + % another folder to write into, so a run can be inspected before it replaces what is + % committed. + % + % Writes two files: + % configset.mat MATLAB's default `save` format (Level 5, not -v7.3), of + % cs a default Simulink.ConfigSet (grt.tlc), whose + % Components mixes a dozen component classes and + % whose RTWCC's Components is a Simulink.CodeAppCC + % beside a Simulink.GRTTargetCC + % csErt the same with SystemTargetFile ert.tlc, so its + % RTWCC's Components holds a Simulink.ERTTargetCC + % mixed an NdHolder whose Kids is a dexdata.DerivedSignal + % (a user's subclass of Simulink.Signal) beside a + % Simulink.Signal, the subclass first + % configset.truth.json MATLAB's answers, read back from the file with `load`: + % for each array, class() of the array and of each element + % in order, and each config component's Name + % + % WHY. Inside an MCOS object (a .mat, a model workspace) the reader named such an array + % after its FIRST element and dropped every other element's class: a config set's + % Components read as a Simulink.SolverCC array of ten SolverCCs, and a copy of the config + % set wrote every component as one. A binary dictionary's reader already keeps each + % element's class, and names the array by the rules MATLAB's text format shows + % (Simulink.ConfigComponent for a config set's Components, the one MathWorks class beside + % a user's subclass of it). No fixture held such an array before this one: the two the + % corpus holds are a customer's. + here = fileparts(mfilename('fullpath')); + if nargin < 1 || isempty(outDir) + outDir = here; + end + if ~isfolder(outDir) + mkdir(outDir); + end + failures = {}; + + [V, failures] = values(failures); + matPath = fullfile(outDir, 'configset.mat'); + if isfile(matPath), delete(matPath); end + % No version flag: the default, which is what a user's `save` writes. + save(matPath, '-struct', 'V'); + fid = fopen(matPath, 'r'); + hdr = fread(fid, [1 116], 'char=>char'); + fclose(fid); + if ~startsWith(hdr, 'MATLAB 5.0 MAT-file') + failures{end + 1} = sprintf('configset.mat header is "%s"', strtrim(hdr(1:min(end, 40)))); + end + failures = check_uncompressed(failures, V); + fprintf('WROTE configset.mat bytes=%d\n', dir(matPath).bytes); + + L = load(matPath); + T = struct(); + T.version = version; + T.release = version('-release'); + T.file = 'configset.mat'; + T.names = fieldnames(V)'; + T.paths = struct(); + names = fieldnames(V); + for i = 1:numel(names) + n = names{i}; + if ~isfield(L, n) + failures{end + 1} = sprintf('configset.mat does not hold %s', n); %#ok + continue + end + [r, failures] = record(n, L.(n), failures); + % What was read back is what was written, or the fixture is not what its name says. + [built, failures] = record(n, V.(n), failures); + if ~isequal(r, built) + failures{end + 1} = sprintf('configset.mat reads %s back as another array', n); %#ok + end + T.paths.(n) = r; + end + write_json(fullfile(outDir, 'configset.truth.json'), T); + + if isempty(failures) + fprintf('MAKE_CONFIGSET_FIXTURE_DONE\n'); + else + fprintf('FAIL %s\n', failures{:}); + fprintf('MAKE_CONFIGSET_FIXTURE_FAILED %d\n', numel(failures)); + end +end + +% --------------------------------------------------------------------------- +% The values +% --------------------------------------------------------------------------- + +function [V, failures] = values(failures) + V = struct(); + V.cs = Simulink.ConfigSet; + csErt = Simulink.ConfigSet; + try + set_param(csErt, 'SystemTargetFile', 'ert.tlc'); + catch err + failures{end + 1} = sprintf('csErt refused ert.tlc: %s', err.message); + end + V.csErt = csErt; + mixed = NdHolder; + mixed.Tag = 'mixed'; + try + mixed.Kids = [dexdata.DerivedSignal, Simulink.Signal]; + catch err + failures{end + 1} = sprintf('mixed refused [DerivedSignal, Signal]: %s', err.message); + end + V.mixed = mixed; +end + +% --------------------------------------------------------------------------- +% What MATLAB says each array is +% --------------------------------------------------------------------------- + +function [r, failures] = record(name, x, failures) + r = struct(); + r.class = class(x); + if isa(x, 'Simulink.ConfigSet') + [comps, failures] = components_of(name, x, failures); + r.Components = array_record(comps); + r.Components.names = arrayfun(@(c) c.Name, comps, 'UniformOutput', false); + rtw = find(arrayfun(@(c) isa(c, 'Simulink.RTWCC'), comps)); + if numel(rtw) ~= 1 + failures{end + 1} = sprintf('%s holds %d Simulink.RTWCC components', name, numel(rtw)); + return + end + r.rtwIndex = rtw; + [inner, failures] = components_of([name '.RTWCC'], comps(rtw), failures); + r.RTWComponents = array_record(inner); + r.RTWComponents.names = arrayfun(@(c) c.Name, inner, 'UniformOutput', false); + elseif isa(x, 'NdHolder') + r.Tag = x.Tag; + r.Kids = array_record(x.Kids); + end +end + +function [comps, failures] = components_of(name, x, failures) + % The Components property itself, the array MATLAB stores in the file. + try + comps = x.Components; + catch err + failures{end + 1} = sprintf('%s.Components is not readable: %s', name, err.message); + comps = []; + end +end + +function r = array_record(a) + r = struct(); + r.class = class(a); + r.size = size(a); + r.elements = arrayfun(@(e) class(e), a(:)', 'UniformOutput', false); +end + +% --------------------------------------------------------------------------- +% No account name, no machine path +% --------------------------------------------------------------------------- + +function failures = check_uncompressed(failures, V) + % The default save deflates each variable, so its bytes are searched as an uncompressed + % -v6 save of the same variables, which holds the same subsystem. + tmp = [tempname '.mat']; + cleanup = onCleanup(@() delete(tmp)); %#ok + save(tmp, '-struct', 'V', '-v6'); + fid = fopen(tmp, 'r'); + bytes = fread(fid, Inf, 'uint8=>char')'; + fclose(fid); + needles = {getenv('USER'), matlabroot, getenv('HOME')}; + for k = 1:numel(needles) + if ~isempty(needles{k}) && contains(bytes, needles{k}) + failures{end + 1} = sprintf('configset.mat holds "%s"', needles{k}); %#ok + end + end +end + +function write_json(path, data) + fid = fopen(path, 'w', 'n', 'UTF-8'); + fprintf(fid, '%s', jsonencode(data, 'PrettyPrint', true)); + fclose(fid); + [~, name, ext] = fileparts(path); + fprintf('WROTE %s%s bytes=%d\n', name, ext, dir(path).bytes); +end diff --git a/test/mcosMixedObjectArray.test.ts b/test/mcosMixedObjectArray.test.ts new file mode 100644 index 00000000..86504caa --- /dev/null +++ b/test/mcosMixedObjectArray.test.ts @@ -0,0 +1,272 @@ +// Copyright 2026 The MathWorks, Inc. +// +// F1-47: an object array held by an MCOS object's property (a .mat, a model workspace), whose +// elements are of more than one class. The MCOS reader named the array after its first element +// and gave no element a class of its own, so each element read, showed and copied as one of the +// first element's class: +// - a config set's Components read as a Simulink.SolverCC array, and a copy of the config set +// pasted into a dictionary wrote all nine components as Simulink.SolverCC; +// - a dexdata.DerivedSignal beside a Simulink.Signal read as a dexdata.DerivedSignal array of +// two dexdata.DerivedSignals. +// It now reads as the binary dictionary reader does (D6/D15; the rule is objectArrayClass.ts, +// shared by both): the array under the class MATLAB's text format names, and each element of +// another class under its own `_object_class`. +// +// configset.mat is MATLAB's (R2027a, test/fixtures/mcos/make_configset_fixture.m), and +// configset.truth.json is what MATLAB says each array and each element is, read back out of +// it: class() of the array, which is the class this reader names, and class() of each element. +// busArray.mat is re-pointed byte by byte where no MATLAB file holds the case. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, unzipSync } from 'fflate'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import { decodeMcosBlob, type OpaqueVarRef } from '../src/datamodel/parser/McosParser.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import { SECTION_NAMESPACE } from '../src/datamodel/SectionConstants.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +const fixturePath = (name: string): string => fileURLToPath(new URL(`./fixtures/${name}`, import.meta.url)); +const bytes = (name: string): Uint8Array => new Uint8Array(readFileSync(fixturePath(name))); +const buffer = (u8: Uint8Array): ArrayBuffer => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; + +/** The two inputs decodeMcosBlob takes, out of a .mat, as MatNode.fromParsed builds them. */ +function blobParts(name: string): { raw: Uint8Array; vars: OpaqueVarRef[] } { + const { variables } = parseMat(buffer(bytes(name))); + const anon = variables.find((v) => (v as unknown as { _anonymous?: boolean })._anonymous)!; + const opaque = variables.filter((v) => v.isOpaque && v.name); + return { raw: anon._rawBytes!, vars: opaque.map((v) => ({ name: v.name, className: v.className, rawBytes: v._rawBytes })) }; +} + +interface ArrayTruth { + class: string; + size: number[]; + elements: string[]; + names?: string[]; +} +interface ConfigSetTruth { + class: string; + Components: ArrayTruth; + rtwIndex: number; + RTWComponents: ArrayTruth; +} +const truth: { release: string; paths: { cs: ConfigSetTruth; csErt: ConfigSetTruth; mixed: { class: string; Kids: ArrayTruth } } } = JSON.parse( + readFileSync(fixturePath('mcos/configset.truth.json'), 'utf8'), +); + +/** An array's class and each element's, as a reader that holds no element class would name it. */ +function classesOf(array: any): { arrayClass: string; elements: string[] } { + return { arrayClass: array._array_class, elements: array._elements.map((e: any) => e._object_class ?? array._array_class) }; +} + +describe('configset.mat, as MATLAB wrote it: each mixed array under MATLAB\'s class, each element under its own', () => { + const decoded = (() => { + const { raw, vars } = blobParts('mcos/configset.mat'); + return decodeMcosBlob(raw, vars); + })(); + + it('the truth is MATLAB\'s, and says what this file is for', () => { + expect(truth.release).toBe('2027a'); + // Two arrays of each config set mix classes, and the holder's does, with the subclass first. + expect(new Set(truth.paths.cs.Components.elements).size).toBeGreaterThan(5); + expect(truth.paths.cs.RTWComponents.elements).toEqual(['Simulink.CodeAppCC', 'Simulink.GRTTargetCC']); + expect(truth.paths.csErt.RTWComponents.elements).toEqual(['Simulink.CodeAppCC', 'Simulink.ERTTargetCC']); + expect(truth.paths.mixed.Kids.elements).toEqual(['dexdata.DerivedSignal', 'Simulink.Signal']); + }); + + for (const name of ['cs', 'csErt'] as const) { + it(`${name}: Components, and its RTWCC's Components, are Simulink.ConfigComponent arrays of MATLAB's components in order`, () => { + const t = truth.paths[name]; + const components: any = decoded.get(name)!.properties.Components; + expect(t.Components.class).toBe('Simulink.ConfigComponent'); + expect(components._array_class).toBe(t.Components.class); + expect(components._dimensions).toEqual(t.Components.size); + // Each element's own class, on every element, since none is the array's class. + expect(components._elements.map((e: any) => e._object_class)).toEqual(t.Components.elements); + + const rtw = components._elements[t.rtwIndex - 1]; + expect(rtw._object_class).toBe('Simulink.RTWCC'); + const inner = rtw._properties.Components; + expect(t.RTWComponents.class).toBe('Simulink.ConfigComponent'); + expect(inner._array_class).toBe(t.RTWComponents.class); + expect(inner._elements.map((e: any) => e._object_class)).toEqual(t.RTWComponents.elements); + }); + } + + it('mixed: a dexdata.DerivedSignal beside a Simulink.Signal is a Simulink.Signal array, the subclass marked', () => { + const kids: any = decoded.get('mixed')!.properties.Kids; + expect(truth.paths.mixed.Kids.class).toBe('Simulink.Signal'); + expect(classesOf(kids)).toEqual({ arrayClass: truth.paths.mixed.Kids.class, elements: truth.paths.mixed.Kids.elements }); + // Only the element of another class than the array's says so, as the binary reader writes it. + expect(kids._elements.map((e: any) => e._object_class)).toEqual(['dexdata.DerivedSignal', undefined]); + // The subclass's own properties are its own. + expect(kids._elements[0]._properties.Routing).toBe('bus'); + expect('Routing' in kids._elements[1]._properties).toBe(false); + }); + + it('mixed shows a <1x2 Simulink.Signal> whose elements are a dexdata.DerivedSignal and a Simulink.Signal', () => { + const root: any = ingest(createSession(), buffer(bytes('mcos/configset.mat')), { filename: 'configset.mat' }); + const kids = root.children.find((c: any) => c.name === 'mixed').children.find((c: any) => c.name === 'Kids'); + expect([kids.className, kids.displayValue]).toEqual(['Simulink.Signal', '<1x2 Simulink.Signal>']); + expect(kids.children.map((c: any) => [c.constructor.name, c.className])).toEqual([ + ['ObjectNode', 'dexdata.DerivedSignal'], + ['SignalNode', 'Simulink.Signal'], + ]); + }); +}); + +// What a host copies out of the .mat goes into a dictionary under each element's own class: a +// copy used to write every component of a config set as a Simulink.SolverCC. +describe('configset.mat, copied into a binary dictionary and saved', () => { + const session = createSession(); + const mat: any = ingest(session, buffer(bytes('mcos/configset.mat')), { filename: 'configset.mat' }); + const root: any = ingest(session, buffer(bytes('sparse/sparse_binary.sldd')), { filename: 'sparse_binary.sldd' }); + const meta = root.getSection('design').children[0].metadata; + let seq = 0; + const paste = (name: string, section: string): void => { + const payload: any = JSON.parse(JSON.stringify(mat.children.find((c: any) => c.name === name).serialize())); + payload.name = name + '_fromMat'; + payload.metadata = { ...meta, namespace: SECTION_NAMESPACE[section], uuid: `00000000-0000-4000-8000-f147000000${String(++seq).padStart(2, '0')}` }; + root.getSection(section).parseEntry(payload); + }; + paste('cs', 'config'); + paste('csErt', 'config'); + paste('mixed', 'design'); + const saved: any = session.serializeSource(root.name); + const xml = strFromU8(unzipSync(saved.bytes)['data/chunk0.xml']); + const reopened: any = ingest(createSession(), buffer(saved.bytes), { filename: 'sparse_binary.sldd' }); + + /** The `` of the entry `name` in the saved chunk. */ + const entryBlock = (name: string): string => { + const at = xml.indexOf('

' + name + '

'); + expect(at, name).toBeGreaterThan(0); + return xml.slice(xml.lastIndexOf('', at)); + }; + /** The Class of each `` directly under the first `

` at `indent` in `block`. */ + const elementClasses = (block: string, prop: string, indent: number): string[] => { + const open = new RegExp(`^ {${indent}}

$`, 'm').exec(block); + expect(open, prop).not.toBeNull(); + const from = open!.index; + const to = block.indexOf('\n' + ' '.repeat(indent) + '

', from); + const span = block.slice(from, to); + return [...span.matchAll(new RegExp(`^ {${indent + 4}}$`, 'gm'))].map((m) => m[1]); + }; + const entry = (section: string, name: string): any => reopened.getSection(section).children.find((e: any) => e.name === name); + + for (const name of ['cs', 'csErt'] as const) { + it(`${name}: each component is written as MATLAB's class, and reads back so`, () => { + const t = truth.paths[name]; + const block = entryBlock(name + '_fromMat'); + expect(elementClasses(block, 'Components', 16)).toEqual(t.Components.elements); + expect(elementClasses(block, 'Components', 24)).toEqual(t.RTWComponents.elements); + const components = entry('config', name + '_fromMat').serial._rawVal._elements[0]._properties.Components; + expect(classesOf(components)).toEqual({ arrayClass: 'Simulink.ConfigComponent', elements: t.Components.elements }); + expect(classesOf(components._elements[t.rtwIndex - 1]._properties.Components)).toEqual({ + arrayClass: 'Simulink.ConfigComponent', + elements: t.RTWComponents.elements, + }); + }); + } + + it('mixed: Kids is written as a dexdata.DerivedSignal and a Simulink.Signal, and reads back as a Simulink.Signal array', () => { + expect(elementClasses(entryBlock('mixed_fromMat'), 'Kids', 16)).toEqual(truth.paths.mixed.Kids.elements); + const kids = entry('design', 'mixed_fromMat').children.find((c: any) => c.name === 'Kids'); + expect([kids.className, kids.displayValue]).toEqual(['Simulink.Signal', '<1x2 Simulink.Signal>']); + expect(kids.children.map((c: any) => c.className)).toEqual(truth.paths.mixed.Kids.elements); + }); +}); + +// Where no MATLAB file holds the case: busArray.mat's object table re-pointed, one word at a time. +// Its bus(2).Elements_internal is two Simulink.BusElements, objects 4 and 5; bus(3)'s is three, +// objects 7 to 9. +describe('busArray.mat re-pointed: an object array property of two classes', () => { + // The blob offset of busArray.mat's metadata table (mcosParser.test.ts asserts it there too). + const META = 304; + const { raw, vars } = blobParts('mcos/busArray.mat'); + const u32 = (b: Uint8Array, at: number): number => new DataView(b.buffer, b.byteOffset, b.byteLength).getUint32(at, true); + const header = Array.from({ length: 10 }, (_, i) => u32(raw, META + i * 4)); + const classRow = (k: number): number => META + header[2] + k * 16; + const objectRow = (k: number): number => META + header[4] + k * 24; + const patched = (words: [number, number][]): Uint8Array => { + const copy = raw.slice(); + const view = new DataView(copy.buffer, copy.byteOffset, copy.byteLength); + for (const [at, value] of words) view.setUint32(at, value, true); + return copy; + }; + const elementsOf = (blob: Uint8Array, bus: number): any => (decodeMcosBlob(blob, vars).get('buses')!.elements[bus] as any).Elements_internal; + + it('the tables are where, and what, these cases assume', () => { + // Class rows 1 and 2 are Simulink.BusElement and Simulink.Bus, and objects 4 and 5 are + // bus(2)'s elements, of class row 1. + const { raw: r } = blobParts('mcos/busArray.mat'); + expect(Array.from({ length: 9 }, (_, k) => u32(r, objectRow(k + 1)))).toEqual([2, 1, 2, 1, 1, 2, 1, 1, 1]); + const plain = elementsOf(raw, 1); + expect(classesOf(plain)).toEqual({ arrayClass: 'Simulink.BusElement', elements: ['Simulink.BusElement', 'Simulink.BusElement'] }); + expect(plain._elements.map((e: any) => '_object_class' in e)).toEqual([false, false]); + expect(classesOf(elementsOf(patched([[objectRow(5), 2]]), 2))).toEqual(classesOf(elementsOf(raw, 2))); + }); + + it('a Simulink.BusElement beside a Simulink.Bus keeps the first\'s class for the array, and the second its own', () => { + // Two MathWorks classes: no base can be derived, so the array is the first element's class. + const ei = elementsOf(patched([[objectRow(5), 2]]), 1); + expect(ei._array_class).toBe('Simulink.BusElement'); + expect(ei._elements.map((e: any) => e._object_class)).toEqual([undefined, 'Simulink.Bus']); + // Each is still its own object. + expect(ei._elements.map((e: any) => e._properties.Name)).toEqual(elementsOf(raw, 1)._elements.map((e: any) => e._properties.Name)); + }); + + it('a user\'s class beside the one MathWorks class is an array of the MathWorks class', () => { + // Class row 1's package word set to the empty string: its objects are of a class `BusElement` + // of no package, a user's. Object 5 is re-pointed at Simulink.Bus. + const blob = patched([[classRow(1), 0], [objectRow(5), 2]]); + const ei = elementsOf(blob, 1); + expect(ei._array_class).toBe('Simulink.Bus'); + expect(ei._elements.map((e: any) => e._object_class)).toEqual(['BusElement', undefined]); + // bus(3)'s three, all of the user's class, are an array of it, with no element marked. + const three = elementsOf(blob, 2); + expect(three._array_class).toBe('BusElement'); + expect(three._elements.map((e: any) => '_object_class' in e)).toEqual([false, false, false]); + }); + + it('a later element whose object names no class is one of the first element\'s class, as in a binary dictionary', () => { + // bus(3): object 7 of the user's class, object 8 re-pointed at Simulink.Bus, and object 9 + // at a class row past the table. The binary reader reads a classless later as one + // of the first element's class (objectArrayElementClass.test.ts), which names the array + // here as it does there: the user's class twice beside the one MathWorks class. + const blob = patched([[classRow(1), 0], [objectRow(8), 2], [objectRow(9), 99]]); + const ei = elementsOf(blob, 2); + expect(ei._array_class).toBe('Simulink.Bus'); + expect(ei._elements.map((e: any) => e._object_class)).toEqual(['BusElement', undefined, 'BusElement']); + // Its own properties are still read. + expect(ei._elements[2]._properties.Name).toBe(elementsOf(raw, 2)._elements[2]._properties.Name); + }); +}); + +// Controls: what shares one class reads as it did. +describe('an object array property of one class, and an enumeration value, read as they did', () => { + it('busArray.mat\'s Elements_internal and ndNested.mat\'s Kids carry no element class', () => { + const { raw, vars } = blobParts('mcos/busArray.mat'); + for (const bus of decodeMcosBlob(raw, vars).get('buses')!.elements.slice(1) as any[]) { + expect(bus.Elements_internal._array_class).toBe('Simulink.BusElement'); + expect(bus.Elements_internal._elements.every((e: any) => Object.keys(e).join() === '_properties')).toBe(true); + } + const nd = blobParts('mcos/ndNested.mat'); + const kids: any = decodeMcosBlob(nd.raw, nd.vars).get('h')!.properties.Kids; + expect(kids._array_class).toBe('Simulink.Parameter'); + expect(kids._elements).toHaveLength(12); + expect(kids._elements.every((e: any) => Object.keys(e).join() === '_properties')).toBe(true); + }); + + it('display/dispcat_opaque.mat\'s enumeration Value is its class, with no element class', () => { + const { raw, vars } = blobParts('display/dispcat_opaque.mat'); + const values = [...decodeMcosBlob(raw, vars).values()] + .map((d) => d.properties.Value as any) + .filter((v) => v && Array.isArray(v._elements) && v._elements.some((e: any) => e._enumeration)); + expect(values.length).toBeGreaterThan(0); + for (const v of values) { + expect(v._array_class).toBe('DispColor'); + expect(v._elements.every((e: any) => !('_object_class' in e))).toBe(true); + } + }); +}); diff --git a/test/objectArrayClass.test.ts b/test/objectArrayClass.test.ts new file mode 100644 index 00000000..14b20f66 --- /dev/null +++ b/test/objectArrayClass.test.ts @@ -0,0 +1,78 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The one rule both readers that hold no class for a mixed object array name it by +// (src/datamodel/parser/objectArrayClass.ts): a binary dictionary (BinarySlddParser) and a .mat +// or a model workspace's MCOS blob (McosParser). The rule was the binary reader's own, private +// to it, so the MCOS reader named every such array after its first element. These are the binary +// reader's assertions (objectArrayElementClass.test.ts) asked of the rule itself; the readers' +// tests ask each reader. +import { describe, it, expect } from 'vitest'; +import { arrayClassOf, componentsBaseOf, heterogeneousBaseOf } from '../src/datamodel/parser/objectArrayClass.js'; + +// Every class MATLAB's text format lists under a Simulink.ConfigComponent array. +const COMPONENTS = [ + 'Simulink.SolverCC', 'Simulink.DataIOCC', 'Simulink.OptimizationCC', 'Simulink.DebuggingCC', 'Simulink.HardwareCC', + 'Simulink.ModelReferenceCC', 'Simulink.SFSimCC', 'Simulink.RTWCC', 'Simulink.CodeAppCC', 'Simulink.GRTTargetCC', + 'Simulink.ERTTargetCC', 'Simulink.STFCustomTargetCC', 'SlCovCC.ConfigComp', 'Sldv.ConfigComp', 'hdlcoderui.hdlcc', +]; + +describe('arrayClassOf: the class of an object array, from its elements\' classes', () => { + it('is the class every element shares', () => { + expect(arrayClassOf(['Simulink.Signal', 'Simulink.Signal'])).toBe('Simulink.Signal'); + expect(arrayClassOf(['My.A', 'My.A', 'My.A'])).toBe('My.A'); + // One class alone, and a config component alone, are the class they are. + expect(arrayClassOf(['Simulink.SolverCC'])).toBe('Simulink.SolverCC'); + expect(arrayClassOf(['Simulink.SolverCC', 'Simulink.SolverCC'])).toBe('Simulink.SolverCC'); + }); + + it('is Simulink.ConfigComponent for a mix of the config components MATLAB lists under one', () => { + expect(arrayClassOf(COMPONENTS)).toBe('Simulink.ConfigComponent'); + expect(arrayClassOf(['Simulink.CodeAppCC', 'Simulink.GRTTargetCC'])).toBe('Simulink.ConfigComponent'); + expect(arrayClassOf(['Simulink.CodeAppCC', 'Simulink.ERTTargetCC'])).toBe('Simulink.ConfigComponent'); + expect(arrayClassOf(['Simulink.ConfigComponent', 'Simulink.SolverCC'])).toBe('Simulink.ConfigComponent'); + }); + + it('is the one MathWorks class beside classes that are not MathWorks\', wherever it stands', () => { + expect(arrayClassOf(['dexdata.DerivedSignal', 'Simulink.Signal'])).toBe('Simulink.Signal'); + expect(arrayClassOf(['Simulink.Signal', 'dexdata.DerivedSignal'])).toBe('Simulink.Signal'); + expect(arrayClassOf(['My.A', 'mpt.Signal', 'My.B'])).toBe('mpt.Signal'); + // A package of no known MathWorks class counts as a user's, MathWorks' or not. + expect(arrayClassOf(['CoderTarget.SettingsController', 'Simulink.SolverCC'])).toBe('Simulink.SolverCC'); + // The package is the text before the first dot: a name that only begins with one is not in it. + expect(arrayClassOf(['SimulinkX.A', 'Simulink.Signal'])).toBe('Simulink.Signal'); + expect(arrayClassOf(['SimulinkX.A', 'My.B'])).toBe('SimulinkX.A'); + }); + + it('is the first element\'s class where no base can be derived', () => { + // Two MathWorks classes beside a user's. + expect(arrayClassOf(['MySubclasses.MySlSignal', 'Simulink.Signal', 'Simulink.Parameter'])).toBe('MySubclasses.MySlSignal'); + // Two MathWorks classes alone, neither a listed config component. + expect(arrayClassOf(['Simulink.BusElement', 'Simulink.Bus'])).toBe('Simulink.BusElement'); + // No MathWorks class at all. + expect(arrayClassOf(['My.A', 'My.B'])).toBe('My.A'); + expect(arrayClassOf(['simmechanics.A', 'simmechanics.B'])).toBe('simmechanics.A'); + // A class with no package is a user's. + expect(arrayClassOf(['BusElement', 'My.B'])).toBe('BusElement'); + }); +}); + +describe('heterogeneousBaseOf: the base a mix names, or none', () => { + it('names Simulink.ConfigComponent, the one MathWorks class, or nothing', () => { + expect(heterogeneousBaseOf(['Simulink.SolverCC', 'hdlcoderui.hdlcc'])).toBe('Simulink.ConfigComponent'); + expect(heterogeneousBaseOf(['BusElement', 'Simulink.Bus'])).toBe('Simulink.Bus'); + expect(heterogeneousBaseOf(['My.A', 'My.B'])).toBeUndefined(); + expect(heterogeneousBaseOf(['Simulink.Signal', 'Simulink.Parameter', 'My.A'])).toBeUndefined(); + }); +}); + +describe('componentsBaseOf: the class a property\'s place names for an object array there', () => { + it('is Simulink.ConfigComponent for a config set\'s Components and an RTWCC\'s, and nothing else', () => { + expect(componentsBaseOf('Simulink.ConfigSet', 'Components')).toBe('Simulink.ConfigComponent'); + expect(componentsBaseOf('Simulink.RTWCC', 'Components')).toBe('Simulink.ConfigComponent'); + expect(componentsBaseOf('My.Holder', 'Components')).toBeUndefined(); + expect(componentsBaseOf('Simulink.SolverCC', 'Components')).toBeUndefined(); + expect(componentsBaseOf('Simulink.ConfigSet', 'Elements')).toBeUndefined(); + expect(componentsBaseOf('Simulink.ConfigSet', undefined)).toBeUndefined(); + expect(componentsBaseOf(undefined, 'Components')).toBeUndefined(); + }); +}); diff --git a/test/parity/matlab/DESIGN.md b/test/parity/matlab/DESIGN.md index 2df5d915..57e0d7ba 100644 --- a/test/parity/matlab/DESIGN.md +++ b/test/parity/matlab/DESIGN.md @@ -2450,6 +2450,25 @@ Two findings from that hardening, measured and deliberately NOT acted on: inside a DICTIONARY cell was never this limitation — it was defect 52, and citing this bullet for it is how that defect came to be pinned in `cellElementShape.test.ts` as expected behaviour instead of being fixed. +- **An object array of mixed classes, held by an MCOS object's property, read under its + first element's class — now closed (F1-47).** `McosParser.resolveValue` named such an + array after its first element and gave no element a class of its own. So a config set's + `Components` in a `.mat` read as a `Simulink.SolverCC` array, and a copy of the config set + pasted into a dictionary wrote all nine components as `Simulink.SolverCC`. A + `dexdata.DerivedSignal` beside a `Simulink.Signal` read as two `DerivedSignal`s. The array + is now named, and each element of another class marked `_object_class`, as the binary + dictionary reader does it, by one rule both readers import (`objectArrayClass.ts`). + MATLAB's own `class()` of each array, read back out of `test/fixtures/mcos/configset.mat` + (`make_configset_fixture.m`, R2027a), is the class this names: + `Simulink.ConfigComponent` for both config sets' `Components` and for their RTWCC's, and + `Simulink.Signal` for the subclass beside its base. Pinned in + `mcosMixedObjectArray.test.ts`, and the rule itself in `objectArrayClass.test.ts`. + + **Not closed: the same array as a top-level variable.** A `.mat` variable that is itself + a mixed-class object array is refused whole, by the code: `decodeMcosVariables` requires + every element's object to be of the declared class, and reports `its objects are of class + …, not …`. This was not measured on a MATLAB-written file, and no such variable is in the + corpus or the fixtures, so it is recorded rather than fixed. - **A `missing` has no dictionary spelling.** If a decoded string array carrying a `missing` were copied into a `.sldd`, the element would serialize as JSON `null`; what MATLAB reads that back as was not measured. Not reachable today (a `.mat` string is From 9e22f8f8301f411fde17403206827fb80d637701 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 16 Oct 2026 21:09:46 -0400 Subject: [PATCH 3/4] Lock down that a config set's Components is named by its place, not by its elements Review of F1-47 found that removing componentsBaseOf from McosParser.resolveValue left the whole suite green. On configset.mat as MATLAB wrote it, every component is one that CONFIG_COMPONENTS lists, so the shared element rule (arrayClassOf) already names both config sets' Components, and their RTWCC's, Simulink.ConfigComponent. The call was live but redundant on every fixture and corpus file. The case it exists for is a component the list does not hold, such as the CoderTarget.SettingsController and SSC.SimscapeCC of the corpus binary dictionaries. No test had one. mcosMixedObjectArray.test.ts now re-points configset.mat's class table one word at a time, as it already does to busArray.mat: - SlCovCC.ConfigComp loses its package, so the last component of both config sets is ConfigComp, a class the list does not hold and the shared rule counts as not MathWorks'. arrayClassOf would name the array Simulink.SolverCC, after its first element. - cs's Simulink.GRTTargetCC is re-pointed at that class, so its RTWCC's Components is a CodeAppCC beside a ConfigComp. arrayClassOf would name the array Simulink.CodeAppCC. Both arrays still read as Simulink.ConfigComponent, with every element under its own class. A precondition asserts the tables and what arrayClassOf alone would say. A control re-points mixed's Kids, a property of an NdHolder, at the same two classes, and that array is read by the shared rule. With `componentsBaseOf(owner, propName) ??` removed from src, 2 of the 4 new tests fail (cs: expected 'Simulink.SolverCC' to be 'Simulink.ConfigComponent'; expected 'Simulink.CodeAppCC' to be 'Simulink.ConfigComponent'). At 9c247d6 all four pass. --- test/mcosMixedObjectArray.test.ts | 79 +++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/test/mcosMixedObjectArray.test.ts b/test/mcosMixedObjectArray.test.ts index 86504caa..0f4385fa 100644 --- a/test/mcosMixedObjectArray.test.ts +++ b/test/mcosMixedObjectArray.test.ts @@ -23,6 +23,7 @@ import { strFromU8, unzipSync } from 'fflate'; import { createSession } from '../src/index.js'; import { ingest } from '../src/core/ingest.js'; import { decodeMcosBlob, type OpaqueVarRef } from '../src/datamodel/parser/McosParser.js'; +import { arrayClassOf } from '../src/datamodel/parser/objectArrayClass.js'; import { parseMat } from '../src/datamodel/parser/MatParser.js'; import { SECTION_NAMESPACE } from '../src/datamodel/SectionConstants.js'; import '../src/datamodel/node/data/NodeClassMap.js'; @@ -243,6 +244,84 @@ describe('busArray.mat re-pointed: an object array property of two classes', () }); }); +// A config set's Components is a Simulink.ConfigComponent array whatever components it holds: +// its place names its class (componentsBaseOf), and the shared element rule (arrayClassOf) is +// not asked. On configset.mat as MATLAB wrote it the two agree, because every component there +// is one CONFIG_COMPONENTS lists; a binary dictionary of the corpus holds components it does +// not list (a CoderTarget.SettingsController, an SSC.SimscapeCC), whose array the shared rule +// names after its first element. configset.mat's class table re-pointed, one word at a time, +// to hold such a component, in a config set's Components and in its RTWCC's. +describe('configset.mat re-pointed: a Components array the shared element rule would name otherwise', () => { + // The blob offset of configset.mat's metadata table, which is busArray.mat's too. + const META = 304; + const { raw, vars } = blobParts('mcos/configset.mat'); + const u32 = (b: Uint8Array, at: number): number => new DataView(b.buffer, b.byteOffset, b.byteLength).getUint32(at, true); + const header = Array.from({ length: 10 }, (_, i) => u32(raw, META + i * 4)); + const classRow = (k: number): number => META + header[2] + k * 16; + const objectRow = (k: number): number => META + header[4] + k * 24; + const patched = (words: [number, number][]): Uint8Array => { + const copy = raw.slice(); + const view = new DataView(copy.buffer, copy.byteOffset, copy.byteLength); + for (const [at, value] of words) view.setUint32(at, value, true); + return copy; + }; + // Class row 12 is SlCovCC.ConfigComp, the last component of both config sets (objects 12 and + // 24). Its package word set to the empty string makes it `ConfigComp`, a class of no package: + // one CONFIG_COMPONENTS does not list, and one the shared rule counts as not MathWorks', as it + // counts a CoderTarget or an SSC class (objectArrayClass.ts isMathWorksClass). + const UNLISTED = [classRow(12), 0] as [number, number]; + // Object 11 is cs's Simulink.GRTTargetCC, the second of its RTWCC's two components. + const RTW_TARGET_UNLISTED = [objectRow(11), 12] as [number, number]; + const decoded = decodeMcosBlob(patched([UNLISTED, RTW_TARGET_UNLISTED]), vars); + // Each config set's components, as MATLAB wrote them but the last, now `ConfigComp`. + const repointed = [...truth.paths.cs.Components.elements.slice(0, -1), 'ConfigComp']; + + it('the tables are where, and what, these cases assume, and the shared rule names these arrays otherwise', () => { + const strings = new TextDecoder().decode(raw.slice(META + 40, META + header[2])).split('\0'); + const nameOf = (row: number): string => [strings[u32(raw, row) - 1], strings[u32(raw, row + 4) - 1]].join('.'); + expect([nameOf(classRow(12)), nameOf(classRow(9))]).toEqual(['SlCovCC.ConfigComp', 'Simulink.GRTTargetCC']); + expect([12, 24, 11].map((k) => u32(raw, objectRow(k)))).toEqual([12, 12, 9]); + // Unpatched, both readings agree: MATLAB's components, each listed. + expect(decodeMcosBlob(raw, vars).get('cs')!.properties.Components).toMatchObject({ _array_class: 'Simulink.ConfigComponent' }); + // Patched, the shared rule alone would name the config set's Components after its first + // component (no derivable base among eight MathWorks classes and one other), and the + // RTWCC's after its one MathWorks class beside one that is not. + expect(truth.paths.csErt.Components.elements).toEqual(truth.paths.cs.Components.elements); + expect(arrayClassOf(repointed)).toBe('Simulink.SolverCC'); + expect(arrayClassOf(['Simulink.CodeAppCC', 'ConfigComp'])).toBe('Simulink.CodeAppCC'); + }); + + it('a config set\'s Components holding an unlisted component is still a Simulink.ConfigComponent array, each element its own class', () => { + for (const name of ['cs', 'csErt'] as const) { + const components: any = decoded.get(name)!.properties.Components; + expect(components._array_class, name).toBe('Simulink.ConfigComponent'); + expect(components._elements.map((e: any) => e._object_class), name).toEqual(repointed); + } + }); + + it('an RTWCC\'s Components holding an unlisted component is still a Simulink.ConfigComponent array', () => { + const rtw = (decoded.get('cs')!.properties.Components as any)._elements[truth.paths.cs.rtwIndex - 1]; + expect(rtw._object_class).toBe('Simulink.RTWCC'); + const inner = rtw._properties.Components; + expect(inner._array_class).toBe('Simulink.ConfigComponent'); + expect(inner._elements.map((e: any) => e._object_class)).toEqual(['Simulink.CodeAppCC', 'ConfigComp']); + // csErt's RTWCC was not re-pointed, and reads as MATLAB wrote it. + const ert = (decoded.get('csErt')!.properties.Components as any)._elements[truth.paths.csErt.rtwIndex - 1]; + expect(ert._properties.Components._elements.map((e: any) => e._object_class)).toEqual(truth.paths.csErt.RTWComponents.elements); + }); + + it('control: the same classes in a place that names none are read by the shared rule', () => { + // mixed's Kids, a property of an NdHolder, re-pointed at the two classes the RTWCC's + // Components holds above: the shared rule, so the one MathWorks class. + const kidsIds = [26, 30]; + expect(kidsIds.map((k) => u32(raw, objectRow(k)))).toEqual([18, 19]); + const blob = patched([UNLISTED, [objectRow(26), 8], [objectRow(30), 12]]); + const kids: any = decodeMcosBlob(blob, vars).get('mixed')!.properties.Kids; + expect(kids._array_class).toBe('Simulink.CodeAppCC'); + expect(kids._elements.map((e: any) => e._object_class)).toEqual([undefined, 'ConfigComp']); + }); +}); + // Controls: what shares one class reads as it did. describe('an object array property of one class, and an enumeration value, read as they did', () => { it('busArray.mat\'s Elements_internal and ndNested.mat\'s Kids carry no element class', () => { From 881e8a95d6aec3ae68d49626509420a30b0cac4d Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 16 Oct 2026 21:09:57 -0400 Subject: [PATCH 4/4] An empty logical of rank 3 in an MCOS object keeps its class and shape again C-033 made McosParser.resolveValue's logical arm return [] for every empty logical, before it read the shape. Base (5cd013c) gave an empty logical of rank 3 or more the typed literal, {_type: 'logical', _value: 'Matrix(2,0,2)\n[[]; []]'}, which shows as a <2x0x2 logical>. The [] reads as a double 0x0. No fixture or corpus file reaches it, and no test pinned it; the review found it by reading the code. The early return now applies only where base's own shape test also gave a plain []. That test is the one base used to choose the typed literal, and it is restored unchanged. So every empty base gave [] still gets []: an empty logical of rank 2, and an empty of every numeric class. Every empty base typed is typed again. Nothing that is not empty changes. mcosEmptyLogical.test.ts takes typed_objects.mat's pInt16Nd, MATLAB's int16 2x2x2, and respells its dims subelement (same length) and sets its logical bit, as mcosColumnVector.test.ts does to ParamMat.mat. A logical 2x0x2, 0x2x2 and 2x2x0 are typed and show as logical at their shape. Those 2 tests fail at 9c247d6 ("className": "double", dims [0, 0]) and pass here. The controls hold at both: an int16 2x0x2 and logical 0x0, 1x0, 0x1, 2x0 and 0x3 are []; a logical 2x2x2 is typed. DESIGN.md gets back a one-bullet limitation for what C-033 leaves out. An empty numeric or logical array of a class other than double, in an MCOS object, reads as a double 0x0. The bullet that covered it went out whole with C-033. --- dist/datamodel/parser/McosParser.d.ts.map | 2 +- dist/datamodel/parser/McosParser.js | 10 +- dist/datamodel/parser/McosParser.js.map | 2 +- src/datamodel/parser/McosParser.ts | 8 +- test/mcosEmptyLogical.test.ts | 116 ++++++++++++++++++++++ test/parity/matlab/DESIGN.md | 3 + 6 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 test/mcosEmptyLogical.test.ts diff --git a/dist/datamodel/parser/McosParser.d.ts.map b/dist/datamodel/parser/McosParser.d.ts.map index bca64da4..85fdb42b 100644 --- a/dist/datamodel/parser/McosParser.d.ts.map +++ b/dist/datamodel/parser/McosParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAiExB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IASvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAsO1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AAyoBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file +{"version":3,"file":"McosParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAiExB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IASvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;IAKf,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAG1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAqDD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAK/C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAsO1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAwB3F;AA+oBD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAKD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;AAenG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,SAAS,CAAC,EAAE,EACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,GAC/B,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAuHxB;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAShH"} \ No newline at end of file diff --git a/dist/datamodel/parser/McosParser.js b/dist/datamodel/parser/McosParser.js index 6b4dea97..52c6fff8 100644 --- a/dist/datamodel/parser/McosParser.js +++ b/dist/datamodel/parser/McosParser.js @@ -411,9 +411,15 @@ function resolveValue(cell, ctx, path, depth, owner, propName) { // bare list of booleans as a DOUBLE row, so a logical([1 0 1]) Value showed class // double, where both dictionaries show logical. formatMatrixSerial spells a 1xN // logical `[1, 0, 1]`, as typed_binary.sldd's lglVec is held. - if (val.length === 0) - return []; + // + // An EMPTY logical is the `[]` it was before C-033 (a double 0x0: DESIGN.md records it), + // except where it was typed then too, which is wherever its shape alone says so: at rank + // 3 or more, a 2x0x2 is `Matrix(2,0,2)` and shows as a <2x0x2 logical> + // (mcosEmptyLogical.test.ts). const dims = cell.dimensions && cell.dimensions.length >= 2 ? cell.dimensions : [1, val.length]; + const shaped = dims.length > 2 || (dims[0] > 1 && dims[1] > 1) || (dims.length === 2 && dims[0] > 1 && dims[1] === 1); + if (val.length === 0 && !shaped) + return []; return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; } return !!val; diff --git a/dist/datamodel/parser/McosParser.js.map b/dist/datamodel/parser/McosParser.js.map index a296943c..e7fada3a 100644 --- a/dist/datamodel/parser/McosParser.js.map +++ b/dist/datamodel/parser/McosParser.js.map @@ -1 +1 @@ -{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"McosParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/McosParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/McosParser.ts b/src/datamodel/parser/McosParser.ts index 4589927f..87d8f52a 100644 --- a/src/datamodel/parser/McosParser.ts +++ b/src/datamodel/parser/McosParser.ts @@ -613,8 +613,14 @@ function resolveValue( // bare list of booleans as a DOUBLE row, so a logical([1 0 1]) Value showed class // double, where both dictionaries show logical. formatMatrixSerial spells a 1xN // logical `[1, 0, 1]`, as typed_binary.sldd's lglVec is held. - if (val.length === 0) return []; + // + // An EMPTY logical is the `[]` it was before C-033 (a double 0x0: DESIGN.md records it), + // except where it was typed then too, which is wherever its shape alone says so: at rank + // 3 or more, a 2x0x2 is `Matrix(2,0,2)` and shows as a <2x0x2 logical> + // (mcosEmptyLogical.test.ts). const dims = cell.dimensions && cell.dimensions.length >= 2 ? cell.dimensions : [1, val.length]; + const shaped = dims.length > 2 || (dims[0] > 1 && dims[1] > 1) || (dims.length === 2 && dims[0] > 1 && dims[1] === 1); + if (val.length === 0 && !shaped) return []; return { _type: 'logical', _value: formatMatrixSerial(val.map((x) => (x ? '1' : '0')), dims, 'logical') }; } return !!val; diff --git a/test/mcosEmptyLogical.test.ts b/test/mcosEmptyLogical.test.ts new file mode 100644 index 00000000..cca2fe0f --- /dev/null +++ b/test/mcosEmptyLogical.test.ts @@ -0,0 +1,116 @@ +// Copyright 2026 The MathWorks, Inc. +// +// An EMPTY logical of rank 3 or more, held by an MCOS object's property (a .mat, a model +// workspace), keeps its class and its shape: McosParser.resolveValue hands it over in the +// typed logical literal, `{_type: 'logical', _value: 'Matrix(2,0,2)\n[[]; []]'}`, which the +// node layer shows as a <2x0x2 logical>. It always did, until C-033's logical arm returned +// `[]` for every empty logical before reading the shape, and `[]` reads as a double 0x0. +// +// Every other empty is the `[]` it was before C-033 and after it: an empty logical of rank +// 2, and an empty of any numeric class (DESIGN.md records that as a limitation). +// +// typed_objects.mat is MATLAB's (test/fixtures/mcos/make_typed_fixtures.m). Its pInt16Nd is +// a Simulink.Parameter whose Value is int16(reshape(1:8, 2, 2, 2)); that cell's dims +// subelement is respelled, same length, to 2x0x2, and its array-flags logical bit is set, +// as mcosColumnVector.test.ts does to ParamMat.mat's 2x3. No MATLAB-written file in the +// fixtures or the corpus holds an empty logical of rank 3 in an MCOS object. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { decodeMcosBlob, type OpaqueVarRef } from '../src/datamodel/parser/McosParser.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import * as NodeRegistry from '../src/datamodel/node/NodeRegistry.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +function blobParts(file: string): { raw: Uint8Array; vars: OpaqueVarRef[] } { + const buf = readFileSync(fileURLToPath(new URL(`./fixtures/mcos/${file}`, import.meta.url))); + const { variables } = parseMat(buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) as ArrayBuffer); + const anon = variables.find((v) => (v as unknown as { _anonymous?: boolean })._anonymous)!; + const opaque = variables.filter((v) => v.isOpaque && v.name); + return { raw: anon._rawBytes!, vars: opaque.map((v) => ({ name: v.name, className: v.className, rawBytes: v._rawBytes })) }; +} + +function findAll(raw: Uint8Array, needle: number[]): number[] { + const at: number[] = []; + for (let i = 0; i + needle.length <= raw.length; i++) { + if (needle.every((b, k) => raw[i + k] === b)) at.push(i); + } + return at; +} + +const LOGICAL_FLAG = 0x02; + +/** A cell's dims subelement: miINT32, its byte count, and each extent. */ +const dimsSubelement = (extents: number[]): number[] => [ + 5, 0, 0, 0, extents.length * 4, 0, 0, 0, + ...extents.flatMap((n) => [n & 0xff, (n >> 8) & 0xff, 0, 0]), +]; + +/** + * The Value of `name` in `file`, its dims subelement (`from`, which must be the only one in the + * blob) respelled as `to`, of the same rank, and the cell made logical where `logical` is set. + */ +function respelledValue(file: string, name: string, from: number[], to: number[], logical: boolean): unknown { + const { raw, vars } = blobParts(file); + const hits = findAll(raw, dimsSubelement(from)); + expect(hits).toHaveLength(1); + const at = hits[0]; + // The array-flags subelement just before it, whose class byte is at `at - 8` and whose + // flags byte is at `at - 7` (miUINT32, 8 bytes). + expect(Array.from(raw.slice(at - 16, at - 8))).toEqual([6, 0, 0, 0, 8, 0, 0, 0]); + expect(raw[at - 7] & LOGICAL_FLAG).toBe(0); + const patched = raw.slice(); + const view = new DataView(patched.buffer, patched.byteOffset, patched.byteLength); + to.forEach((n, k) => view.setUint32(at + 8 + k * 4, n, true)); + if (logical) patched[at - 7] |= LOGICAL_FLAG; + return decodeMcosBlob(patched, vars).get(name)!.properties.Value; +} + +// What the host shows for the value, and the shape it holds. +function shown(value: unknown): { className: string; dims: number[]; display: string } { + const node: any = NodeRegistry.parseValue(value, 'Value', null); + return { className: node.className, dims: node._dims, display: node.displayValue }; +} + +const ND = ['typed_objects.mat', 'pInt16Nd', [2, 2, 2]] as const; +const MAT = ['ParamMat.mat', 'ParamMat', [2, 3]] as const; + +describe('decodeMcosBlob: an empty logical of rank 3 keeps its class and its shape', () => { + it('precondition: pInt16Nd is the int16 2x2x2 MATLAB wrote', () => { + const [file, name, dims] = ND; + const value = respelledValue(file, name, [...dims], [...dims], false); + expect(value).toEqual({ _type: 'int16', _value: 'Matrix(2,2,2)\n[[1, 3]; [2, 4]; [5, 7]; [6, 8]]' }); + }); + + it('a logical 2x0x2 is the typed logical Matrix(2,0,2), and shows as a <2x0x2 logical>', () => { + const [file, name, dims] = ND; + const value = respelledValue(file, name, [...dims], [2, 0, 2], true); + expect(value).toEqual({ _type: 'logical', _value: 'Matrix(2,0,2)\n[[]; []]' }); + expect(shown(value)).toEqual({ className: 'logical', dims: [2, 0, 2], display: '<2x0x2 logical>' }); + }); + + it('a logical 0x2x2 and 2x2x0 are typed alike', () => { + const [file, name, dims] = ND; + expect(shown(respelledValue(file, name, [...dims], [0, 2, 2], true))).toMatchObject({ className: 'logical', dims: [0, 2, 2] }); + expect(shown(respelledValue(file, name, [...dims], [2, 2, 0], true))).toMatchObject({ className: 'logical', dims: [2, 2, 0] }); + }); + + it('control: a logical 2x2x2 is the typed logical it was', () => { + const [file, name, dims] = ND; + const value = respelledValue(file, name, [...dims], [...dims], true); + expect(value).toMatchObject({ _type: 'logical' }); + expect(shown(value)).toMatchObject({ className: 'logical', dims: [2, 2, 2] }); + }); + + it('control: an int16 2x0x2 is still the [] it was', () => { + const [file, name, dims] = ND; + expect(respelledValue(file, name, [...dims], [2, 0, 2], false)).toEqual([]); + }); + + it('control: a logical 0x0, 1x0, 0x1, 2x0 and 0x3 are still the [] they were', () => { + const [file, name, dims] = MAT; + for (const to of [[0, 0], [1, 0], [0, 1], [2, 0], [0, 3]]) { + expect(respelledValue(file, name, [...dims], to, true), to.join('x')).toEqual([]); + } + }); +}); diff --git a/test/parity/matlab/DESIGN.md b/test/parity/matlab/DESIGN.md index 57e0d7ba..fb8fdfc8 100644 --- a/test/parity/matlab/DESIGN.md +++ b/test/parity/matlab/DESIGN.md @@ -2481,6 +2481,9 @@ Two findings from that hardening, measured and deliberately NOT acted on: of the four channels carry no property data for it at all — defect 40. Recorded from the raw bags, because MATLAB does not call `Choices` a property and parity therefore passes. +- **An EMPTY numeric or logical array of a class other than double, in an MCOS object, reads + as a double 0x0** (left out of C-033): `McosParser.resolveValue` hands it over as `[]`, but + a logical of rank 3 or more keeps its typed `Matrix(2,0,2)` (`mcosEmptyLogical.test.ts`). - **A complex EMPTY in a binary dictionary shows as an empty quoted char.** MATLAB writes `

`; the empty body fails parseCdata's text test and its stream decode, so the value is `''` where the same Parameter in a