{ "info": { "author": "Jacob Lifshay ", "author_email": "Jacob Lifshay ", "bugtrack_url": null, "classifiers": [], "description": "## [Algebraic Numbers](https://en.wikipedia.org/wiki/Algebraic_number) Library\n\nUse when you need exact arithmetic, speed is not critical, and rational numbers aren't good enough.\n\n## Example:\n\n```rust\nuse algebraics::prelude::*;\nuse algebraics::RealAlgebraicNumber as Number;\n\nlet two = Number::from(2);\n\n// 2 is a rational number\nassert!(two.is_rational());\n\n// 1/2 is the reciprocal of 2\nlet one_half = two.recip();\n\n// 1/2 is also a rational number\nassert!(one_half.is_rational());\n\n// 2^(1/4)\nlet root = (&two).pow((1, 4));\n\n// we can use all the standard comparison operators\nassert!(root != Number::from(3));\nassert!(root < Number::from(2));\nassert!(root > Number::from(1));\n\n// we can use all of add, subtract, multiply, divide, and remainder\nlet sum = &root + &root;\nlet difference = &root - Number::from(47);\nlet product = &root * &one_half;\nlet quotient = &one_half / &root;\nlet remainder = &root % &one_half;\n\n// root is not a rational number\nassert!(!root.is_rational());\n\n// the calculations are always exact\nassert_eq!((&root).pow(4), two);\n\n// lets compute 30 decimal places of root\nlet scale = Number::from(10).pow(30);\nlet scaled = &root * scale;\nlet digits = scaled.into_integer_trunc();\nassert_eq!(\n digits.to_string(),\n 1_18920_71150_02721_06671_74999_70560u128.to_string()\n);\n\n// get the minimal polynomial\nlet other_number = root + two.pow((1, 2));\nassert_eq!(\n &other_number.minimal_polynomial().to_string(),\n \"2 + -8*X + -4*X^2 + 0*X^3 + 1*X^4\"\n);\n\n// works with really big numbers\nlet really_big = Number::from(1_00000_00000i64).pow(20) + Number::from(23);\nassert_eq!(\n &really_big.to_integer_floor().to_string(),\n \"100000000000000000000000000000000000000000000\\\n 000000000000000000000000000000000000000000000\\\n 000000000000000000000000000000000000000000000\\\n 000000000000000000000000000000000000000000000\\\n 000000000000000000023\"\n)\n```\n\n## Python support\n\nUsing algebraics from Python:\n\n```bash\npython3 -m pip install algebraics\n```\n\n```python\nfrom algebraics import RealAlgebraicNumber\nsqrt_2 = 2 ** (RealAlgebraicNumber(1) / 2)\nassert sqrt_2 * sqrt_2 == 2\n```\n\nUsing algebraics in your own Rust project:\n\n```toml\n[dependencies.algebraics]\nversion = \"0.3\"\n```\n\nDeveloping algebraics:\n\n```bash\ncargo install maturin\nmaturin develop --cargo-extra-args=\"--features python-extension\"\n```\n\n", "description_content_type": "text/markdown; charset=UTF-8; variant=GFM", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "algebraic-numbers,arbitrary-precision,polynomials,real-numbers,exact-arithmetic", "license": "LGPL-2.1-or-later", "maintainer": "", "maintainer_email": "", "name": "algebraics", "package_url": "https://pypi.org/project/algebraics/", "platform": null, "project_url": "https://pypi.org/project/algebraics/", "project_urls": { "Source Code": "https://salsa.debian.org/Kazan-team/algebraics" }, "release_url": "https://pypi.org/project/algebraics/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "algebraic numbers library", "version": "0.3.0", "yanked": false, "yanked_reason": null }, "last_serial": 13328607, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "6e5b0fdac47cb18b143c835d100aef18", "sha256": "b788534da3aaad3c9a6cd4b107fad6bd2b188ba6cb48fcc1f748ce3ac4e34f9f" }, "downloads": -1, "filename": "algebraics-0.1.2-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "6e5b0fdac47cb18b143c835d100aef18", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 411926, "upload_time": "2019-10-28T05:26:06", "upload_time_iso_8601": "2019-10-28T05:26:06.292839Z", "url": "https://files.pythonhosted.org/packages/1b/59/84dca8089d9490fdb1b5a95b9adf697061b13504ecb806406a57f7bed9e2/algebraics-0.1.2-cp36-cp36m-manylinux1_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "827d44aeadbcc9377415a51af52c4cd1", "sha256": "b644182bb7cb7d334e57833de01f12033868b505e4eac7650af0b49e275ad8ea" }, "downloads": -1, "filename": "algebraics-0.1.2.tar.gz", "has_sig": false, "md5_digest": "827d44aeadbcc9377415a51af52c4cd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130478, "upload_time": "2019-10-28T05:26:09", "upload_time_iso_8601": "2019-10-28T05:26:09.740976Z", "url": "https://files.pythonhosted.org/packages/f8/36/06e02c576c9c1b6881bf5670bba7b8ec0bb7412eff3ea7f7bdfc8b5d4340/algebraics-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b4c3e47c7085e6c43b8f6dce0ce42a82", "sha256": "197b0ba969d4b74ff18d2a59448b0b4c8b6a637c2291952ea455ff455725390f" }, "downloads": -1, "filename": "algebraics-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "b4c3e47c7085e6c43b8f6dce0ce42a82", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 428270, "upload_time": "2020-03-23T00:26:13", "upload_time_iso_8601": "2020-03-23T00:26:13.001211Z", "url": "https://files.pythonhosted.org/packages/b8/b3/91c8733fbdd65e007e37de04463b0a3b25f06183d1f6d1ee7a7c3c690b95/algebraics-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "00cac5b9e040525f26e460898526cffa", "sha256": "835f390365cb51266fdf898047f9257e0502645eb389968edf47d373633a83e5" }, "downloads": -1, "filename": "algebraics-0.2.0.tar.gz", "has_sig": false, "md5_digest": "00cac5b9e040525f26e460898526cffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 131190, "upload_time": "2020-03-23T00:26:15", "upload_time_iso_8601": "2020-03-23T00:26:15.384939Z", "url": "https://files.pythonhosted.org/packages/3b/d8/ae379005b0efa95da9d191bd7dd451e863624b4c61dede99e1e221d1d94c/algebraics-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "15d6ad817e6e468f08f0b1ced43e0c72", "sha256": "5fa3e7ed05e9ab9782db293f9dc7913531725fba2c2439b90c0af8ee0e08d402" }, "downloads": -1, "filename": "algebraics-0.3.0.tar.gz", "has_sig": false, "md5_digest": "15d6ad817e6e468f08f0b1ced43e0c72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 131119, "upload_time": "2022-03-29T01:10:27", "upload_time_iso_8601": "2022-03-29T01:10:27.269533Z", "url": "https://files.pythonhosted.org/packages/8f/43/cfefe13bd006d3a93398774f465d83d0c77218defdc2bdfb13c164bf60b2/algebraics-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "15d6ad817e6e468f08f0b1ced43e0c72", "sha256": "5fa3e7ed05e9ab9782db293f9dc7913531725fba2c2439b90c0af8ee0e08d402" }, "downloads": -1, "filename": "algebraics-0.3.0.tar.gz", "has_sig": false, "md5_digest": "15d6ad817e6e468f08f0b1ced43e0c72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 131119, "upload_time": "2022-03-29T01:10:27", "upload_time_iso_8601": "2022-03-29T01:10:27.269533Z", "url": "https://files.pythonhosted.org/packages/8f/43/cfefe13bd006d3a93398774f465d83d0c77218defdc2bdfb13c164bf60b2/algebraics-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }