Skip to main content

Add a quaternion dtype to NumPy

Project description

Test Status Documentation Status PyPI Version Conda Version MIT License DOI

Quaternions in numpy

This Python module adds a quaternion dtype to NumPy.

The code was originally based on code by Martin Ling (which he wrote with help from Mark Wiebe), but was rewritten with ideas from rational to work with newer python versions (and to fix a few bugs), and greatly expands the applications of quaternions.

See also the pure-python package quaternionic.

Quickstart

conda install -c conda-forge quaternion

or

python -m pip install --upgrade --force-reinstall numpy-quaternion

Optionally add --user after install in the second command if you're not using a python environment — though you should start.

Installation

Assuming you use conda to manage your python installation (which is currently the preferred choice for science and engineering with python), you can install this package simply as

conda install -c conda-forge quaternion

If you prefer to use pip, you can instead do

python -m pip install --upgrade --force-reinstall numpy-quaternion

(See here for a veteran python core contributor's explanation of why you should always use python -m pip instead of just pip or pip3.) The --upgrade --force-reinstall options are not always necessary, but will ensure that pip will update numpy if it has to.

If you refuse to use conda, you might want to install inside your home directory without root privileges. (Conda does this by default anyway.) This is done by adding --user to the above command:

python -m pip install --user --upgrade --force-reinstall numpy-quaternion

Note that pip will attempt to compile the code — which requires a working C compiler.

Finally, there's also the fully manual option of just downloading the code, changing to the code directory, and running

python -m pip install --upgrade --force-reinstall .

This should work regardless of the installation method, as long as you have a compiler hanging around.

Basic usage

The full documentation can be found on Read the Docs, and most functions have docstrings that should explain the relevant points. The following are mostly for the purposes of example.

>>> import numpy as np
>>> import quaternion
>>> np.quaternion(1,0,0,0)
quaternion(1, 0, 0, 0)
>>> q1 = np.quaternion(1,2,3,4)
>>> q2 = np.quaternion(5,6,7,8)
>>> q1 * q2
quaternion(-60, 12, 30, 24)
>>> a = np.array([q1, q2])
>>> a
array([quaternion(1, 2, 3, 4), quaternion(5, 6, 7, 8)], dtype=quaternion)
>>> np.exp(a)
array([quaternion(1.69392, -0.78956, -1.18434, -1.57912),
       quaternion(138.909, -25.6861, -29.9671, -34.2481)], dtype=quaternion)

Note that this package represents a quaternion as a scalar, followed by the x component of the vector part, followed by y, followed by z. These components can be accessed directly:

>>> q1.w, q1.x, q1.y, q1.z
(1.0, 2.0, 3.0, 4.0)

However, this only works on an individual quaternion; for arrays it is better to use "vectorized" operations like as_float_array.

The following ufuncs are implemented (which means they run fast on numpy arrays):

add, subtract, multiply, divide, log, exp, power, negative, conjugate,
copysign, equal, not_equal, less, less_equal, isnan, isinf, isfinite, absolute

Quaternion components are stored as double-precision floating point numbers — floats, in python language, or float64 in more precise numpy language. Numpy arrays with dtype=quaternion can be accessed as arrays of doubles without any (slow, memory-consuming) copying of data; rather, a view of the exact same memory space can be created within a microsecond, regardless of the shape or size of the quaternion array.

Comparison operations follow the same lexicographic ordering as tuples.

The unary tests isnan and isinf return true if they would return true for any individual component; isfinite returns true if it would return true for all components.

Real types may be cast to quaternions, giving quaternions with zero for all three imaginary components. Complex types may also be cast to quaternions, with their single imaginary component becoming the first imaginary component of the quaternion. Quaternions may not be cast to real or complex types.

Several array-conversion functions are also included. For example, to convert an Nx4 array of floats to an N-dimensional array of quaternions, use as_quat_array:

>>> import numpy as np
>>> import quaternion
>>> a = np.random.rand(7, 4)
>>> a
array([[ 0.93138726,  0.46972279,  0.18706385,  0.86605021],
       [ 0.70633523,  0.69982741,  0.93303559,  0.61440879],
       [ 0.79334456,  0.65912598,  0.0711557 ,  0.46622885],
       [ 0.88185987,  0.9391296 ,  0.73670503,  0.27115149],
       [ 0.49176628,  0.56688076,  0.13216632,  0.33309146],
       [ 0.11951624,  0.86804078,  0.77968826,  0.37229404],
       [ 0.33187593,  0.53391165,  0.8577846 ,  0.18336855]])
>>> qs = quaternion.as_quat_array(a)
>>> qs
array([ quaternion(0.931387262880247, 0.469722787598354, 0.187063852060487, 0.866050210100621),
       quaternion(0.706335233363319, 0.69982740767353, 0.933035590130247, 0.614408786768725),
       quaternion(0.793344561317281, 0.659125976566815, 0.0711557025000925, 0.466228847713644),
       quaternion(0.881859869074069, 0.939129602918467, 0.736705031709562, 0.271151494174001),
       quaternion(0.491766284854505, 0.566880763189927, 0.132166320200012, 0.333091463422536),
       quaternion(0.119516238634238, 0.86804077992676, 0.779688263524229, 0.372294043850009),
       quaternion(0.331875925159073, 0.533911652483908, 0.857784598617977, 0.183368547490701)], dtype=quaternion)

[Note that quaternions are printed with full precision, unlike floats, which is why you see extra digits above. But the actual data is identical in the two cases.] To convert an N-dimensional array of quaternions to an Nx4 array of floats, use as_float_array:

>>> b = quaternion.as_float_array(qs)
>>> b
array([[ 0.93138726,  0.46972279,  0.18706385,  0.86605021],
       [ 0.70633523,  0.69982741,  0.93303559,  0.61440879],
       [ 0.79334456,  0.65912598,  0.0711557 ,  0.46622885],
       [ 0.88185987,  0.9391296 ,  0.73670503,  0.27115149],
       [ 0.49176628,  0.56688076,  0.13216632,  0.33309146],
       [ 0.11951624,  0.86804078,  0.77968826,  0.37229404],
       [ 0.33187593,  0.53391165,  0.8577846 ,  0.18336855]])

It is also possible to convert a quaternion to or from a 3x3 array of floats representing a rotation matrix, or an array of N quaternions to or from an Nx3x3 array of floats representing N rotation matrices, using as_rotation_matrix and from_rotation_matrix. Similar conversions are possible for rotation vectors using as_rotation_vector and from_rotation_vector, and for spherical coordinates using as_spherical_coords and from_spherical_coords. Finally, it is possible to derive the Euler angles from a quaternion using as_euler_angles, or create a quaternion from Euler angles using from_euler_angles — though be aware that Euler angles are basically the worst things ever.1 Before you complain about those functions using something other than your favorite conventions, please read this page.

Dependencies

With the standard installation methods, hopefully you won't need to worry about dependencies directly. But in case you do, here's what you need to know.

The basic requirements for this code are reasonably current versions of python and numpy. In particular, python versions 3.10 through 3.13 are routinely tested. Because of its crucial dependence on numpy, this package can only support versions of python that are directly supported by numpy — which limits support to releases from the past few years. Old versions of python will work with older versions of this package, which are still available from PyPI and conda-forge. Some older versions of python may still work with newer versions of this package, but your mileage may vary.

However, certain advanced functions in this package (including squad, mean_rotor_in_intrinsic_metric, integrate_angular_velocity, and related functions) require scipy and can automatically use numba. Scipy is a standard python package for scientific computation, and implements interfaces to C and Fortran codes for optimization (among other things) need for finding mean and optimal rotors. Numba uses LLVM to compile python code to machine code, accelerating many numerical functions by factors of anywhere from 2 to 2000. It is possible to run all the code without numba, but these particular functions can be anywhere from 4 to 400 times slower without it.

Both scipy and numba can be installed with pip or conda. However, because conda is specifically geared toward scientific python, it is generally more robust for these more complicated packages. In fact, the main anaconda package comes with both numba and scipy. If you prefer the smaller download size of miniconda (which comes with minimal extras), you'll also have to run this command:

conda install numpy scipy numba

Bug reports and feature requests

Bug reports and feature requests are entirely welcome (with very few exceptions). The best way to do this is to open an issue on this code's github page. For bug reports, please try to include a minimal working example demonstrating the problem.

Pull requests are also entirely welcome, of course, if you have an idea where the code is going wrong, or have an idea for a new feature that you know how to implement.

This code is routinely tested on recent versions of both python (3.8 though 3.11) and numpy (>=1.13). But the test coverage is not necessarily as complete as it could be, so bugs may certainly be present, especially in the higher-level functions like mean_rotor_....

Acknowledgments

This code is, of course, hosted on github. Because it is an open-source project, the hosting is free, and all the wonderful features of github are available, including free wiki space and web page hosting, pull requests, a nice interface to the git logs, etc. Github user Hannes Ovrén (hovren) pointed out some errors in a previous version of this code and suggested some nice utility functions for rotation matrices, etc. Github user Stijn van Drongelen (rhymoid) contributed some code that makes compilation work with MSVC++. Github user Jon Long (longjon) has provided some elegant contributions to substantially improve several tricky parts of this code. Rebecca Turner (9999years) and Leo Stein (duetosymmetry) did all the work in getting the documentation onto Read the Docs.

Every change in this code is automatically tested on Github Actions. The code is downloaded and installed fresh each time, and then tested, on each of the different supported versions of python, on each of the supported platforms. This ensures that no change I make to the code breaks either installation or any of the features that I have written tests for. Github Actions also automatically builds the pip versions of the code hosted on pypi. Conda-forge also uses Github Actions to build the conda/mamba version hosted on anaconda.org. These are all free services for open-source projects like this one.

The work of creating this code was supported in part by the Sherman Fairchild Foundation and by NSF Grants No. PHY-1306125 and AST-1333129.



1 Euler angles are awful

Euler angles are pretty much the worst things ever and it makes me feel bad even supporting them. Quaternions are faster, more accurate, basically free of singularities, more intuitive, and generally easier to understand. You can work entirely without Euler angles (I certainly do). You absolutely never need them. But if you really can't give them up, they are mildly supported.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numpy_quaternion-2024.0.12.tar.gz (67.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

numpy_quaternion-2024.0.12-cp313-cp313-win_amd64.whl (70.0 kB view details)

Uploaded CPython 3.13Windows x86-64

numpy_quaternion-2024.0.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (184.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numpy_quaternion-2024.0.12-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (190.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

numpy_quaternion-2024.0.12-cp313-cp313-macosx_11_0_arm64.whl (55.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_x86_64.whl (61.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_universal2.whl (86.5 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

numpy_quaternion-2024.0.12-cp312-cp312-win_amd64.whl (70.0 kB view details)

Uploaded CPython 3.12Windows x86-64

numpy_quaternion-2024.0.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (184.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numpy_quaternion-2024.0.12-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (190.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

numpy_quaternion-2024.0.12-cp312-cp312-macosx_11_0_arm64.whl (55.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_x86_64.whl (61.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_universal2.whl (86.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

numpy_quaternion-2024.0.12-cp311-cp311-win_amd64.whl (70.0 kB view details)

Uploaded CPython 3.11Windows x86-64

numpy_quaternion-2024.0.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (183.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numpy_quaternion-2024.0.12-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (188.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

numpy_quaternion-2024.0.12-cp311-cp311-macosx_11_0_arm64.whl (55.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_x86_64.whl (61.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_universal2.whl (86.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

numpy_quaternion-2024.0.12-cp310-cp310-win_amd64.whl (70.0 kB view details)

Uploaded CPython 3.10Windows x86-64

numpy_quaternion-2024.0.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (182.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

numpy_quaternion-2024.0.12-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (187.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

numpy_quaternion-2024.0.12-cp310-cp310-macosx_11_0_arm64.whl (55.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_x86_64.whl (61.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_universal2.whl (86.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file numpy_quaternion-2024.0.12.tar.gz.

File metadata

  • Download URL: numpy_quaternion-2024.0.12.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for numpy_quaternion-2024.0.12.tar.gz
Algorithm Hash digest
SHA256 5ecb4e310e732bc21687474c1bc6cd6187d5c22da78d342379fe81f12f46037f
MD5 5c2c0075b6326e0b6e928e388ee779a4
BLAKE2b-256 c5eb7af61dd6c1063b56f452c0de867955ad4d733aca517e38658829cf4d6b83

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9ce0fa7af5075b0b0c39bb1ac80fb3fb8b9c5ae3c2140672933391b295f84210
MD5 32a32226de8cb01d45a02b97f9a34bb1
BLAKE2b-256 0c988a6a55e2ea86a1c6b39dda696ff03b505ba99d2db4b2efa45fb29c5a4604

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a02503230d3e5678e955ad1a64cd1738ff2739b9a1cd3fe58d5bc98fd491908f
MD5 45107742d8159a00a4746c02284e2e4b
BLAKE2b-256 f77f3507d0959811a4b0b94299daf551baa350eded39fa95bed5a8f4824f378e

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f947b8fdccb1cfe6d1157578477741e0c51ba1bb4d43358c5fbb7b26183942fc
MD5 12f9ceefaaeae9bf6f17a7aa6d73a034
BLAKE2b-256 2fd68fd64e4e1f7a3c39785da69f867284db1a37852eed3f9646a0aeb0c27695

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e54e41ca9991832aa0303c8956151f1933fc15b5645ef5b8fb6b93356ee30b8b
MD5 1c83591f6cc6c79d44ff5700314ec110
BLAKE2b-256 7a0f962497d0164174d9631babd623f2b417d6027fcdd81a05763ad9beb8c6dd

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2c7c302a828b80d2553be50bbde978ed0b6c1dfc7be310afaa083acc75a2e6b3
MD5 967ae94e3664c47aa714a2b1c1e80c0e
BLAKE2b-256 1632fb0b4fa6edcb442d5547b794c29fb9db038bae9b1d42a958430ae3b4b67f

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 66d3072b9f01b853b32ea99670bb739631aef36ac2317fd845e90b2c887ebd6c
MD5 bb0f522f3026adf4dfb4bedcf2a36cb3
BLAKE2b-256 e5c14133792c1a751eb9e6a03669a1cdf724e5f826e93b6ed9b44631d2695f63

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 aea04cc3d01676fca03ca23b7c723a191d31af3cff853ddc47a2422647a03939
MD5 0a6ae511b771a036615e5c7d5cc74182
BLAKE2b-256 51aaa24a5958066ee9174d0d01d7219500d71dd9d5b8e4b66e23abb68a739d68

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 33a993241d7f885654c5496db2f581ff86f4cb6a298671419956223cab3535c2
MD5 658bb56b86915cb3e711003ca1f3813f
BLAKE2b-256 e8c21cd11e2389e9f9c95cb72e183b1831ef37d19eb998d5fb1d282e25bd36b7

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c8257cad3b9586d04e4c8f9a2d182b72a35e068d0e787dd5560838275be87537
MD5 7358428d17981b45fb7906259d5876c1
BLAKE2b-256 c0dbbdc43f11c5269670482d5bdda1bd5220c8f5f64e7ff95fc622323693f58c

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28cbece557ab04b393b1864f8790d1b4482e49cbc98566549ec3490e5af4d8db
MD5 b82c0dea6d1f8dd3a3441eb27d6eb865
BLAKE2b-256 87f2ade6fde482f92adb0521c86678591416025623dcab9b7f73c1fe21846f5b

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 947a5afbf1f42f6a86c5ea288165631bde3eb243fcb50e50af611149863bb541
MD5 9d7e9aee5d6ef0c4d96b82bb0d2dfa37
BLAKE2b-256 06286a72b54d92fc5ef3fb5f4f654b1d0d652b76040bfc07cfe6783655f5c4c6

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f7c96c1faac4d6c6ab2505beb26a82f2e8b3d3470d72c92af1837bc8f883378e
MD5 923d529b9be574b129f79b7d0f5e763f
BLAKE2b-256 bd4ffa07dd8b41aba82bbc0dd91e3a6e051bab59e6095205c932e2180eb923f7

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 63b959ed309dbd0e8da2e41f2574b4b8f3d8f972bf3c49fdc54de56cdf28687f
MD5 05928089a74ef2985ddbdf2adf2cc608
BLAKE2b-256 62fe3f7aec5a1a68b0ea2d34f511bf12b8b444bd28a6e663ecd604406ac9ffb9

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 989e6edf66b8b083354b24e7303d405ed9cd76d29b37852474794c8b2cab5b38
MD5 e229a819521f4cb40a073320fe62ad9f
BLAKE2b-256 7ae9ebb4ee9603ae1ea2495cb1ecab5a8f07b28bcc0892f03ba62d81de7cbcba

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 16f797e1733d04b48f3ad86b4e38398d49415f28a9d7d55b5e541533c3badddf
MD5 8ba24322bf35ed9855940d0cfa73a8bd
BLAKE2b-256 db7501f319414f031b75703dfd72243adfa0a1b90d372e218dbb040e4ce8c2c1

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa37c4102f47dc5e675dd6714f390edcc6a9c3151a427d34bd5778e71f26d489
MD5 1729d46f931a9ff9e22a288a1f6bdae9
BLAKE2b-256 a024608f9212b81eca06f1df916a4d3077cfc3fe3f97201740e2fbae229f41ce

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fb8087c737422ff893163782dd99188e159aac5dcddec83538ad53a172755d3d
MD5 76fee840400e36794fba9a52d3caf693
BLAKE2b-256 bc1894d6f6ff1069bd46bd4ef9644c44f777346ddf0183e315d69f719fce06be

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 19e6ba157bc15d48f8d6f8be25f200d3a0858ae655e54a30bd423ca0d3aa5659
MD5 13dbbedef03f15b4846fcd028edbeac7
BLAKE2b-256 81055a57db959ee902d2e938ea88c4a09a6ad3cca65a73c80528b412bf48aabb

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f862f0a1a9ad60966fdc37ee61c233da105e6776da70da81c010adc082743798
MD5 d948588d729b2fa612c28dd5b2aad9a8
BLAKE2b-256 e2f4203e0df0f5ecbfd2c6f3b73bf42daab32aa11ce0dfc83de0867cf16d145f

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 76de6b14aaf5a2578bc03d7d2118235b8c668cc3aeab4fdc48fda1f189f31f1c
MD5 570877ccc71f90f5734933a5334a1c10
BLAKE2b-256 d113e4dffa3355f343f335f261fa1555ea5d49df358c23c9b92e8ebf2ff76f1d

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 536f8448c26d9af2747fc10f7ed8f9b308c840afbae14c617a1af9e02e5eb3ed
MD5 417726fcee6130a104f34c0d412d3807
BLAKE2b-256 0298dc9632766ead0a5bcedf392649276fcb5cbf507ca6449cc94ee943fea612

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c48c61c0feb952347486816a0fe5d2712a1f57a427ed28cf845c570135d592c3
MD5 5c71f81d94707715870dc483b03a7a99
BLAKE2b-256 a6056d38cd2671bd9dade407dbdd9b15be0a2e4925b744a9727cafdc2a887bea

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 27d8ffaa871ba67ca599008692926bb45b964f1eedd83021699a137a0d510a7f
MD5 43e5f0ae2ff24ea1da7122256c0bc295
BLAKE2b-256 589fed69351cc9b77c4c5d683a548d9fb0ceb7b4b0f5c3dee105cca6a569260f

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.12-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 606b0fb2d58a0b15419432a3714020b8c60fc6a829d9d1e962ae21c769e95dad
MD5 a87ef1caf75f7a251fa4b15c902dcb11
BLAKE2b-256 0ef88c0d416bdb69b1360cc4f98a791bee9a3e694f0234fabc77344763513e71

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page