{
"@context": "http://schema.org",
"@type": "SoftwareSourceCode",
"@id": "https://doi.org/10.5281/zenodo.596059",
"identifier": {
"@type": "PropertyValue",
"propertyID": "URL",
"value": "https://zenodo.org/record/7820401"
},
"url": "https://zenodo.org/record/596059",
"name": "diofant/diofant: Diofant 0.14.0",
"author": [
{
"name": "Sergey B Kirpichev",
"givenName": "Sergey B",
"familyName": "Kirpichev",
"@type": "Person"
},
{
"name": "Christopher Smith",
"givenName": "Christopher",
"familyName": "Smith",
"@type": "Person"
},
{
"name": "Aaron Meurer",
"givenName": "Aaron",
"familyName": "Meurer",
"affiliation": {
"@type": "Organization",
"name": "@Quansight"
},
"@type": "Person"
},
{
"name": "Mateusz Paprocki",
"givenName": "Mateusz",
"familyName": "Paprocki",
"affiliation": {
"@type": "Organization",
"name": "Anaconda, Inc."
},
"@type": "Person"
},
{
"name": "Ondřej Čertík",
"affiliation": {
"@type": "Organization",
"name": "GSI Technology"
}
},
{
"name": "Julien Rioux",
"givenName": "Julien",
"familyName": "Rioux",
"@type": "Person"
},
{
"name": "Ronan Lamy",
"givenName": "Ronan",
"familyName": "Lamy",
"@type": "Person"
},
{
"name": "Kirill Smelkov",
"givenName": "Kirill",
"familyName": "Smelkov",
"affiliation": {
"@type": "Organization",
"name": "@nexedi"
},
"@type": "Person"
},
{
"name": "Jegerjensen"
},
{
"name": "Pernici"
},
{
"name": "Sergiu Ivanov",
"givenName": "Sergiu",
"familyName": "Ivanov",
"@type": "Person"
},
{
"name": "Sachin Joglekar",
"givenName": "Sachin",
"familyName": "Joglekar",
"affiliation": {
"@type": "Organization",
"name": "@google"
},
"@type": "Person"
},
{
"name": "Colin B. Macdonald",
"givenName": "Colin B.",
"familyName": "Macdonald",
"@type": "Person"
},
{
"name": "Saptarshi Mandal",
"affiliation": {
"@type": "Organization",
"name": "Unemployed"
}
},
{
"name": "Thilina Ratnayaka",
"affiliation": {
"@type": "Organization",
"name": "UIUC"
}
},
{
"name": "Sean Vig",
"givenName": "Sean",
"familyName": "Vig",
"@type": "Person"
},
{
"name": "Stefan Krastanov",
"givenName": "Stefan",
"familyName": "Krastanov",
"affiliation": {
"@type": "Organization",
"name": "MIT"
},
"@type": "Person"
},
{
"name": "Brian E. Granger",
"givenName": "Brian E.",
"familyName": "Granger",
"affiliation": {
"@type": "Organization",
"name": "Amazon Web Services"
},
"@type": "Person"
},
{
"name": "Rick Muller",
"givenName": "Rick",
"familyName": "Muller",
"@type": "Person"
},
{
"name": "Sudhanshu Mishra",
"affiliation": {
"@type": "Organization",
"name": "@komorebitech"
}
},
{
"name": "Jason K. Moore",
"givenName": "Jason K.",
"familyName": "Moore",
"affiliation": {
"@type": "Organization",
"name": "red Love"
},
"@type": "Person"
},
{
"name": "Vinzent Steinberg",
"givenName": "Vinzent",
"familyName": "Steinberg",
"@type": "Person"
},
{
"name": "Gilbert Gede",
"givenName": "Gilbert",
"familyName": "Gede",
"@type": "Person"
},
{
"name": "Vladimir Perić",
"givenName": "Vladimir",
"familyName": "Perić",
"@type": "Person"
},
{
"name": "Jim Crist-Harif",
"givenName": "Jim",
"familyName": "Crist-Harif",
"affiliation": {
"@type": "Organization",
"name": "@voltrondata"
},
"@type": "Person"
},
{
"name": "Fredrik Johansson",
"givenName": "Fredrik",
"familyName": "Johansson",
"affiliation": {
"@type": "Organization",
"name": "INRIA & Institut de Mathématiques de Bordeaux"
},
"@type": "Person"
},
{
"name": "Bharath Mankalale",
"affiliation": {
"@type": "Organization",
"name": "student"
}
},
{
"name": "Addison Cugini",
"givenName": "Addison",
"familyName": "Cugini",
"@type": "Person"
},
{
"name": "Kundan Kumar Modi",
"givenName": "Kundan Kumar",
"familyName": "Modi",
"affiliation": {
"@type": "Organization",
"name": "University of Wisconsin-Madison"
},
"@type": "Person"
},
{
"name": "Thomas Hisch",
"givenName": "Thomas",
"familyName": "Hisch",
"affiliation": {
"@type": "Organization",
"name": "IMS Nanofabrication GmbH"
},
"@type": "Person"
}
],
"description": "Construction of Poly's from expressions is now significantly faster with using recursive algorithm (former poly()
function):
In [1]: %time p = Poly((x + 1)**1000, x) CPU times: user 178 ms, sys: 3.88 ms, total: 181 ms Wall time: 182 ms
while on the v0.13: In [1]: %time p = Poly((x + 1)**1000, x) CPU times: user 1min 4s, sys: 55.9 ms, total: 1min 4s Wall time: 1min 4s
or in the current SymPy master: In [1]: %time p = Poly((x + 1)**1000, x) CPU times: user 4.78 s, sys: 26.9 ms, total: 4.8 s Wall time: 5.05 s
Support for directional limits on the complex plane was added: In [1]: limit(sqrt(-1 + I*x), x, 0, dir=exp(I*pi/3)) Out[1]: -ⅈ
Direction exp(I*theta)
at the limit point x0
indicates the direction tangent of a curve aproaching the limit point. Special cases -1
(former dir=+
) and +1
(former dir=-
) corespond to theta=pi
and theta=0
(i.e. limit from above or from below on the real line). This release got better support for limits of piecewise and boolean expressions In [1]: Piecewise((x**2/2, x <= 1/2), (x/2 - 1/8, True)) Out[1]: ⎧ 2 ⎪ x ⎪ ── for x ≤ 1/2 ⎪ 2 ⎨ ⎪x 1 ⎪─ - ─ otherwise ⎪2 8 ⎩ In [2]: limit(_1, x, 0) Out[2]: 0 In [3]: limit(_1, x, oo) Out[3]: ∞ In [4]: limit(x > 0, x, 0) Out[4]: true In [5]: limit(x > 0, x, 0, dir=1) Out[5]: false
Also, for good or bad, now you could use any unicode symbols for identifiers (python does NFKC-normalization while parsing) in the Diofant console: $ python -m diofant --no-ipython --unicode-identifiers >>> Naturals ℕ >>> ℕ = Naturals >>> N = 2 >>> ℕ # will print 2 in plain Python ℕ
See release notes.",
"license": "info:eu-repo/semantics/openAccess",
"version": "v0.14.0",
"datePublished": "2023-04-12",
"@reverse": {
"isBasedOn": {
"@type": "ScholarlyArticle",
"identifier": {
"@type": "PropertyValue",
"propertyID": "URL",
"value": "https://github.com/diofant/diofant/tree/v0.14.0"
}
}
},
"schemaVersion": "http://datacite.org/schema/kernel-4",
"publisher": {
"@type": "Organization",
"name": "Zenodo"
},
"provider": {
"@type": "Organization",
"name": "datacite"
}
}