@zushah/chalkboard 2.4.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,293 +1,334 @@
1
1
  # Chalkboard changelog
2
- All notable changes of every update of the Chalkboard library are recorded in this file.
2
+ All notable changes of every update of Chalkboard are recorded in this file.
3
+
4
+ ## [v3.0.0 Euler](https://www.github.com/Zushah/Chalkboard/releases/tag/v3.0.0) - 03/02/2026
5
+ The fifteenth release of Chalkboard.
6
+ Commits: [`v2.4.0...v3.0.0`](https://www.github.com/Zushah/Chalkboard/compare/v2.4.0...v3.0.0)
7
+ - Added `REGISTRY` and `REGISTER` which enable the inclusion of custom functions in `real.parse` and `comp.parse`.
8
+ - Added `diff.init` which defines ordinary differential equations (both singles and systems).
9
+ - Added `diff.solve` which calculates the solutions of differential equations using either Euler's method, the midpoint method, Heun's method, Ralston's method, or the fourth-order Runge-Kutta method, and added `diff.solveAdaptive` which calculates the solutions of differential equations using the Dormand-Prince (or Runge–Kutta–Fehlberg) method.
10
+ - Added `diff.at`, `diff.closestIndex`, `diff.component`, `diff.derivative`, `diff.error`, `diff.phase`, `diff.sample`, and `diff.toScalarSeries` which calculate various different helping utilities for differential equations and their solutions.
11
+ - Added `diff.exponential`, `diff.linear1`, `diff.linear2`, `diff.logistic`, and `diff.separable` which define basic types of differential equations.
12
+ - Added `diff.harmonic`, `diff.harmonicDamped`, `diff.harmonicForced`, `diff.massSpringDamper`, `diff.pendulum`, `diff.pendulumDrag`, and `diff.pendulumDriven` which define differential equations for classic physics demonstrations.
13
+ - Added `diff.Kepler2D` and `diff.Kepler3D` which define differential equations for Kepler two-body problems in 2D and 3D, respectively, and added `diff.LotkaVolterra` which defines a differential equation for a Lotka-Volterra predator-prey model, and added `diff.SIS`, `diff.SIR`, and `diff.SEIR` which define differential equations for SIR (susceptible-infected-recovered), SIS (susceptible-infected-susceptible), and SEIR (susceptible-exposed-infected-recovered) epidemic models, respectively.
14
+ - Added `diff.Bernoulli` which defines a Bernoulli equation, `diff.BesselJ` which defines a Bessel function of the first kind, `diff.BesselI` which defines a modified Bessel equation of the first kind, `diff.Duffing` which defines a Duffing attractor, `diff.Gompertz` which defines a Gompertz equation, and `diff.Lorenz` which defines a Lorenz attractor.
15
+ - Added `plot.ode` which plots solutions of differential equations.
16
+ - Added `calc.fft`, `calc.ifft`, `calc.dft`, `calc.idft`, `calc.rfft`, `calc.irfft`, `calc.fftfreq`, `calc.fftshift`, and `calc.ifftshift` which calculate various different Fourier transform operations on arrays.
17
+ - Added `calc.iFourier` which calculates the inverse Fourier transform of a `ChalkboardFunction` and thus corresponds to `calc.Fourier`.
18
+ - Added `numb.convert` which can convert numbers from and to various measurement units of length, area, mass, volume, pressure, time, and temperature.
19
+ - Added `comp.sin`, `comp.cos`, `comp.tan`, and `comp.exp` which calculates those functions for complex-valued inputs.
20
+ - Added `real.erf` which calculates the error function and `real.Gamma` which calculates the gamma function.
21
+ - Added `matr.Cholesky` which calculates the Cholesky decomposition of a matrix.
22
+ - Added `comp.isApproxEqual`, `comp.isEqual`, `comp.isInverse`, `comp.isNormalized`, `comp.isZero`, `matr.isApproxEqual`, `quat.isApproxEqual`, `quat.isEqual`, `quat.isInverse`, `quat.isNormalized`, `quat.isZero`, `tens.isApproxEqual`, `tens.isZero`, and `vect.isApproxEqual`.
23
+ - Added tests in the `./test/` folder for all of the near-700 functions of Chalkboard.
24
+ - Added Terser to manually generate the `./dist/Chalkboard.min.js` file whereas before it was automatically generated by jsDelivr's Terser.
25
+ - Removed `PARSEPREFIX` because of the total rewrite of `real.parse` and `comp.parse` which now use the new `REGISTRY` and `REGISTER`.
26
+ - Removed `LOGO` because the Chalkboard logo is now rendered with an SVG and a Python script.
27
+ - Removed `README` (the function in the code, not the file in the repo) because it was useless.
28
+ - Removed ESLint and Prettier because I don't like them.
29
+ - Changed TypeScript build target to ES2023 instead of ES5.
30
+ - Changed everything regarding `ChalkboardFunction` (so in other words, essentially all of the `calc`, `comp`, `real`, and `plot` namespaces, as well as a handful of functions in the `numb`, `stat`, `trig`, and `vect` namespaces) such that they now use native JavaScript function references (with a `rule` property) instead of string-based definitions (with a `definition` property). Furthermore, the `type` properties of functions (e.g. `"expl"`, `"pola"`, `"curv"`, etc.) are now automatically configured instead of needing to be explicitly provided. They have also been renamed to be more descriptive (e.g. `"expl"` changed to `"scalar2d"`, `"mult"` changed to `"scalar3d"`, `"curv"` changed to `"curve2d"`, etc.). Additionally, `ChalkboardVectorField` has been removed and replaced with `ChalkboardFunction` (that has a `type` of `"vector2d"`, `"vector3d"`, and `"vector4d"`), although both `real.define` and `vect.field` are still available to be used to define vector fields. Also, the `field` property has been added to `ChalkboardFunction` to explicitly differentiate functions in the field of real numbers from functions in the field of complex numbers ("`field`" here refers to the algebraic structure, not the function type of vector fields). Talking about functions in the field of complex numbers, they can now be defined with `comp.define` in two different ways: two functions of two variables that denote the real and imaginary parts of the function as they take two real numbers and return a real number (old feature) or one function of one variable that denotes an explicit complex function as it takes one complex number and returns a complex number (new feature). Lastly, since the function types are automatically configured based on the function signatures instead of explicitly inputted by strings, the `config` parameter of `plot.definition` has two new options which are `isInverse` and `isPolar` (and `plot.dfdx`, `plot.d2fdx2`, and `plot.fxdx` also have the `isInverse` option) so that plotting inverse and polar functions is still available with the new `"scalar2d"` function type that replaced the `"inve"` and `"pola"` types.
31
+ - Changed everything regarding `real.parse` and `comp.parse` such that they will now be able to support advanced algebraic expression handling. The user can input mathematical expressions such as `"(2x - 3y)^4"` and the parser will automatically expand and simplify them algebraically. These functions can evaluate expressions using a `values` object to substitute variables, for example, inputting the expression `"(2x - 3y)^4"` and `values: { x: 1, y: 2 }` will return `256`. Additionally, the abstract syntax tree (AST) of any expression can be obtained by the `returnAST` option, a JSON string of an AST can be obtained by the `returnJSON` option, or a string of the corresponding LaTeX code can be generated by the `returnLaTeX` option. There is also fine-tunable control over numerical precision using the `roundTo` option, which rounds results to the specified place value, such as using `roundTo: 0.0001` to ensure that `"1 - 0.9"` yields `0.1` instead of floating-point imprecision. Custom functions are now registered explicitly using `REGISTER`, replacing the previous string-based `PARSEPREFIX` system. This makes it more secure and flexible, allowing for user-defined functions to be safely added and used within mathematical expressions evaluated by Chalkboard's parsers. The registered functions are centralized in `REGISTRY`.
32
+ - Changed `bool.parse` to have `values`, `returnAST`, `returnJSON`, and `returnLaTeX` options like `real.parse` and `comp.parse` do, and changed `bool.isEqual`, `bool.Karnaugh`, `bool.mapping`, `bool.minimize`, `bool.toCNF`, and `bool.toDNF` to accomodate the changes to `bool.parse`.
33
+ - Changed every function in the `numb` namespace to have thorough error-checking.
34
+ - Changed `calc.Fourier`, `trig.arcsin`, `trig.arccos`, `trig.arctan`, `trig.arccsc`, `trig.arcsec`, and `trig.arccot` to run faster.
35
+ - Changed `matr.isIdentity`, `matr.isLowerTriangular`, `matr.isUpperTriangular`, `matr.isOrthogonal`, `matr.isZero`, `vect.isNormalized`, `vect.isOrthogonal`, `vect.isParallel`, and `vect.isZero` to use the new `matr.isApproxEqual` or `vect.isApproxEqual`.
36
+ - Changed the license of Chalkboard from MIT to MPL-2.0.
37
+ - Fixed `comp.toString` and `quat.toString` which were not working as intended when the imaginary parts were 1 or -1.
38
+ - Fixed `matr.isDiagonal` which was actually returning false for diagonal matrices.
39
+ - Fixed `numb.compositeArr` which was treating 0 and 1 as composites, fixed `numb.Fibonacci` which had a broken recursive calculation, fixed `numb.Gaussian` which had an ambiguous height parameter and an incorrect Box-Muller transform, fixed `numb.Euler` which was not using distinct prime factors, fixed `numb.prime` which was not handling small indices correctly, fixed `numb.gcd` and `numb.lcm` which were not using absolute values, fixed `numb.toDecimal` which was not preserving the original sign of a number, fixed `numb.map` which was not avoiding division by zero, and fixed `numb.toFraction` to have an iterative maximum.
40
+ - Fixed `stat.regression` which was incorrect in its calculation of power regressions.
41
+ - Fixed `stat.mul` and `stat.cummul` which were always returning 0.
42
+ - Fixed `stat.mean` which was always returning 0 for its calculation of geometric means.
43
+ - Fixed `trig.arccos`, `trig.arccsc`, and `trig.arcsec` which were broken due to singularities and undefined domains.
3
44
 
4
45
  ## [v2.4.0 Noether](https://www.github.com/Zushah/Chalkboard/releases/tag/v2.4.0) - 04/28/2025
5
- The fourteenth release of the Chalkboard library.
46
+ The fourteenth release of Chalkboard.
6
47
  Commits: [`v2.3.0...v2.4.0`](https://www.github.com/Zushah/Chalkboard/compare/v2.3.0...v2.4.0)
7
- - Added `vect.modeConfig` which can change the input/output mode of the `vect` commands so that they can accept and return vectors (`"vector"` mode, which is the default), arrays (`"array"` mode), typed arrays (`"float32array"` or `"float64array"` modes), matrices (`"matrix"` mode), strings (`"string"` mode), or JSON strings (`"json"` mode)
8
- - Added `abal.monoid`, `abal.isMonoid`, and `abal.isSubmonoid` which defines and checks for the algebraic structures known as monoids
9
- - Added `abal.toTypedArray`, `comp.toTypedArray`, `matr.toTypedArray`, `quat.toTypedArray`, `tens.toTypedArray` and `vect.toTypedArray` which convert sets, structures, complex numbers, matrices, quaternions, tensors, and vectors to six different possible typed arrays
10
- - Added `real.zero` which defines a zero function of a specified type
11
- - Removed `comp.zero` and `quat.zero` because they were redundant as `comp.init` and `quat.init` already have their feature
12
- - Changed `trig.cos` and `trig.sin` to be roughly ten times faster
13
- - Changed `abal.group`, `abal.ring`, and `abal.field` to no longer use presets for sets and operations
14
- - Changed `abal.isSubset`, `abal.isSubgroup`, `abal.isSubring`, and `abal.isSubfield` to be able to work with infinite sets
15
- - Changed `abal.isClosed`, `abal.isEqual`, and `abal.direct` to be able to work with monoids
16
- - Changed `bool.modeConfig` to be able to work case-insensitively
17
- - Changed `matr.zero` and `tens.zero` to input the size of the zero matrix or tensor directly instead of inputting another matrix or tensor
18
- - Changed all of the `vect` commands to work with the new `vect.modeConfig` feature
19
- - Changed `APPLY` and some of the `calc`, `matr`, `quat`, and `real` commands to work with the new `vect.modeConfig` feature
20
- - Changed all of the `plot` commands to work with the new `plot.getContext` fix
21
- - Fixed `plot.PARSED_CONTEXT` by replacing it with `plot.getContext` as it was throwing false errors when no HTML `<canvas>` element was available even if the `plot` commands weren't in use
22
- - Fixed `numb.isRational` which was giving inaccurate results because it was able to turn any floating-point number into a fraction even if it's mathematically inaccurate
48
+ - Added `vect.modeConfig` which can change the input/output mode of the `vect` commands so that they can accept and return vectors (`"vector"` mode, which is the default), arrays (`"array"` mode), typed arrays (`"float32array"` or `"float64array"` modes), matrices (`"matrix"` mode), strings (`"string"` mode), or JSON strings (`"json"` mode).
49
+ - Added `abal.monoid`, `abal.isMonoid`, and `abal.isSubmonoid` which defines and checks for the algebraic structures known as monoids.
50
+ - Added `abal.toTypedArray`, `comp.toTypedArray`, `matr.toTypedArray`, `quat.toTypedArray`, `tens.toTypedArray` and `vect.toTypedArray` which convert sets, structures, complex numbers, matrices, quaternions, tensors, and vectors to six different possible typed arrays.
51
+ - Added `real.zero` which defines a zero function of a specified type.
52
+ - Removed `comp.zero` and `quat.zero` because they were redundant as `comp.init` and `quat.init` already have their feature.
53
+ - Changed `trig.cos` and `trig.sin` to be roughly ten times faster.
54
+ - Changed `abal.group`, `abal.ring`, and `abal.field` to no longer use presets for sets and operations.
55
+ - Changed `abal.isSubset`, `abal.isSubgroup`, `abal.isSubring`, and `abal.isSubfield` to be able to work with infinite sets.
56
+ - Changed `abal.isClosed`, `abal.isEqual`, and `abal.direct` to be able to work with monoids.
57
+ - Changed `bool.modeConfig` to be able to work case-insensitively.
58
+ - Changed `matr.zero` and `tens.zero` to input the size of the zero matrix or tensor directly instead of inputting another matrix or tensor.
59
+ - Changed all of the `vect` commands to work with the new `vect.modeConfig` feature.
60
+ - Changed `APPLY` and some of the `calc`, `matr`, `quat`, and `real` commands to work with the new `vect.modeConfig` feature.
61
+ - Changed all of the `plot` commands to work with the new `plot.getContext` fix.
62
+ - Fixed `plot.PARSED_CONTEXT` by replacing it with `plot.getContext` as it was throwing false errors when no HTML `<canvas>` element was available even if the `plot` commands weren't in use.
63
+ - Fixed `numb.isRational` which was giving inaccurate results because it was able to turn any floating-point number into a fraction even if it's mathematically inaccurate.
23
64
 
24
65
  ## [v2.3.0 Boole](https://www.github.com/Zushah/Chalkboard/releases/tag/v2.3.0) - 04/14/2025
25
- The thirteenth release of the Chalkboard library.
66
+ The thirteenth release of Chalkboard.
26
67
  Commits: [`v2.2.0...v2.3.0`](https://www.github.com/Zushah/Chalkboard/compare/v2.2.0...v2.3.0)
27
- - Added `I` which calculates the number i
28
- - Added boolean algebra functionalities with the new `bool` category containing 23 commands, which are mentioned below
29
- - Added `bool.AND`, `bool.OR`, `bool.XOR`, `bool.COND`, `bool.CONV`, `bool.BICOND`, `bool.NOT`, `bool.NAND`, `bool.NOR`, `bool.NCOND`, `bool.NCONV`, and `bool.NBICOND` which are boolean operations that act on two or more values
30
- - Added `bool.parse` which evaluates or simplifies a boolean expression, `bool.minimize` which minimizes a boolean expression, and `bool.isEqual` which checks if two boolean expressions are logically equivalent
31
- - Added `bool.truthTable` which calculates the truth table for one or more boolean operators
32
- - Added `bool.Karnaugh` which defines the Karnaugh map (or K-map) for a boolean expression and `bool.mapping` which defines a function that maps inputs to outputs based on truth tables
33
- - Added `bool.primeImplicants` which calculates the prime implicants of a boolean expression using its Karnaugh map
34
- - Added `bool.toCNF` which converts a boolean expression to conjunctive normal form and `bool.toDNF` which converts a boolean expression to disjunctive normal form
35
- - Added `bool.modeConfig` which can change the mode of the `bool` commands to output either `1`/`0` (which is `"binary"` mode) or `true`/`false` (which is `"boolean"` mode)
36
- - Added `numb.toBinary`, `numb.toHexadecimal`, and `numb.toOctal` which convert numbers from decimal representation to binary, hexadecimal, or octal representations
37
- - Added `numb.toDecimal` which converts a number from another representation back to decimal representation
38
- - Added `real.absolute`, `real.add`, `real.compose`, `real.div`, `real.mul`, `real.negate`, `real.pow` `real.reciprocate`, `real.scl`, `real.sub`, and `real.translate` which calculate the absolute value of a function, the addition of two functions, the composition of two functions, the division of two functions, the multiplication of two functions, the negation of a function, the exponentation of a function, the reciprocation of a function, the scalar multiplication of a function, the subtraction of two functions, and the translation of a function, respectively
39
- - Added `real.polynomial` which defines a polynomial function based on inputted coefficients, and added `real.randomPolynomial` which defines a polynomial of a specified degree with random coefficients
40
- - Changed `real.define` to be written more efficiently
41
- - Changed `stat.random` to have its first parameter be the length of the array instead of the last
42
- - Fixed `comp.pow`, `matr.norm`, `matr.normsq`, `plot.definition`, and `stat.regression` which were throwing type errors because of the updated `real.pow` function which can now handle not only numbers but also functions
43
- - Fixed `comp.zero`, `quat.zero`, and `vect.zero` which were unnecessarily using erasing operations
68
+ - Added `I` which calculates the number i.
69
+ - Added boolean algebra functionalities with the new `bool` category containing 23 commands, which are mentioned below.
70
+ - Added `bool.AND`, `bool.OR`, `bool.XOR`, `bool.COND`, `bool.CONV`, `bool.BICOND`, `bool.NOT`, `bool.NAND`, `bool.NOR`, `bool.NCOND`, `bool.NCONV`, and `bool.NBICOND` which are boolean operations that act on two or more values.
71
+ - Added `bool.parse` which evaluates or simplifies a boolean expression, `bool.minimize` which minimizes a boolean expression, and `bool.isEqual` which checks if two boolean expressions are logically equivalent.
72
+ - Added `bool.truthTable` which calculates the truth table for one or more boolean operators.
73
+ - Added `bool.Karnaugh` which defines the Karnaugh map (or K-map) for a boolean expression and `bool.mapping` which defines a function that maps inputs to outputs based on truth tables.
74
+ - Added `bool.primeImplicants` which calculates the prime implicants of a boolean expression using its Karnaugh map.
75
+ - Added `bool.toCNF` which converts a boolean expression to conjunctive normal form and `bool.toDNF` which converts a boolean expression to disjunctive normal form.
76
+ - Added `bool.modeConfig` which can change the mode of the `bool` commands to output either `1`/`0` (which is `"binary"` mode) or `true`/`false` (which is `"boolean"` mode).
77
+ - Added `numb.toBinary`, `numb.toHexadecimal`, and `numb.toOctal` which convert numbers from decimal representation to binary, hexadecimal, or octal representations.
78
+ - Added `numb.toDecimal` which converts a number from another representation back to decimal representation.
79
+ - Added `real.absolute`, `real.add`, `real.compose`, `real.div`, `real.mul`, `real.negate`, `real.pow` `real.reciprocate`, `real.scl`, `real.sub`, and `real.translate` which calculate the absolute value of a function, the addition of two functions, the composition of two functions, the division of two functions, the multiplication of two functions, the negation of a function, the exponentation of a function, the reciprocation of a function, the scalar multiplication of a function, the subtraction of two functions, and the translation of a function, respectively.
80
+ - Added `real.polynomial` which defines a polynomial function based on inputted coefficients, and added `real.randomPolynomial` which defines a polynomial of a specified degree with random coefficients.
81
+ - Changed `real.define` to be written more efficiently.
82
+ - Changed `stat.random` to have its first parameter be the length of the array instead of the last.
83
+ - Fixed `comp.pow`, `matr.norm`, `matr.normsq`, `plot.definition`, and `stat.regression` which were throwing type errors because of the updated `real.pow` function which can now handle not only numbers but also functions.
84
+ - Fixed `comp.zero`, `quat.zero`, and `vect.zero` which were unnecessarily using erasing operations.
44
85
 
45
86
  ## [v2.2.0 Galois](https://www.github.com/Zushah/Chalkboard/releases/tag/v2.2.0) - 04/07/2025
46
- The twelfth release of the Chalkboard library.
87
+ The twelfth release of Chalkboard.
47
88
  Commits: [`v2.1.0...v2.2.0`](https://www.github.com/Zushah/Chalkboard/compare/v2.1.0...v2.2.0)
48
- - Added abstract algebra functionalities with the new `abal` category containing 76 commands, so only a few notable ones are mentioned below
49
- - Added `abal.set` which defines a mathematical set, as well as `abal.Z` which defines the set of integers or the set of integers modulo n, `abal.Q` which defines the set of rational numbers, `abal.R` which defines the set of real numbers, and `abal.C` which defines the set of complex numbers or the set of nth roots of unity
50
- - Added `abal.union`, `abal.intersection`, `abal.complement`, `abal.difference`, `abal.symmetricDifference`, `abal.Cartesian`, `abal.powerSet`, `abal.isSubset`, and `abal.isSuperset` which respectively calculate the union of two sets, the intersection of two sets, the complement of a set, the difference of two sets, the symmetric difference of two sets, the Cartesian product of two sets, the power set of a set, whether or not a set is a subset of another set, and whether or not a set is a superset of another set
51
- - Added `abal.group`, `abal.ring`, and `abal.field` which define the algebraic structures known as groups, rings, and fields
52
- - Added `abal.direct` which calculates the direct sum or direct product of two algebraic structures
53
- - Added `abal.cosets` and `abal.quotient` which respectively calculate the cosets or quotient structure of two inputted algebraic structures
54
- - Added `abal.homomorphism`, `abal.endomorphism`, `abal.isomorphism`, `abal.automorphism`, `abal.idmorphism`, and `abal.invmorphism` which define various types of morphisms between one or two algebraic structures
55
- - Added `abal.compose` which calculates the composition morphism of two given morphisms
56
- - Added `abal.image`, `abal.preimage`, and `abal.kernel` which respectively calculate the image, preimage, or kernel of a given morphism
57
- - Added `abal.cardinality` which calculates the cardinality of a set or the set of a structure
58
- - Added `abal.isEqual` which checks if two sets, structures, or morphisms are equal
59
- - Added `abal.copy` which creates a copy of a set, structure, or morphism
60
- - Added `abal.toArray`, `abal.toMatrix`, `abal.toObject`, `abal.toString`, `abal.toTensor`, and `abal.toVector` which convert sets or structures to arrays, matricies, objects, strings, tensors, or vectors, and `abal.print` prints a set or structure in the console
61
- - Added `stat.Bayes` which calculates the posterior probability given prior probabilities
62
- - Added `stat.expected` which calculates the expected value of an array given the probabilities of its elements
63
- - Added `stat.normal` and `stat.inormal` which respectively calculate the values of the standard normal distribution and cumulative distribution function of the standard normal distribution
64
- - Added `stat.resampling` which resamples an array either by the bootstrap or jackknife methods
65
- - Added `stat.interpolate` which linearly or quadratically interpolates missing elements in an array
66
- - Added `stat.absolute` which takes the absolute value of the elements of an array, `stat.negate` which negates the elements of an array, `stat.add` which adds the elements of two arrays, `stat.sub` which subtracts the elements of two arrays, `stat.dot` which calculates the dot product of two arrays, `stat.scl` which scales the elements of an array by a given number, `stat.sum` which calculates the sum of the elements of an array, `stat.mul` which calculates the product of the elements of an array, and `stat.reverse` which reverses the elements of an array
67
- - Added `stat.cumsum`, `stat.cummul`, `stat.cummax`, and `stat.cummin` which respectively calculate the cumululative sum, product, maximum, and minimum of an array
68
- - Added `stat.meanMoving` and `stat.meanWeighted` which respectively calculate the moving and weighted averages of an array
69
- - Added `stat.covariance` which calculates the covariance of two arrays and `stat.correlationCoefficient` which calculates the correlation coefficient of two arrays
70
- - Added `stat.interquartileRange` which calculates the interquartile range of an array
71
- - Added `stat.zscored` which standardizes the elements of an array by their mean and standard deviation
72
- - Added `stat.pad` which pads an array by a given element to a given length
89
+ - Added abstract algebra functionalities with the new `abal` category containing 76 commands, so only a few notable ones are mentioned below.
90
+ - Added `abal.set` which defines a mathematical set, as well as `abal.Z` which defines the set of integers or the set of integers modulo n, `abal.Q` which defines the set of rational numbers, `abal.R` which defines the set of real numbers, and `abal.C` which defines the set of complex numbers or the set of nth roots of unity.
91
+ - Added `abal.union`, `abal.intersection`, `abal.complement`, `abal.difference`, `abal.symmetricDifference`, `abal.Cartesian`, `abal.powerSet`, `abal.isSubset`, and `abal.isSuperset` which respectively calculate the union of two sets, the intersection of two sets, the complement of a set, the difference of two sets, the symmetric difference of two sets, the Cartesian product of two sets, the power set of a set, whether or not a set is a subset of another set, and whether or not a set is a superset of another set.
92
+ - Added `abal.group`, `abal.ring`, and `abal.field` which define the algebraic structures known as groups, rings, and fields.
93
+ - Added `abal.direct` which calculates the direct sum or direct product of two algebraic structures.
94
+ - Added `abal.cosets` and `abal.quotient` which respectively calculate the cosets or quotient structure of two inputted algebraic structures.
95
+ - Added `abal.homomorphism`, `abal.endomorphism`, `abal.isomorphism`, `abal.automorphism`, `abal.idmorphism`, and `abal.invmorphism` which define various types of morphisms between one or two algebraic structures.
96
+ - Added `abal.compose` which calculates the composition morphism of two given morphisms.
97
+ - Added `abal.image`, `abal.preimage`, and `abal.kernel` which respectively calculate the image, preimage, or kernel of a given morphism.
98
+ - Added `abal.cardinality` which calculates the cardinality of a set or the set of a structure.
99
+ - Added `abal.isEqual` which checks if two sets, structures, or morphisms are equal.
100
+ - Added `abal.copy` which creates a copy of a set, structure, or morphism.
101
+ - Added `abal.toArray`, `abal.toMatrix`, `abal.toObject`, `abal.toString`, `abal.toTensor`, and `abal.toVector` which convert sets or structures to arrays, matricies, objects, strings, tensors, or vectors, and `abal.print` prints a set or structure in the console.
102
+ - Added `stat.Bayes` which calculates the posterior probability given prior probabilities.
103
+ - Added `stat.expected` which calculates the expected value of an array given the probabilities of its elements.
104
+ - Added `stat.normal` and `stat.inormal` which respectively calculate the values of the standard normal distribution and cumulative distribution function of the standard normal distribution.
105
+ - Added `stat.resampling` which resamples an array either by the bootstrap or jackknife methods.
106
+ - Added `stat.interpolate` which linearly or quadratically interpolates missing elements in an array.
107
+ - Added `stat.absolute` which takes the absolute value of the elements of an array, `stat.negate` which negates the elements of an array, `stat.add` which adds the elements of two arrays, `stat.sub` which subtracts the elements of two arrays, `stat.dot` which calculates the dot product of two arrays, `stat.scl` which scales the elements of an array by a given number, `stat.sum` which calculates the sum of the elements of an array, `stat.mul` which calculates the product of the elements of an array, and `stat.reverse` which reverses the elements of an array.
108
+ - Added `stat.cumsum`, `stat.cummul`, `stat.cummax`, and `stat.cummin` which respectively calculate the cumululative sum, product, maximum, and minimum of an array.
109
+ - Added `stat.meanMoving` and `stat.meanWeighted` which respectively calculate the moving and weighted averages of an array.
110
+ - Added `stat.covariance` which calculates the covariance of two arrays and `stat.correlationCoefficient` which calculates the correlation coefficient of two arrays.
111
+ - Added `stat.interquartileRange` which calculates the interquartile range of an array.
112
+ - Added `stat.zscored` which standardizes the elements of an array by their mean and standard deviation.
113
+ - Added `stat.pad` which pads an array by a given element to a given length.
73
114
  - Added `stat.unique` which deduplicates an array of numbers, arrays, objects, etc.
74
- - Added `matr.toSet`, `stat.toSet` and `tens.toSet` to convert matrices, arrays, and tensors to sets
75
- - Added `numb.toFraction` to convert decimals to fractions and `numb.isRational` to check if a number is rational
76
- - Changed `APPLY` to work for sets and algebraic structures introduced in the `abal` category
77
- - Changed `stat.change` and `stat.chiSquared` to be written more succinctly
78
- - Changed `stat.confidenceInterval` to use an adjustable confidence level
79
- - Changed `stat.toMatrix` to be able to use only one parameter for the size of the matrix instead of requiring two
80
- - Changed `matr.rotator` to be faster
81
- - Changed `comp.toString` to output 1, i, -1, or -i when 1+0i, 0+1i, -1+0i, or 0-1i are inputted
82
- - Fixed `comp.div` which was broken for who knows how long because it was using the wrong formula for some reason
83
- - Fixed `matr.resize` which was always returning zero matrices
84
- - Fixed `matr.zero` which was unnecessarily using erasing operations
85
- - Fixed `tens.init` which had an expression assigned to itself
86
- - Fixed `geom.rectangularprismA` thanks to @gyang0's contribution [here](https://github.com/Zushah/Chalkboard/pull/5)
115
+ - Added `matr.toSet`, `stat.toSet` and `tens.toSet` to convert matrices, arrays, and tensors to sets.
116
+ - Added `numb.toFraction` to convert decimals to fractions and `numb.isRational` to check if a number is rational.
117
+ - Changed `APPLY` to work for sets and algebraic structures introduced in the `abal` category.
118
+ - Changed `stat.change` and `stat.chiSquared` to be written more succinctly.
119
+ - Changed `stat.confidenceInterval` to use an adjustable confidence level.
120
+ - Changed `stat.toMatrix` to be able to use only one parameter for the size of the matrix instead of requiring two.
121
+ - Changed `matr.rotator` to be faster.
122
+ - Changed `comp.toString` to output 1, i, -1, or -i when 1+0i, 0+1i, -1+0i, or 0-1i are inputted.
123
+ - Fixed `comp.div` which was broken for who knows how long because it was using the wrong formula for some reason.
124
+ - Fixed `matr.resize` which was always returning zero matrices.
125
+ - Fixed `matr.zero` which was unnecessarily using erasing operations.
126
+ - Fixed `tens.init` which had an expression assigned to itself.
127
+ - Fixed `geom.rectangularprismA` thanks to @gyang0's contribution [here](https://github.com/Zushah/Chalkboard/pull/5).
87
128
 
88
129
  ## [v2.1.0 Seki](https://www.github.com/Zushah/Chalkboard/releases/tag/v2.1.0) - 01/22/2024
89
- The eleventh release of the Chalkboard library.
130
+ The eleventh release of Chalkboard.
90
131
  Commits: [`v2.0.0...v2.1.0`](https://www.github.com/Zushah/Chalkboard/compare/v2.0.0...v2.1.0)
91
- - Added a total of 26 `.isFoo` commands in the `matr`, `tens`, and `vect` categories that check if a matrix, tensor, or vector fulfills a particular property (for example, `matr.isDiagonal` checks if a matrix is a diagonal matrix)
92
- - Added `matr.norm`, `matr.normsq`, and `matr.normalize` to calculate the norm of a matrix or normalize a matrix
93
- - Added `matr.eigenvalue` and `matr.eigenvector` to calculate the dominant eigenvalue and eigenvector of a matrix
94
- - Added `matr.diagonal`, `matr.lowerTriangular`, and `matr.upperTriangular` to initialize a diagonal or triangular matrix
95
- - Added `matr.lowerBinomial`, `matr.symmetricBinomial`, `matr.upperBinomial`, `matr.lowerShift`, and `matr.upperShift` to replace the removed `matr.binomial` and `matr.shift` commands
96
- - Added `matr.perm` to calculate the permanent of a matrix
97
- - Added `comp.toMatrix` and `quat.toMatrix` to convert a complex number or a quaternion to a matrix
98
- - Added `comp.argBetween` to calculate the argument between two complex numbers
99
- - Added `numb.isApproxEqual` to check if two numbers are approximately equal
100
- - Added `numb.mod` to calculate the mathematically-correct modulo (instead of the symmetric modulo which is what the `%` operator does)
101
- - Added `numb.roundTo` to round a number to the nearest inputted positional index (or place value)
102
- - Removed `matr.binomial` and `matr.shift`
103
- - Changed nearly all of the `matr` commands to work significantly faster for 2x2, 3x3, and 4x4 matrices (for example, multiplications are about 67% faster, inversions are about 85% faster, and determinants are about 95% faster) when compared with previous versions of Chalkboard
104
- - Changed `matr.adjugate`, `matr.cofactor`, `matr.push`, `matr.pull`, and `matr.toVector` to use a zero-based index instead of a one-based index
105
- - Changed `matr.concat`, `matr.push`, `matr.pull`, `matr.toVector`, and `vect.toMatrix` to use an `axis` parameter instead of a `type` parameter
106
- - Changed `matr.push`, `matr.pull`, and `matr.toVector` to have their `rowORcol` parameter be renamed as `index`
107
- - Changed `calc.fds` and `calc.fnds` to work with the changes in `matr.toVector`
108
- - Changed `matr.reduce` to be renamed as `matr.Gaussian`
109
- - Changed nearly all of the `vect` commands to use the new `vect.isDimensionOf` command instead of a ridiculous amount of `typeof` operators
110
- - Changed `tens.rank` to use the length of `tens.size` instead of doing its own calculation
111
- - Changed `tens.empty`, `tens.fill`, `tens.random`, and `tens.resize` to use a ternary operator instead of an `if` statement to check whether a sequence of arguments or an array is inputted into their `size` parameters
112
- - Changed `numb.Bernoullian` to not have an unnecessary `if` statement for its optional parameter
132
+ - Added a total of 26 `.isFoo` commands in the `matr`, `tens`, and `vect` categories that check if a matrix, tensor, or vector fulfills a particular property (for example, `matr.isDiagonal` checks if a matrix is a diagonal matrix).
133
+ - Added `matr.norm`, `matr.normsq`, and `matr.normalize` to calculate the norm of a matrix or normalize a matrix.
134
+ - Added `matr.eigenvalue` and `matr.eigenvector` to calculate the dominant eigenvalue and eigenvector of a matrix.
135
+ - Added `matr.diagonal`, `matr.lowerTriangular`, and `matr.upperTriangular` to initialize a diagonal or triangular matrix.
136
+ - Added `matr.lowerBinomial`, `matr.symmetricBinomial`, `matr.upperBinomial`, `matr.lowerShift`, and `matr.upperShift` to replace the removed `matr.binomial` and `matr.shift` commands.
137
+ - Added `matr.perm` to calculate the permanent of a matrix.
138
+ - Added `comp.toMatrix` and `quat.toMatrix` to convert a complex number or a quaternion to a matrix.
139
+ - Added `comp.argBetween` to calculate the argument between two complex numbers.
140
+ - Added `numb.isApproxEqual` to check if two numbers are approximately equal.
141
+ - Added `numb.mod` to calculate the mathematically-correct modulo (instead of the symmetric modulo which is what the `%` operator does).
142
+ - Added `numb.roundTo` to round a number to the nearest inputted positional index (or place value).
143
+ - Removed `matr.binomial` and `matr.shift`.
144
+ - Changed nearly all of the `matr` commands to work significantly faster for 2x2, 3x3, and 4x4 matrices (for example, multiplications are about 67% faster, inversions are about 85% faster, and determinants are about 95% faster) when compared with previous versions of Chalkboard.
145
+ - Changed `matr.adjugate`, `matr.cofactor`, `matr.push`, `matr.pull`, and `matr.toVector` to use a zero-based index instead of a one-based index.
146
+ - Changed `matr.concat`, `matr.push`, `matr.pull`, `matr.toVector`, and `vect.toMatrix` to use an `axis` parameter instead of a `type` parameter.
147
+ - Changed `matr.push`, `matr.pull`, and `matr.toVector` to have their `rowORcol` parameter be renamed as `index`.
148
+ - Changed `calc.fds` and `calc.fnds` to work with the changes in `matr.toVector`.
149
+ - Changed `matr.reduce` to be renamed as `matr.Gaussian`.
150
+ - Changed nearly all of the `vect` commands to use the new `vect.isDimensionOf` command instead of a ridiculous amount of `typeof` operators.
151
+ - Changed `tens.rank` to use the length of `tens.size` instead of doing its own calculation.
152
+ - Changed `tens.empty`, `tens.fill`, `tens.random`, and `tens.resize` to use a ternary operator instead of an `if` statement to check whether a sequence of arguments or an array is inputted into their `size` parameters.
153
+ - Changed `numb.Bernoullian` to not have an unnecessary `if` statement for its optional parameter.
113
154
 
114
155
  ## [v2.0.0 al-Khwarizmi](https://www.github.com/Zushah/Chalkboard/releases/tag/v2.0.0) - 01/08/2024
115
- The tenth release of the Chalkboard library.
156
+ The tenth release of Chalkboard.
116
157
  Commits: [`v1.7.0...v2.0.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.7.0...v2.0.0)
117
- - Rewrote everything in TypeScript, applied ESLint and Prettier, and remade the website with TypeDoc
118
- - Added `APPLY` which applies a callback function in an element-wise manner on a complex number, matrix, quaternion, tensor, or vector
119
- - Added the `vect` category which merges the `vec2`, `vec3`, and `vec4` categories into one
120
- - Added `VERSION` and `VERSIONALIAS` which return the installed version and its alias, respectively
121
- - Removed the `vec2`, `vec3`, and `vec4` categories
122
- - Removed `quat.fromVector` because it's been replaced by `vect.toQuaternion`
123
- - Removed `plot.vec3` because it was weird
124
- - Changed everything due to the TypeScript rewrite and the vector categories merge
125
- - Changed all of the `.new` commands to be renamed as `.init`
126
- - Changed `real.function` to be renamed as `real.define`, `comp.function` to be renamed as `comp.define`, and `plot.function` to be renamed as `plot.definition`
127
- - Changed `LOGO` to draw the logo as a circle instead of a square
128
- - Changed `matr.mulvec` to be renamed as `matr.mulVector`
129
- - Fixed `matr.mulVector` which didn't work when the rows of the matrix equaled the dimension of the vector
130
- - Discontinued the Processsing.js edition of the library, meaning it will no longer be updated and it will only be available on the Khan Academy release (it will no longer be available on GitHub)
158
+ - Rewrote everything in TypeScript, applied ESLint and Prettier, and remade the website with TypeDoc.
159
+ - Added `APPLY` which applies a callback function in an element-wise manner on a complex number, matrix, quaternion, tensor, or vector.
160
+ - Added the `vect` category which merges the `vec2`, `vec3`, and `vec4` categories into one.
161
+ - Added `VERSION` and `VERSIONALIAS` which return the installed version and its alias, respectively.
162
+ - Removed the `vec2`, `vec3`, and `vec4` categories.
163
+ - Removed `quat.fromVector` because it's been replaced by `vect.toQuaternion`.
164
+ - Removed `plot.vec3` because it was weird.
165
+ - Changed everything due to the TypeScript rewrite and the vector categories merge.
166
+ - Changed all of the `.new` commands to be renamed as `.init`.
167
+ - Changed `real.function` to be renamed as `real.define`, `comp.function` to be renamed as `comp.define`, and `plot.function` to be renamed as `plot.definition`.
168
+ - Changed `LOGO` to draw the logo as a circle instead of a square.
169
+ - Changed `matr.mulvec` to be renamed as `matr.mulVector`.
170
+ - Fixed `matr.mulVector` which didn't work when the rows of the matrix equaled the dimension of the vector.
171
+ - Discontinued the Processsing.js edition of the library, meaning it will no longer be updated and it will only be available on the Khan Academy release (it will no longer be available on GitHub).
131
172
 
132
173
  ## [v1.7.0 Descartes](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.7.0) - 01/01/2024
133
- The ninth release of the Chalkboard library.
174
+ The ninth release of Chalkboard.
134
175
  Commits: [`v1.6.0...v1.7.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.6.0...v1.7.0)
135
- - Added tensors (multidimensional multidimensional matrices, or n-dimensional arrays) with 29 commands in the new `tens` category
136
- - Added 12 more matrix commands: copying, resizing, five new primitive matrices (exchange, shift, binomial, Hilbert, Lehmer), concatenating, multiplying with vectors, Kronecker sum, Kronecker product, and converting to a tensor
137
- - Added `.copy` commands for complex numbers, quaternions, and vectors
138
- - Added `stat.toTensor` to convert an array to a tensor
139
- - Added quaternion division with `quat.div`
140
- - Added `PARSEPREFIX` as a Chalkboard global which makes it easier to add custom functions to Chalkboard functions than the `init` parameter in `real.parse` and `comp.parse`
141
- - Added `CONTEXT` as a Chalkboard global to replace the removed `plot.CONTEXT`
142
- - Removed `plot.CONTEXT`
143
- - Changed all of the `plot` commands, `LOGO`, and `geom.line3D` to use the new `CONTEXT` constant instead of `plot.CONTEXT`
144
- - Changed all of the `plot` commands to use `config.x` and `config.y` to determine their position on the canvas instead of `config.origin`
145
- - Changed all of the `plot` commands' initialization of the `config` parameter to be two less lines long
146
- - Changed `matr.plot` to have a `config.domain` option
147
- - Changed `real.parse` and `comp.parse` to no longer have an `init` parameter
148
- - Changed many of the `comp` and `quat` commands to accept regular numbers (not just complex numbers and quaternions) as inputs
149
- - Changed `comp.new` and `quat.new` to be able to accept only one argument as the real part and fill the imaginary part(s) with zeroes
150
- - Changed `stat.eq`, `stat.ineq`, `stat.lt`, and `stat.gt` to use `Array.isArray` instead of `.constructor === Array`
151
- - Changed `stat.toVector` to have an `index` parameter to change the index of the array to start at when defining a vector
152
- - Changed all of the integration commands (`calc.fxdx`, `calc.fxydxdy`, `calc.fds`, `calc.frds`, `calc.fnds`, and `calc.fzdz`) to use `inf` and `sup` for the bounds in their parameters instead of `a`, `b`, `c`, and `d`
153
- - Changed `matr.new` to accept one array of arrays (already-constructed matrix) as an input instead of only multiple arrays (to use as rows to construct a matrix)
154
- - Changed the order of `matr.random`'s parameters
155
- - Changed `matr.fill`, `matr.empty`, and `matr.random` to make square matrices with the size inputted into the `rows` parameter if nothing is inputted into the `cols` parameter
156
- - Changed `matr.LUdecomp` and `matr.QRdecomp` to use `matr.fill` instead of `matr.zero` composed with `matr.empty`
157
- - Fixed `plot.matr` which hadn't been working for who knows how long because of a critical misspelling (`vec2.plot` instead of `plot.vec2`)
158
- - Fixed (rewrote) `numb.binomial` which kept giving "callstack size exceeded" errors for some reason
159
- - Fixed (rewrote) `matr.QRdecomp` thanks to [@JentGent](https://www.github.com/JentGent)'s [implementation](https://www.github.com/JentGent/linalg/blob/main/linalg.js#L519)
176
+ - Added tensors (multidimensional multidimensional matrices, or n-dimensional arrays) with 29 commands in the new `tens` category.
177
+ - Added 12 more matrix commands: copying, resizing, five new primitive matrices (exchange, shift, binomial, Hilbert, Lehmer), concatenating, multiplying with vectors, Kronecker sum, Kronecker product, and converting to a tensor.
178
+ - Added `.copy` commands for complex numbers, quaternions, and vectors.
179
+ - Added `stat.toTensor` to convert an array to a tensor.
180
+ - Added quaternion division with `quat.div`.
181
+ - Added `PARSEPREFIX` as a Chalkboard global which makes it easier to add custom functions to Chalkboard functions than the `init` parameter in `real.parse` and `comp.parse`.
182
+ - Added `CONTEXT` as a Chalkboard global to replace the removed `plot.CONTEXT`.
183
+ - Removed `plot.CONTEXT`.
184
+ - Changed all of the `plot` commands, `LOGO`, and `geom.line3D` to use the new `CONTEXT` constant instead of `plot.CONTEXT`.
185
+ - Changed all of the `plot` commands to use `config.x` and `config.y` to determine their position on the canvas instead of `config.origin`.
186
+ - Changed all of the `plot` commands' initialization of the `config` parameter to be two less lines long.
187
+ - Changed `matr.plot` to have a `config.domain` option.
188
+ - Changed `real.parse` and `comp.parse` to no longer have an `init` parameter.
189
+ - Changed many of the `comp` and `quat` commands to accept regular numbers (not just complex numbers and quaternions) as inputs.
190
+ - Changed `comp.new` and `quat.new` to be able to accept only one argument as the real part and fill the imaginary part(s) with zeroes.
191
+ - Changed `stat.eq`, `stat.ineq`, `stat.lt`, and `stat.gt` to use `Array.isArray` instead of `.constructor === Array`.
192
+ - Changed `stat.toVector` to have an `index` parameter to change the index of the array to start at when defining a vector.
193
+ - Changed all of the integration commands (`calc.fxdx`, `calc.fxydxdy`, `calc.fds`, `calc.frds`, `calc.fnds`, and `calc.fzdz`) to use `inf` and `sup` for the bounds in their parameters instead of `a`, `b`, `c`, and `d`.
194
+ - Changed `matr.new` to accept one array of arrays (already-constructed matrix) as an input instead of only multiple arrays (to use as rows to construct a matrix).
195
+ - Changed the order of `matr.random`'s parameters.
196
+ - Changed `matr.fill`, `matr.empty`, and `matr.random` to make square matrices with the size inputted into the `rows` parameter if nothing is inputted into the `cols` parameter.
197
+ - Changed `matr.LUdecomp` and `matr.QRdecomp` to use `matr.fill` instead of `matr.zero` composed with `matr.empty`.
198
+ - Fixed `plot.matr` which hadn't been working for who knows how long because of a critical misspelling (`vec2.plot` instead of `plot.vec2`).
199
+ - Fixed (rewrote) `numb.binomial` which kept giving "callstack size exceeded" errors for some reason.
200
+ - Fixed (rewrote) `matr.QRdecomp` thanks to [@JentGent](https://www.github.com/JentGent)'s [implementation](https://www.github.com/JentGent/linalg/blob/main/linalg.js#L519).
160
201
 
161
202
  ## [v1.6.0 Fermat](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.6.0) - 12/25/2023
162
- The eighth release of the Chalkboard library.
203
+ The eighth release of Chalkboard.
163
204
  Commits: [`v1.5.0...v1.6.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.5.0...v1.6.0)
164
- - Added a new type of function: the inverse function (`type` of `"inve"`)
165
- - Added `stat.regression` to calculate different types of statistical regression models (linear, polynomial, exponential, etc.)
166
- - Added `plot.CONTEXT` which determines the `CanvasRenderingContext2D` to use for plots
167
- - Added LU decomposition and QR decomposition for matrices with `matr.LUdecomp` and `matr.QRdecomp`
168
- - Added `matr.push` and `matr.pull` to add or remove rows or columns from matrices
169
- - Added `matr.fill` to create a new matrix with a single value for all of the elements
170
- - Added more commands for generating random numbers: `numb.exponential`, `numb.Bernoullian`, and `numb.Poissonian`
171
- - Added `numb.Goldbach` to return an even number as a sum of two prime numbers
172
- - Added `numb.Euler` to calculate Euler's totient function on a number
173
- - Added `stat.shuffle` to randomly shuffle an array and `stat.subsets` to return all of the possible subsets of an array
174
- - Changed all of the `plot` commands to use an optional `config` object parameter to configure their customizations (size, color, domain, etc.) instead of separate parameters for each of them
175
- - Changed `real.function`, `real.val`, `calc.dfdx`, `calc.d2fdx2`, and `calc.fxdx` to accomodate the new `"inve"` function type
176
- - Changed all of the `plot` commands, the `LOGO` command, and the `geom.line3D` command to use the new `plot.CONTEXT` value instead of `ctx` and `canvas`
177
- - Changed `matr.empty` and `matr.random` to use `rows` and `cols` as parameters for the size of the matrix instead of `dimension`, and renamed the `dimension` parameter for `matr.identity` to `size`
178
- - Changed `real.nrt` to be renamed as `real.root` (so `stat.mean` had to be changed since it was used there), and changed the `n` parameter in `comp.root` to be renamed as `index`
179
- - Changed `numb.random` to use its default values only if the parameters are undefined instead of if the parameters are falsy
180
- - Changed `matr.new` to use its `matrix` parameter instead of leaving it as declared but unused
181
- - Changed `comp.d2fdz2` which was incorrectly named as `comp.df2dz2`
182
- - Fixed (rewrote) `numb.Gaussian` which basically didn't work at all
183
- - Fixed `real.pow` which returned `NaN` for 0 raised to the power of 0
184
- - Fixed the default domain for `plot.function` which was incorrectly using the domain for domain colorings instead of normal graphs
205
+ - Added a new type of function: the inverse function (`type` of `"inve"`).
206
+ - Added `stat.regression` to calculate different types of statistical regression models (linear, polynomial, exponential, etc.).
207
+ - Added `plot.CONTEXT` which determines the `CanvasRenderingContext2D` to use for plots.
208
+ - Added LU decomposition and QR decomposition for matrices with `matr.LUdecomp` and `matr.QRdecomp`.
209
+ - Added `matr.push` and `matr.pull` to add or remove rows or columns from matrices.
210
+ - Added `matr.fill` to create a new matrix with a single value for all of the elements.
211
+ - Added more commands for generating random numbers: `numb.exponential`, `numb.Bernoullian`, and `numb.Poissonian`.
212
+ - Added `numb.Goldbach` to return an even number as a sum of two prime numbers.
213
+ - Added `numb.Euler` to calculate Euler's totient function on a number.
214
+ - Added `stat.shuffle` to randomly shuffle an array and `stat.subsets` to return all of the possible subsets of an array.
215
+ - Changed all of the `plot` commands to use an optional `config` object parameter to configure their customizations (size, color, domain, etc.) instead of separate parameters for each of them.
216
+ - Changed `real.function`, `real.val`, `calc.dfdx`, `calc.d2fdx2`, and `calc.fxdx` to accomodate the new `"inve"` function type.
217
+ - Changed all of the `plot` commands, the `LOGO` command, and the `geom.line3D` command to use the new `plot.CONTEXT` value instead of `ctx` and `canvas`.
218
+ - Changed `matr.empty` and `matr.random` to use `rows` and `cols` as parameters for the size of the matrix instead of `dimension`, and renamed the `dimension` parameter for `matr.identity` to `size`.
219
+ - Changed `real.nrt` to be renamed as `real.root` (so `stat.mean` had to be changed since it was used there), and changed the `n` parameter in `comp.root` to be renamed as `index`.
220
+ - Changed `numb.random` to use its default values only if the parameters are undefined instead of if the parameters are falsy.
221
+ - Changed `matr.new` to use its `matrix` parameter instead of leaving it as declared but unused.
222
+ - Changed `comp.d2fdz2` which was incorrectly named as `comp.df2dz2`.
223
+ - Fixed (rewrote) `numb.Gaussian` which basically didn't work at all.
224
+ - Fixed `real.pow` which returned `NaN` for 0 raised to the power of 0.
225
+ - Fixed the default domain for `plot.function` which was incorrectly using the domain for domain colorings instead of normal graphs.
185
226
 
186
227
  ## [v1.5.0 Cauchy](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.5.0) - 12/18/2023
187
- The seventh release of the Chalkboard library.
228
+ The seventh release of Chalkboard.
188
229
  Commits: [`v1.4.0...v1.5.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.4.0...v1.5.0)
189
- - Added Chalkboard as an npm package, so now it can be used on the server-side just like the client side
190
- - Added `comp.function`, `comp.parse`, and `comp.val` to define, parse, and evaluate complex functions
191
- - Added `calc.dfdz`, `calc.d2fdz2`, and `calc.fzdz` to calculate the first derivatives, second derivatives, and antiderivatives of complex functions
192
- - Added approximations of functions using Taylor series with `calc.Taylor` and `plot.Taylor`
193
- - Added `comp.pow` to calculate the exponentiation of a complex number
194
- - Added `comp.root` to calculate the roots of a complex number
195
- - Added `comp.invert` (calculates the multiplicative inverse of a complex number) to replace the functionality of `comp.reciprocate`
196
- - Removed `stat.gte` and `stat.lte` and respectively incorporated their functionalities into `stat.gt` and `stat.lt`
197
- - Changed `comp.reciprocate` to return the reciprocals of the components of a complex number instead of returning the multiplicative inverse of a complex number
198
- - Changed `stat.gt` and `stat.lt` to have `includeEnd` parameters which determines whether the conditional they check for is "greater/less than" (input false) or "greater/less than or equal to" (input true)
199
- - Changed `plot.barplot` and `plot.lineplot` to use the new functionalities of `stat.gt` and `stat.lt` instead of the removed `stat.gte` and `stat.lte`
200
- - Changed `comp.Re` and `comp.Im` to respectively return the real and imaginary components of complex functions, too, instead of only the real and imaginary components of complex numbers
201
- - Changed `stat.toObject` to return an object with its properties named based on the array's index instead of the array's element
202
- - Changed `trig.arctan2` to use `Math.atan` instead of `trig.arctan` to be faster
203
- - Changed the name of `calc.frdt` to `calc.frds`
204
- - Changed `plot.function` to accept complex functions as inputs to plot their domain colorings
205
- - Fixed the error messages in `calc.dfdrt` which were misspelled
206
- - Fixed `plot.field` to include the upper bounds in its domain
230
+ - Added Chalkboard as an npm package, so now it can be used on the server-side just like the client side.
231
+ - Added `comp.function`, `comp.parse`, and `comp.val` to define, parse, and evaluate complex functions.
232
+ - Added `calc.dfdz`, `calc.d2fdz2`, and `calc.fzdz` to calculate the first derivatives, second derivatives, and antiderivatives of complex functions.
233
+ - Added approximations of functions using Taylor series with `calc.Taylor` and `plot.Taylor`.
234
+ - Added `comp.pow` to calculate the exponentiation of a complex number.
235
+ - Added `comp.root` to calculate the roots of a complex number.
236
+ - Added `comp.invert` (calculates the multiplicative inverse of a complex number) to replace the functionality of `comp.reciprocate`.
237
+ - Removed `stat.gte` and `stat.lte` and respectively incorporated their functionalities into `stat.gt` and `stat.lt`.
238
+ - Changed `comp.reciprocate` to return the reciprocals of the components of a complex number instead of returning the multiplicative inverse of a complex number.
239
+ - Changed `stat.gt` and `stat.lt` to have `includeEnd` parameters which determines whether the conditional they check for is "greater/less than" (input false) or "greater/less than or equal to" (input true).
240
+ - Changed `plot.barplot` and `plot.lineplot` to use the new functionalities of `stat.gt` and `stat.lt` instead of the removed `stat.gte` and `stat.lte`.
241
+ - Changed `comp.Re` and `comp.Im` to respectively return the real and imaginary components of complex functions, too, instead of only the real and imaginary components of complex numbers.
242
+ - Changed `stat.toObject` to return an object with its properties named based on the array's index instead of the array's element.
243
+ - Changed `trig.arctan2` to use `Math.atan` instead of `trig.arctan` to be faster.
244
+ - Changed the name of `calc.frdt` to `calc.frds`.
245
+ - Changed `plot.function` to accept complex functions as inputs to plot their domain colorings.
246
+ - Fixed the error messages in `calc.dfdrt` which were misspelled.
247
+ - Fixed `plot.field` to include the upper bounds in its domain.
207
248
 
208
249
  ## [v1.4.0 Herschel](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.4.0) - 12/11/2023
209
- The sixth release of the Chalkboard library.
250
+ The sixth release of Chalkboard.
210
251
  Commits: [`v1.3.1...v1.4.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.3.1...v1.4.0)
211
- - Added many new commands for arrays: creating an array of random numbers, calculating different types of the norm (and the squared norm) of an array, calculating the normalized array, calculating the array that has the numbers that are equal to, greater than (or equal to), less than (or equal to), or some compound inequality of another number or array, calculating the skewness and kurtosis of an array, calculating the different quartiles of an array, and converting an array to a vector, matrix, object, string, or printing it in the console
212
- - Added `plot.barplot`, `plot.lineplot`, and `plot.scatterplot` to plot arrays of data
213
- - Added `.constrain` commands for numbers, arrays, complex numbers, quaternions, vectors, and matrices to constrain their values within a range
214
- - Added `trig.arctan2` to accurately calculate the angle between a vector and the positive x-axis
215
- - Added `numb.sum` and `numb.mul` for the calculation of specified summation and product formulae
216
- - Added `.reflect` and `.refract` commands for vectors to calculate reflection and refraction vectors
217
- - Added `real.pingpong` to calculate the ping-pong function
218
- - Added `geom.mid` to calculate the midpoint between two multidimensional points
219
- - Changed all of the `plot` commands to return an array of data containing all of the ordered pairs of plotted points instead of returning a string with details on what was plotted and how
220
- - Changed `real.parse` to have an optional command to input initializing code before the return function
221
- - Changed `vec2.ang`, `comp.arg`, and `comp.ln` to use `trig.arctan2` instead of `trig.arctan`
222
- - Changed `real.Heaviside`, `real.Dirac`, `real.ramp`, and `real.rect` to have parameters for the `edge` (the starting point) and the `scl` (scalar multiplication) of their respective functions
223
- - Changed `comp.new` and `quat.new` to have a `type` property (like the `.new` commands for vectors) that's always set to `"comp"` and `"quat"`, respectively
224
- - Changed `geom.dist` and `geom.distsq` to be written with loops instead of array methods
225
- - Changed `calc.frdt` to also work for three-dimensional (instead of only two-dimensional) vector fields and parametric curves
226
- - Fixed `calc.dfrdt` which didn't work due to a slight misspelling in an `if()` statement
252
+ - Added many new commands for arrays: creating an array of random numbers, calculating different types of the norm (and the squared norm) of an array, calculating the normalized array, calculating the array that has the numbers that are equal to, greater than (or equal to), less than (or equal to), or some compound inequality of another number or array, calculating the skewness and kurtosis of an array, calculating the different quartiles of an array, and converting an array to a vector, matrix, object, string, or printing it in the console.
253
+ - Added `plot.barplot`, `plot.lineplot`, and `plot.scatterplot` to plot arrays of data.
254
+ - Added `.constrain` commands for numbers, arrays, complex numbers, quaternions, vectors, and matrices to constrain their values within a range.
255
+ - Added `trig.arctan2` to accurately calculate the angle between a vector and the positive x-axis.
256
+ - Added `numb.sum` and `numb.mul` for the calculation of specified summation and product formulae.
257
+ - Added `.reflect` and `.refract` commands for vectors to calculate reflection and refraction vectors.
258
+ - Added `real.pingpong` to calculate the ping-pong function.
259
+ - Added `geom.mid` to calculate the midpoint between two multidimensional points.
260
+ - Changed all of the `plot` commands to return an array of data containing all of the ordered pairs of plotted points instead of returning a string with details on what was plotted and how.
261
+ - Changed `real.parse` to have an optional command to input initializing code before the return function.
262
+ - Changed `vec2.ang`, `comp.arg`, and `comp.ln` to use `trig.arctan2` instead of `trig.arctan`.
263
+ - Changed `real.Heaviside`, `real.Dirac`, `real.ramp`, and `real.rect` to have parameters for the `edge` (the starting point) and the `scl` (scalar multiplication) of their respective functions.
264
+ - Changed `comp.new` and `quat.new` to have a `type` property (like the `.new` commands for vectors) that's always set to `"comp"` and `"quat"`, respectively.
265
+ - Changed `geom.dist` and `geom.distsq` to be written with loops instead of array methods.
266
+ - Changed `calc.frdt` to also work for three-dimensional (instead of only two-dimensional) vector fields and parametric curves.
267
+ - Fixed `calc.dfrdt` which didn't work due to a slight misspelling in an `if()` statement.
227
268
 
228
269
  ## [v1.3.1 Heaviside Patch](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.3.1) - 12/04/2023
229
- The fifth release of the Chalkboard library.
270
+ The fifth release of Chalkboard.
230
271
  Commits: [`v1.3.0...v1.3.1`](https://www.github.com/Zushah/Chalkboard/compare/v1.3.0...v1.3.1)
231
- - Fixed `matr.translator` which was misspelled
232
- - Fixed `matr.rotator` which didn't work for two-dimensional rotations and was also misspelled
233
- - Fixed `calc.grad` which didn't work for vector fields because of another misspelling
272
+ - Fixed `matr.translator` which was misspelled.
273
+ - Fixed `matr.rotator` which didn't work for two-dimensional rotations and was also misspelled.
274
+ - Fixed `calc.grad` which didn't work for vector fields because of another misspelling.
234
275
 
235
276
  ## [v1.3.0 Heaviside](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.3.0) - 12/04/2023
236
- The fourth release of the Chalkboard library.
277
+ The fourth release of Chalkboard.
237
278
  Commits: [`v1.2.0...v1.3.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.2.0...v1.3.0)
238
- - Added multivariable calculus, with commands for directional differentiation, multivariable chain rule, gradient (partial differentiation), double gradient (second-order partial differentiation), divergence, curl, double integration, line/surface integration, arc length, surface area, and curvature
239
- - Added second-order differentiation with `calc.d2fdx2`, unit tangent vectors for parametric curves with `calc.tangent`, unit normal vectors with `calc.normal`, and unit binormal vectors with `calc.binormal`
240
- - Functions that previously had the `type` property of `"para"` should now be changed to `"curv"`
241
- - Added `.field` and `.fromField` commmands for vectors which define vector fields and evaluate them at particular vectors, respectively
242
- - Added `plot.field` and `plot.d2fdx2` to plot vector fields and second-order derivatives, respectively
243
- - Added `.proj` and `.oproj` commands for vectors which calculate the vector projections and rejections, respectively
244
- - Added commands for vectors to convert between coordinate systems (`vec2.fromPolar`, `vec3.toSpherical`, etc)
245
- - Changed `matr.toVector` to have another optional parameter for the row/column of a matrix to define a vector from
246
- - Added `comp.scl` and `quat.scl`, and changed all of the `.magset` commands to work using their respective `.scl` commands
247
- - Added a `type` parameter to `stat.mean` to enable the calculation of different types of means: arithmetic, geometric, and harmonic
248
- - Removed `geom.dist2D` and `geom.dist3D` and replaced them with `geom.dist` and `geom.distsq` which can calculate the distance between any-dimensional points
249
- - Removed `vec2.rotate2D`, `vec3.rotatex`, `vec3.rotatey`, and `vec3.rotatez` because all vector rotations can be handled with rotation matrices
250
- - Removed `matr.rotater2D` and `matr.rotater3D` and replaced them with `matr.rotater` which can do both 2D and 3D rotations depending on the number of parameters inputted (one parameter required for 2D rotations, three parameters required for 3D rotations)
251
- - Removed `real.sqrt` from returning a complex number when the input is negative because it would sometimes cause bugs
252
- - Changed `real.function`, `real.parse`, `calc.dfdx`, and `calc.fxdx` to work for the new `"mult"` function type for multivariable functions, the new `"curv"` function type for parametric curves, and the new `"surf"` function type for parametric surfaces
253
- - Changed all `plot` commands so they can now optionally have their opacity changed with the `rgba` parameter (which previously used to only be `rgb`)
254
- - Changed `numb.Gaussian` to use `for(;;)` instead of `while(typeof x === "undefined")`
255
- - Changed the name of `calc.average` to `calc.mean`
279
+ - Added multivariable calculus, with commands for directional differentiation, multivariable chain rule, gradient (partial differentiation), double gradient (second-order partial differentiation), divergence, curl, double integration, line/surface integration, arc length, surface area, and curvature.
280
+ - Added second-order differentiation with `calc.d2fdx2`, unit tangent vectors for parametric curves with `calc.tangent`, unit normal vectors with `calc.normal`, and unit binormal vectors with `calc.binormal`.
281
+ - Functions that previously had the `type` property of `"para"` should now be changed to `"curv"`.
282
+ - Added `.field` and `.fromField` commmands for vectors which define vector fields and evaluate them at particular vectors, respectively.
283
+ - Added `plot.field` and `plot.d2fdx2` to plot vector fields and second-order derivatives, respectively.
284
+ - Added `.proj` and `.oproj` commands for vectors which calculate the vector projections and rejections, respectively.
285
+ - Added commands for vectors to convert between coordinate systems (`vec2.fromPolar`, `vec3.toSpherical`, etc).
286
+ - Changed `matr.toVector` to have another optional parameter for the row/column of a matrix to define a vector from.
287
+ - Added `comp.scl` and `quat.scl`, and changed all of the `.magset` commands to work using their respective `.scl` commands.
288
+ - Added a `type` parameter to `stat.mean` to enable the calculation of different types of means: arithmetic, geometric, and harmonic.
289
+ - Removed `geom.dist2D` and `geom.dist3D` and replaced them with `geom.dist` and `geom.distsq` which can calculate the distance between any-dimensional points.
290
+ - Removed `vec2.rotate2D`, `vec3.rotatex`, `vec3.rotatey`, and `vec3.rotatez` because all vector rotations can be handled with rotation matrices.
291
+ - Removed `matr.rotater2D` and `matr.rotater3D` and replaced them with `matr.rotater` which can do both 2D and 3D rotations depending on the number of parameters inputted (one parameter required for 2D rotations, three parameters required for 3D rotations).
292
+ - Removed `real.sqrt` from returning a complex number when the input is negative because it would sometimes cause bugs.
293
+ - Changed `real.function`, `real.parse`, `calc.dfdx`, and `calc.fxdx` to work for the new `"mult"` function type for multivariable functions, the new `"curv"` function type for parametric curves, and the new `"surf"` function type for parametric surfaces.
294
+ - Changed all `plot` commands so they can now optionally have their opacity changed with the `rgba` parameter (which previously used to only be `rgb`).
295
+ - Changed `numb.Gaussian` to use `for(;;)` instead of `while(typeof x === "undefined")`.
296
+ - Changed the name of `calc.average` to `calc.mean`.
256
297
  - Fixed `matr.invert` returning `NaN` values when `0` is on the diagonal of a matrix, thanks to [@bhavjitChauhan](https://www.github.com/bhavjitChauhan).
257
298
 
258
299
  ## [v1.2.0 Cayley](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.2.0) - 11/27/2023
259
- The third release of the Chalkboard library.
300
+ The third release of Chalkboard.
260
301
  Commits: [`v1.1.0...v1.2.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.1.0...v1.2.0)
261
- - Added new matrix commands for the trace of a matrix, the row space of a matrix, the column space, and null space, the exponentation, the row Echelon form (Gaussian elimination), solving systems of linear equations, and conversion of a matrix to an object
262
- - Added `plot.comp`, `plot.vec2`, `plot.vec3`, and `plot.matr` to replace `comp.display`, `vec2.display`, `vec3.display`, and `matr.display`
263
- - Added `numb.binomial` to calculate binomial coefficients
264
- - Removed `vec2.fromNumber`, `vec3.angcos`, `vec4.angcos`, and `matr.dimension`
265
- - Removed all of the `.addScl` (scalar addition) commands for vectors
266
- - Changed all of the `matr` commands to work for matrices of any and all dimensions (previously there was a four-by-four dimension limit)
267
- - Changed all of the `.mulScl` (scalar multiplication) commands for vectors and matrices to be renamed as `.scl`
268
- - Changed `numb.random` to have both of its parameters be optional (no parameters inputted returns a random number between 0 and 1)
269
- - Changed `numb.Gaussian` to use `while(typeof x === "undefined")` instead of `while(true)`
270
- - Fixed the `vec2.magset` and `vec3.magset` commands which would return vectors in the wrong dimensions
302
+ - Added new matrix commands for the trace of a matrix, the row space of a matrix, the column space, and null space, the exponentation, the row Echelon form (Gaussian elimination), solving systems of linear equations, and conversion of a matrix to an object.
303
+ - Added `plot.comp`, `plot.vec2`, `plot.vec3`, and `plot.matr` to replace `comp.display`, `vec2.display`, `vec3.display`, and `matr.display`.
304
+ - Added `numb.binomial` to calculate binomial coefficients.
305
+ - Removed `vec2.fromNumber`, `vec3.angcos`, `vec4.angcos`, and `matr.dimension`.
306
+ - Removed all of the `.addScl` (scalar addition) commands for vectors.
307
+ - Changed all of the `matr` commands to work for matrices of any and all dimensions (previously there was a four-by-four dimension limit).
308
+ - Changed all of the `.mulScl` (scalar multiplication) commands for vectors and matrices to be renamed as `.scl`.
309
+ - Changed `numb.random` to have both of its parameters be optional (no parameters inputted returns a random number between 0 and 1).
310
+ - Changed `numb.Gaussian` to use `while(typeof x === "undefined")` instead of `while(true)`.
311
+ - Fixed the `vec2.magset` and `vec3.magset` commands which would return vectors in the wrong dimensions.
271
312
 
272
313
  ## [v1.1.0 Riemann](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.1.0) - 11/13/2023
273
- The second release of the Chalkboard library.
314
+ The second release of Chalkboard.
274
315
  Commits: [`v1.0.0...v1.1.0`](https://www.github.com/Zushah/Chalkboard/compare/v1.0.0...v1.1.0)
275
- - Added `numb.prime` to calculate the nth prime number, `numb.nextPrime` to calculate the next prime number, and `numb.primeGap` to calculate the prime gap with an interval
276
- - Added `numb.factors` to calculate the prime factorization of a number and `numb.divisors` to calculate the divisors of a number
277
- - Added `numb.Gaussian` to calculate a random number based on a Gaussian distribution
278
- - Added `.convolution`, `.correlation`, and `.autocorrelation` commands in the `stat`, `calc`, and `plot` categories to calculate and plot the discrete and continuous convolutions, cross-correlations, and autocorrelations of arrays and functions, respectively
279
- - Added `stat.error` to calculate the standard error of an array
280
- - Added `matr.cofactor` and `matr.adjugate` to calculate the cofactor and adjugate matrices of a matrix
281
- - Removed `calc.rOdO` because polar differentation can now be done with `calc.fxdx` instead
282
- - Changed `calc.fxdx` to work using Simpson's rule instead of the trapezoidal Riemann sum
283
- - Changed `real.val`, `calc.dfdx`, and `calc.fxdx` to work for all Chalkboard functions regardless of their `type` (before they only worked for `"expl"` functions)
284
- - Changed `matr.det` and `matr.transpose` to work for all matrices regardless of their dimension
285
- - Changed `numb.Fibonacci` to have a cache so it works faster
286
- - Changed the order of the lower and upper values in the `stat.confidenceInterval` return array
287
- - Changed `plot.function` and `numb.factorial` to be more written slightly more efficiently
288
- - Changed the name of the `position` parameter in `stat.Gaussian` to `mean`
289
- - Changed the name of `numb.prime` (the command that checks if a number is prime) to `numb.isPrime`, so parts of `numb.primeArr` and `prime.compositeArr` had to be changed, too
316
+ - Added `numb.prime` to calculate the nth prime number, `numb.nextPrime` to calculate the next prime number, and `numb.primeGap` to calculate the prime gap with an interval.
317
+ - Added `numb.factors` to calculate the prime factorization of a number and `numb.divisors` to calculate the divisors of a number.
318
+ - Added `numb.Gaussian` to calculate a random number based on a Gaussian distribution.
319
+ - Added `.convolution`, `.correlation`, and `.autocorrelation` commands in the `stat`, `calc`, and `plot` categories to calculate and plot the discrete and continuous convolutions, cross-correlations, and autocorrelations of arrays and functions, respectively.
320
+ - Added `stat.error` to calculate the standard error of an array.
321
+ - Added `matr.cofactor` and `matr.adjugate` to calculate the cofactor and adjugate matrices of a matrix.
322
+ - Removed `calc.rOdO` because polar differentation can now be done with `calc.fxdx` instead.
323
+ - Changed `calc.fxdx` to work using Simpson's rule instead of the trapezoidal Riemann sum.
324
+ - Changed `real.val`, `calc.dfdx`, and `calc.fxdx` to work for all Chalkboard functions regardless of their `type` (before they only worked for `"expl"` functions).
325
+ - Changed `matr.det` and `matr.transpose` to work for all matrices regardless of their dimension.
326
+ - Changed `numb.Fibonacci` to have a cache so it works faster.
327
+ - Changed the order of the lower and upper values in the `stat.confidenceInterval` return array.
328
+ - Changed `plot.function` and `numb.factorial` to be more written slightly more efficiently.
329
+ - Changed the name of the `position` parameter in `stat.Gaussian` to `mean`.
330
+ - Changed the name of `numb.prime` (the command that checks if a number is prime) to `numb.isPrime`, so parts of `numb.primeArr` and `prime.compositeArr` had to be changed, too.
290
331
 
291
332
  ## [v1.0.0 Euclid](https://www.github.com/Zushah/Chalkboard/releases/tag/v1.0.0) - 11/06/2023
292
- The first release of the Chalkboard library.
333
+ The first release of Chalkboard.
293
334
  Commits: [`v1.0.0...main`](https://www.github.com/Zushah/Chalkboard/compare/v1.0.0...main)