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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion public/dimensional_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -2721,7 +2721,10 @@ def replace_placeholder_funcs(numerical_mode: bool, expr: Expr, error: Exception
result = cast(Expr, expr.func(*(arg[0] for arg in processed_args)))
if needs_dims and not error:
try:
dim_result = cast(Expr, expr.func(*(arg[1] for arg in processed_args)))
if expr.func is Mul:
dim_result = cast(Expr, custom_multiply_dims(False, *(arg[1] for arg in processed_args)))
else:
dim_result = cast(Expr, expr.func(*(arg[1] for arg in processed_args)))
except Exception as e:
error = e
dim_result = None
Expand Down
14 changes: 10 additions & 4 deletions tests/test_matrix_multiplication.spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -548,11 +548,17 @@ test('Preserve units when vector with zero entries multiplied by scalar with uni
expect(content).toBe(String.raw`\begin{bmatrix} 0\left\lbrack N\right\rbrack \\ 1\left\lbrack N\right\rbrack \end{bmatrix}`);
});

test('Preserve units when vector with zero entries multiplied by vector with units', async () => {
await page.setLatex(0, String.raw`\begin{bmatrix}0\\ 1\end{bmatrix}\cdot\begin{bmatrix}1\left\lbrack N\right\rbrack & 2\left\lbrack N\right\rbrack\end{bmatrix}=`);
test('Nested vector dimensional analysis bug #412', async () => {
await page.setLatex(0, String.raw`b=\begin{bmatrix}1\left\lbrack m\right\rbrack\\ 2\left\lbrack m\right\rbrack\end{bmatrix}`);

await page.locator('#add-math-cell').click();
await page.setLatex(1, String.raw`c=b\cdot1\left\lbrack m\right\rbrack`);

await page.locator('#add-math-cell').click();
await page.setLatex(2, String.raw`\frac{c}{.5\left\lbrack s\right\rbrack}=`);

await page.waitForSelector('text=Updating...', {state: 'detached'});

let content = await page.textContent('#result-value-0');
expect(content).toBe(String.raw`\begin{bmatrix} 0\left\lbrack N\right\rbrack & 0\left\lbrack N\right\rbrack \\ 1\left\lbrack N\right\rbrack & 2\left\lbrack N\right\rbrack \end{bmatrix}`);
let content = await page.textContent('#result-value-2');
expect(content).toBe(String.raw`\begin{bmatrix} 2\left\lbrack \frac{m^{2}}{s}\right\rbrack \\ 4\left\lbrack \frac{m^{2}}{s}\right\rbrack \end{bmatrix}`);
});
Loading