Bugix for Frobenius norm of complex matrices. #1098
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As mentioned in #1094
The code on line 195 of
lib/function/arithmetic/norm.js
is comment withsqrt(sum(diag(x'x)))
but this is only true for the conjugate transpose. The general formula issqrt(sum(sum(pow(abs(a[i,j]),2),i=1..m),j=1..n))
, the square root of the sum of the absolute values squared of the entries.This commit makes mathjs agree with matlab, and improves the efficiency by directly summing a[i,j]' * a[i,j]. The old method was cubic (for square matrices); this method is quadratic. I also added a short test.
In mathjs 5.2.1:
In matlab:
After this commit, mathjs outputs 5.