{ "info": { "author": "Hasenpfote", "author_email": "Hasenpfote36@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "`License `__\n`Build Status `__ `PyPI\nversion `__\n`Pyversions `__\n\nfpq\n===\n\nAbout\n-----\n\nThis package provides modules for manipulating floating point numbers\nquantization using NumPy.\n\nFeature\n-------\n\n- Supports multidimensional arrays.\n- Supports encoding and decoding between 64/32/16-bits floating point\n numbers and N-bits unsigned normalized integers.\n- Supports encoding and decoding between 64/32/16-bits floating point\n numbers and N-bits signed normalized integers.\n- Supports encoding and decoding between 3d-vectors and N-bits unsigned\n integers.\n- Supports encoding and decoding between Quaternions and N-bits\n unsigned integers.\n\nCompatibility\n-------------\n\nfpq works with Python 3.4 or higher.\n\nDependencies\n------------\n\n- NumPy\n- Numba\n\nInstallation\n------------\n\n::\n\n pip install fpq\n\nUsage\n-----\n\nencoding and decoding between 32-bits floating point numbers and 5-bits\nunsigned normalized integers.\n\n.. code:: python\n\n >>> import numpy as np\n >>> from fpq.fp import *\n >>> fp = np.array([0., 0.25, 1.], dtype=np.float32)\n >>> enc = encode_fp_to_std_unorm(fp, dtype=np.uint8, nbits=5)\n >>> enc\n array([ 0, 8, 31], dtype=uint8)\n >>> dec = decode_std_unorm_to_fp(enc, dtype=np.float32, nbits=5)\n >>> dec\n array([0. , 0.2580645, 1. ], dtype=float32)\n\nencoding and decoding between 32-bits floating point numbers and 5-bits\nsigned normalized integers.\n\n.. code:: python\n\n >>> import numpy as np\n >>> from fpq.fp import *\n >>> fp = np.array([-1., -0.25, -0., 0., 0.25, 1.], dtype=np.float32)\n >>> enc = encode_fp_to_std_snorm(fp, dtype=np.uint8, nbits=5)\n >>> enc\n array([31, 9, 1, 0, 8, 30], dtype=uint8)\n >>> dec = decode_std_snorm_to_fp(enc, dtype=np.float32, nbits=5)\n >>> dec\n array([-1. , -0.26666668, -0. , 0. , 0.26666668,\n 1. ], dtype=float32)\n >>> enc = encode_fp_to_ogl_snorm(fp, dtype=np.uint8, nbits=5)\n >>> enc\n array([17, 28, 0, 0, 4, 15], dtype=uint8)\n >>> dec = decode_ogl_snorm_to_fp(enc, dtype=np.float32, nbits=5)\n >>> dec\n array([-1. , -0.26666668, 0. , 0. , 0.26666668,\n 1. ], dtype=float32)\n\nencoding and decoding between 3d-vectors and 64-bits(2:20:20:22)\nunsigned integers.\n\n.. code:: python\n\n >>> import math\n >>> import random\n >>> import numpy as np\n >>> from fpq.vector import *\n >>> v = np.array([vec_random(norm=100.) for _ in range(3)], dtype=np.float64)\n >>> v\n array([[-54.70386501, -22.45578546, -52.18237577],\n [-85.46791152, -5.69032986, 1.21334561],\n [ 16.02886205, 1.94634654, -30.35219431]])\n >>> enc = encode_vec_to_uint(v, dtype=np.uint64, nbits=20)\n >>> enc\n array([ 1313110064653969262, 306332797892602581, 11373476070061802081],\n dtype=uint64)\n >>> dec = decode_uint_to_vec(enc, dtype=np.float64, nbits=20)\n >>> dec\n array([[-54.69957531, -22.45404536, -52.17828412],\n [-85.4662517 , -5.69027392, 1.21334561],\n [ 16.02845595, 1.94632843, -30.3514349 ]])\n\nencoding and decoding between Quaternions and 64-bits(2:20:20:20)\nunsigned integers.\n\n.. code:: python\n\n >>> import numpy as np\n >>> from fpq.quaternion import *\n >>> q = np.array([quat_random() for _ in range(3)], dtype=np.float64)\n >>> q\n array([[ 0.25679071, -0.15512517, 0.88804262, 0.34838917],\n [ 0.71399177, 0.05729705, -0.69728753, -0.02688697],\n [-0.66527338, -0.62596543, -0.40672262, -0.01246296]])\n >>> enc = encode_quat_to_uint(q, dtype=np.uint64)\n >>> enc\n array([2724532880236077588, 93422189206870975, 1020620101889574962],\n dtype=uint64)\n >>> dec = decode_uint_to_quat(enc, dtype=np.float64)\n >>> dec\n array([[ 0.25679011, -0.15512497, 0.88804308, 0.34838854],\n [ 0.71399243, 0.0572969 , -0.69728688, -0.02688637],\n [ 0.66527395, 0.62596484, 0.40672258, 0.01246335]])\n\n`Here `__ are a\nfew examples.\n\nDocumentation\n-------------\n\nFor users, docs are now available at https://hasenpfote.github.io/fpq/.\n\nReferences and links\n--------------------\n\n| `D3D: Data Conversion\n Rules `__\n| `OGL: Normalized\n Integer `__\n| `Vulkan: Fixed-Point Data\n Conversions `__\n\nLicense\n-------\n\nThis software is released under the MIT License, see LICENSE.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Hasenpfote/fpq", "keywords": "quantization,floating-point,vector,quaternion", "license": "", "maintainer": "", "maintainer_email": "", "name": "fpq", "package_url": "https://pypi.org/project/fpq/", "platform": "", "project_url": "https://pypi.org/project/fpq/", "project_urls": { "Homepage": "https://github.com/Hasenpfote/fpq" }, "release_url": "https://pypi.org/project/fpq/0.11.0/", "requires_dist": [ "numpy (>=1.11.2)", "numba (>=0.38.0); python_version >= \"3.5\"" ], "requires_python": ">=3.4", "summary": "This package provides modules for manipulating floating point numbers quantization using NumPy.", "version": "0.11.0" }, "last_serial": 4210197, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "2afd7ac46e7b33f6d6028294991f31b9", "sha256": "c1fd1eeafe3ca269245c6cef0398360ecdb87517e046032600b6b2ff5da70527" }, "downloads": -1, "filename": "fpq-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2afd7ac46e7b33f6d6028294991f31b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9679, "upload_time": "2018-08-21T07:14:04", "url": "https://files.pythonhosted.org/packages/6b/68/fdddd42a42c7796cb2f417611f4807f93d5a68cac1dfb4aed9b556d23bc8/fpq-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93dbde75eb56731533cb39b81eadd7b7", "sha256": "c20e50a0726df67907b8606b043e305ba745b48cd7948a03d67235b8148a73b4" }, "downloads": -1, "filename": "fpq-0.10.0.tar.gz", "has_sig": false, "md5_digest": "93dbde75eb56731533cb39b81eadd7b7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 187584, "upload_time": "2018-08-21T07:14:05", "url": "https://files.pythonhosted.org/packages/c6/c1/e04b46c867f41df591d4a4e285690bdef672892961b0ee942049f5b88eaf/fpq-0.10.0.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "971f41cb0a6dfbd4641240cc7e46b6be", "sha256": "6eacbbcc3a1bfba60dfe9ac69866a869376633b05d1f9f6d7f16b76135f29539" }, "downloads": -1, "filename": "fpq-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "971f41cb0a6dfbd4641240cc7e46b6be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9982, "upload_time": "2018-08-27T07:58:45", "url": "https://files.pythonhosted.org/packages/20/f8/e5380bc0519d3e57c84f9369e089211c5295a882558caea3c30abf7d8e98/fpq-0.11.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "feaead966e5d62980e7790ee6a4825cf", "sha256": "665e017417986a8981659720b36f69a777dce957188ddf99e53201e9f6a5737c" }, "downloads": -1, "filename": "fpq-0.11.0.tar.gz", "has_sig": false, "md5_digest": "feaead966e5d62980e7790ee6a4825cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 187933, "upload_time": "2018-08-27T07:58:46", "url": "https://files.pythonhosted.org/packages/03/01/3a02ecfd79ed8a6bdfa5fbf06a20bb6d8b44eb33d42e9e72c1baf9dafc07/fpq-0.11.0.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "199db53d7e6405cb7f9aebd27b5f6eb5", "sha256": "afa9cc8a6bde63793799781b821417505812a8091f2bc4967f0a793f6da45a6a" }, "downloads": -1, "filename": "fpq-0.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "199db53d7e6405cb7f9aebd27b5f6eb5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 10644, "upload_time": "2018-05-29T02:54:46", "url": "https://files.pythonhosted.org/packages/c1/d8/b8c015e67b5c7b450ca812a16ec06518c3be3b1f3c28a3b17c2c1147ac73/fpq-0.6.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf09b3e04c64f9d29b6f50d97bc6122a", "sha256": "172080d73f9888979b9f120dc0de0044749541a0c9a546c587cee2915fb838d7" }, "downloads": -1, "filename": "fpq-0.6.2.tar.gz", "has_sig": false, "md5_digest": "cf09b3e04c64f9d29b6f50d97bc6122a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 183457, "upload_time": "2018-05-29T02:54:48", "url": "https://files.pythonhosted.org/packages/15/ae/ce781b6ebc94fcc9f963900b1bf642ed0086304cfd87916695034cf8c26e/fpq-0.6.2.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "587696f8fac30d7b13bcef7be9298d79", "sha256": "b93e7c893228da7eaac216844ac0e9ac438c46d4c677002b235350bcb4acf8f1" }, "downloads": -1, "filename": "fpq-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "587696f8fac30d7b13bcef7be9298d79", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 11012, "upload_time": "2018-06-01T09:40:51", "url": "https://files.pythonhosted.org/packages/4b/fb/85a433fee47c4b51d177199f1c2ba3b2c4df67cdf361d0aaed3b9cb720d1/fpq-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4afbb35e87daade779200e0a1d251e07", "sha256": "6c5bfb5c7513ac6d66baa6bfebb572369368d28af56031f94c6f6c5faf83c0ce" }, "downloads": -1, "filename": "fpq-0.7.0.tar.gz", "has_sig": false, "md5_digest": "4afbb35e87daade779200e0a1d251e07", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 184021, "upload_time": "2018-06-01T09:40:53", "url": "https://files.pythonhosted.org/packages/50/74/9ba0cec6039864a9a3959180b017e64cefac95f85e5ef78d01f675ca3607/fpq-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "ab5affbae23e5e90e970e6101fc9628f", "sha256": "2efdc222d6064b91073dfde0d58b67141cda6159b5dc3a49c56f5e2dee16ee52" }, "downloads": -1, "filename": "fpq-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ab5affbae23e5e90e970e6101fc9628f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 11566, "upload_time": "2018-06-13T12:46:59", "url": "https://files.pythonhosted.org/packages/27/aa/f78ad64779451905debe440c863c761ae322d62dcf893ba1182f176e39e2/fpq-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a41bd34ff0130fe713e038737a8e014d", "sha256": "40ad2f7729465b50e632bc02e593fcf4e15c0020897e8c7b1229d9e3fba45d24" }, "downloads": -1, "filename": "fpq-0.7.1.tar.gz", "has_sig": false, "md5_digest": "a41bd34ff0130fe713e038737a8e014d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 185088, "upload_time": "2018-06-13T12:47:00", "url": "https://files.pythonhosted.org/packages/25/d8/b7d044d89c642c10eabf9138c2b93d6f5d487379f8bf61340352f9a256b7/fpq-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "9bafee6c38847ad2e1ba12679ddb35df", "sha256": "e314c0c34019bf29e3a177ba00917053e0bf95d3655ded726e95c16e21302661" }, "downloads": -1, "filename": "fpq-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9bafee6c38847ad2e1ba12679ddb35df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 9385, "upload_time": "2018-06-18T10:22:24", "url": "https://files.pythonhosted.org/packages/4d/7c/d8e56b9552d4f2d24826b709307816f563cffeefc35de9186e74c9d7f84b/fpq-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9fe10953b1004d035a3d28ca8aa7880", "sha256": "59917b8028a65260111eea00ce2a40900a59968b2dd2d749d71c815246143ce2" }, "downloads": -1, "filename": "fpq-0.7.2.tar.gz", "has_sig": false, "md5_digest": "b9fe10953b1004d035a3d28ca8aa7880", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 186116, "upload_time": "2018-06-18T10:22:26", "url": "https://files.pythonhosted.org/packages/26/59/1896a43de4af108b8feefe6458e3cd0b8e09ba434b5cab7ffd8a23827653/fpq-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "8894ea713162f2014fcf392a6dcb00ef", "sha256": "61a1256e1879ffa3951208962ac3fc7ef4e5be8dd941423285bbed92208a8299" }, "downloads": -1, "filename": "fpq-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8894ea713162f2014fcf392a6dcb00ef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 9576, "upload_time": "2018-06-22T11:02:49", "url": "https://files.pythonhosted.org/packages/57/91/a13c4e13bffd06d1fdbf32fff5f2dbc985dc52acb01ba9c070a454d8294e/fpq-0.7.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b0e1257b84564f6de8c201cc002ce9a", "sha256": "bafcc4e8c3c14e208ec46dd20c85e7ae87eb0e0a7096a5d6db76ffd6bbb2fc62" }, "downloads": -1, "filename": "fpq-0.7.3.tar.gz", "has_sig": false, "md5_digest": "5b0e1257b84564f6de8c201cc002ce9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 186875, "upload_time": "2018-06-22T11:02:50", "url": "https://files.pythonhosted.org/packages/e8/a9/149d1b975de1511295038b94add67c9ff8fafe45b7ab0a11776111583e46/fpq-0.7.3.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "20d74fe6d48f3735fc242a250980db57", "sha256": "f8f871b28939202a35068717bb56ee30a94fde400d43bf81c1ebe86bb0b9cd06" }, "downloads": -1, "filename": "fpq-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "20d74fe6d48f3735fc242a250980db57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 9703, "upload_time": "2018-07-28T11:49:32", "url": "https://files.pythonhosted.org/packages/7f/1d/edc2004ba54813687a08637fa9cbf210ed9e0ca4473d5c28b542b648ce5c/fpq-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0dcc21e649e2a51738a95d251b05d88", "sha256": "57ce434852c8daa680ef5cc7f96c517586394517c98e4801731a97bc0d3788a2" }, "downloads": -1, "filename": "fpq-0.8.0.tar.gz", "has_sig": false, "md5_digest": "d0dcc21e649e2a51738a95d251b05d88", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 187912, "upload_time": "2018-07-28T11:49:33", "url": "https://files.pythonhosted.org/packages/37/f6/dd47b28c47cfb0a4ffc5b943d8a3ce16aa3e4e3c168378ea6a9fd9f6acda/fpq-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "735d11ac7277906e5a0560a78ae2379b", "sha256": "2daeb204c6f657bc60b9b755b8a165040a78f735cfcf6a81f21205518d0820c9" }, "downloads": -1, "filename": "fpq-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "735d11ac7277906e5a0560a78ae2379b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9665, "upload_time": "2018-08-20T10:57:02", "url": "https://files.pythonhosted.org/packages/25/4e/63ff70b06deef1378a40ac92ae374a30d8f9194ad4f0083f9214acd52847/fpq-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82f2e0a86625068c48f427f04e9b70da", "sha256": "d2947a8d72c4cd70e8ef4286f8995fa617066b5a24b6b5375d471cf7ef15e489" }, "downloads": -1, "filename": "fpq-0.9.0.tar.gz", "has_sig": false, "md5_digest": "82f2e0a86625068c48f427f04e9b70da", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 187594, "upload_time": "2018-08-20T10:57:04", "url": "https://files.pythonhosted.org/packages/22/7f/d75d0372cc6ce07fe565d9d1d54e8bc563835ff0b225c73e59986b41f5aa/fpq-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "971f41cb0a6dfbd4641240cc7e46b6be", "sha256": "6eacbbcc3a1bfba60dfe9ac69866a869376633b05d1f9f6d7f16b76135f29539" }, "downloads": -1, "filename": "fpq-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "971f41cb0a6dfbd4641240cc7e46b6be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 9982, "upload_time": "2018-08-27T07:58:45", "url": "https://files.pythonhosted.org/packages/20/f8/e5380bc0519d3e57c84f9369e089211c5295a882558caea3c30abf7d8e98/fpq-0.11.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "feaead966e5d62980e7790ee6a4825cf", "sha256": "665e017417986a8981659720b36f69a777dce957188ddf99e53201e9f6a5737c" }, "downloads": -1, "filename": "fpq-0.11.0.tar.gz", "has_sig": false, "md5_digest": "feaead966e5d62980e7790ee6a4825cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 187933, "upload_time": "2018-08-27T07:58:46", "url": "https://files.pythonhosted.org/packages/03/01/3a02ecfd79ed8a6bdfa5fbf06a20bb6d8b44eb33d42e9e72c1baf9dafc07/fpq-0.11.0.tar.gz" } ] }