diff --git a/AUTHORS b/AUTHORS index ff6b0e4c3e..c9587cdaf5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -243,5 +243,8 @@ Rich Martinez <6185506+rich-martinez@users.noreply.github.com> Rich Martinez RandomGamingDev <83996185+RandomGamingDev@users.noreply.github.com> Brian Fugate +Sukka +Rohil Shah +Laurent GĂ©rin <41303636+lgerin@users.noreply.github.com> # Generated by tools/update-authors.js diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..73fd2cfdd0 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +mathjs. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/HISTORY.md b/HISTORY.md index bc042a1a17..474ff57b1c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,34 @@ # History +# unpublished changes since 12.4.2 + +- Fix: serialization of Units without a value, see #1240. +- Fix: outdated, incorrect documentation about the order of precedence for + operator modulus `%`. See #3189. + + +# 2024-04-24, 12.4.2 + +- Fix #3192: function `isNaN` returns `false` for `NaN` units in a matrix or + array (#3193). Thanks @lgerin. +- Fix: #3180 fix type definitions of functions `add` and `multiply` to allow + more than two arguments. +- Docs: correct the docs about `traverse` returning void (#3177). + Thanks @rohildshah. + + +# 2024-03-13, 12.4.1 + +- Docs: implement an interactive version of the Lorenz example, and show the + chart full screen (#3151). Thanks @dvd101x. +- Fix #3172: simplify `"true and true"`. +- Fix #3163: `toTex` wrongly returning `Infinity` for large BigNumbers. +- Fix #3162: add license information about CSParse (#3164). +- Fix #3175: cannot delete units using `math.Unit.deleteUnit`. +- Fix: faster startup time of the CLI and REPL by loading the bundle. +- Fix: remove using polyfill.io inside the example + `pretty_printing_with_mathjax.html` (#3167). Thanks @SukkaW. + # 2024-02-22, 12.4.0 diff --git a/README.md b/README.md index a35e0f74c9..44c6e82f4a 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,9 @@ Thanks Github Actions and BrowserStack for the generous free hosting of this ope ## License +mathjs is published under the Apache 2.0 license: + +``` Copyright (C) 2013-2024 Jos de Jong Licensed under the Apache License, Version 2.0 (the "License"); @@ -208,3 +211,28 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +``` + +mathjs contains a JavaScript port of the [CSparse](https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/CSparse/Source) library, published under the LGPL-2.1+ license: + +``` +CSparse: a Concise Sparse matrix package. +Copyright (c) 2006, Timothy A. Davis. +http://www.suitesparse.com + +-------------------------------------------------------------------------------- + +CSparse is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +CSparse is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this Module; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +``` diff --git a/bin/cli.js b/bin/cli.js index c1b7a48e16..4943276d29 100755 --- a/bin/cli.js +++ b/bin/cli.js @@ -59,7 +59,7 @@ const PRECISION = 14 // decimals * @return {*} */ function getMath () { - return require('../lib/cjs/defaultInstance.js').default + return require('../lib/browser/math.js') } /** @@ -113,7 +113,7 @@ function completer (text) { const ignore = ['expr', 'type'] for (const func in math.expression.mathWithTransform) { if (hasOwnProperty(math.expression.mathWithTransform, func)) { - if (func.indexOf(keyword) === 0 && ignore.indexOf(func) === -1) { + if (func.indexOf(keyword) === 0 && !ignore.includes(func)) { matches.push(func) } } diff --git a/bin/repl.js b/bin/repl.js index 21c9b1164a..9ad06fef0a 100755 --- a/bin/repl.js +++ b/bin/repl.js @@ -4,7 +4,7 @@ * This simply preloads mathjs and drops you into a REPL to * help interactive debugging. **/ -global.math = require('../lib/cjs/defaultInstance.js').default +global.math = require('../lib/browser/math.js') const repl = require('repl') repl.start({ useGlobal: true }) diff --git a/docs/expressions/expression_trees.md b/docs/expressions/expression_trees.md index f1977470b1..e095019857 100644 --- a/docs/expressions/expression_trees.md +++ b/docs/expressions/expression_trees.md @@ -213,7 +213,7 @@ All nodes have the following methods: this node and each of its child nodes. Similar to `Array.forEach`, except recursive. The callback function is a mapping function accepting a node, and returning - a replacement for the node or the original node. Function `callback` is + nothing. Function `callback` is called as `callback(node: Node, path: string, parent: Node)` for every node in the tree. Parameter `path` is a string containing a relative JSON Path. Example: diff --git a/docs/expressions/syntax.md b/docs/expressions/syntax.md index a21f1d62c2..618dcbb7ea 100644 --- a/docs/expressions/syntax.md +++ b/docs/expressions/syntax.md @@ -114,8 +114,9 @@ Operators | Description `!` | Factorial `^`, `.^` | Exponentiation `+`, `-`, `~`, `not` | Unary plus, unary minus, bitwise not, logical not +`%`, `mod` | percentage, modulus See section below | Implicit multiplication -`*`, `/`, `.*`, `./`, `%`, `mod` | Multiply, divide, percentage, modulus +`*`, `/`, `.*`, `./` | Multiply, divide `+`, `-` | Add, subtract `:` | Range `to`, `in` | Unit conversion diff --git a/examples/browser/lorenz.html b/examples/browser/lorenz.html index a751280ee3..6919e1623a 100644 --- a/examples/browser/lorenz.html +++ b/examples/browser/lorenz.html @@ -7,6 +7,22 @@ + @@ -36,7 +52,11 @@ type: "scatter3d", mode: "lines" }], - { width: 800, height: 600 } + { + responsive: true, + uirevision: 'true', + title:"Lorenz Attractor", + } ) // define the lorenz attractor diff --git a/examples/browser/lorenz_interactive.html b/examples/browser/lorenz_interactive.html new file mode 100644 index 0000000000..8a8a1d7791 --- /dev/null +++ b/examples/browser/lorenz_interactive.html @@ -0,0 +1,193 @@ + + + + + + math.js | Lorenz Attractor + + + + + + + + + +
+
+
+ Inputs: + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + +
+
+
+ + + + diff --git a/examples/browser/pretty_printing_with_mathjax.html b/examples/browser/pretty_printing_with_mathjax.html index 1fa273286f..d639b07d4a 100644 --- a/examples/browser/pretty_printing_with_mathjax.html +++ b/examples/browser/pretty_printing_with_mathjax.html @@ -5,7 +5,6 @@ math.js | pretty printing with MathJax -