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.10.tar.gz (67.3 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.13Windows x86-64

numpy_quaternion-2024.0.10-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.10-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.10-cp313-cp313-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpy_quaternion-2024.0.10-cp313-cp313-macosx_10_13_x86_64.whl (61.5 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numpy_quaternion-2024.0.10-cp313-cp313-macosx_10_13_universal2.whl (86.6 kB view details)

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

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

Uploaded CPython 3.12Windows x86-64

numpy_quaternion-2024.0.10-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.10-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.10-cp312-cp312-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpy_quaternion-2024.0.10-cp312-cp312-macosx_10_13_x86_64.whl (61.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numpy_quaternion-2024.0.10-cp312-cp312-macosx_10_13_universal2.whl (86.6 kB view details)

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

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

Uploaded CPython 3.11Windows x86-64

numpy_quaternion-2024.0.10-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.10-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.10-cp311-cp311-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpy_quaternion-2024.0.10-cp311-cp311-macosx_10_9_x86_64.whl (61.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numpy_quaternion-2024.0.10-cp311-cp311-macosx_10_9_universal2.whl (86.3 kB view details)

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

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

Uploaded CPython 3.10Windows x86-64

numpy_quaternion-2024.0.10-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.10-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.10-cp310-cp310-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numpy_quaternion-2024.0.10-cp310-cp310-macosx_10_9_x86_64.whl (61.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

numpy_quaternion-2024.0.10-cp310-cp310-macosx_10_9_universal2.whl (86.3 kB view details)

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

File details

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

File metadata

  • Download URL: numpy_quaternion-2024.0.10.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.10.tar.gz
Algorithm Hash digest
SHA256 248f9c94021253a702ef19ccbd839be9949a061de1cb91eb4ee30420a3699555
MD5 7773216bc12d168ccad153cb899abd14
BLAKE2b-256 d73aa9ea5a3def3c7da982df3f1c3cd453d9e0534008c4ab8621286735bb4a90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ba9140a3cd1032d78c708201bb3a86d38cd7524f90a367a2b9a225362ff654e3
MD5 04dbd40a3f353edc5c36de42bfab399a
BLAKE2b-256 2c81fbf5598f8ed2031a4b4f6310c76a2c735a908199c522a6f2fc975380fce4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b4d6bce6709263fcac095ef837812a136054d399f8e51fd43d90dcbb17f8e4f3
MD5 d0d9116e0d777b10e6f08fec916fe6af
BLAKE2b-256 b81d1ec9102cd05d26bb79ba08a5104be612cef7618f62bb4e98123604fb97b3

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.10-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.10-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c096d2b5354101a8318d07a5c7252b6e302bae04cd0c45c62c51ba24bf4234f3
MD5 7797533da0fdf61b883cb0abf4166264
BLAKE2b-256 66f1a65e59e4946242134533f81c7a3543a5e9482709ec1a7908e0f3cdda0c76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 082a3bc4d409e3041473e3bf5d3c4a1eed167899c2e6848a52105fc0d6f8f833
MD5 502ee0dda942a8c75f1ae65e9b7ac544
BLAKE2b-256 3368cb9f39b46fc82d34b48baca9d8e86109134b8653233061de6b6f7e4c0753

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 970b65ace2905524a2f89fa2e5b6ee60c4a417def242833a9cf41e89160a6a4c
MD5 9fc5978b3a6c2375547b0251293a601a
BLAKE2b-256 1416280172a3169ae4fe930c6852891bf09f163b3416bf1a6edbd3efff2aacb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 32d900d3d1198370b3e84faddf1083f3746bff10cfbb760f394476ee8ca55803
MD5 bdd35f751877fdf9066de3ce92b62299
BLAKE2b-256 9d62629f1fd0808e4319df294cecdd87ad1dbee6e97ab1225b9bd5d1aa70cb57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 af63382fabf903826733d44319cfcef899e241532307f41838d1b9cac86ac20a
MD5 10fc9a209b76230bab817ed03c3b5d64
BLAKE2b-256 41080ad90f9bf4902beb89a52a91794ab0e5cb6e8b6f838f2d9a756f40b16cba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a3345437e7f04a2003ae21d585b5dbbb12ac1ca7b51b0bceca2bd6710b33bf75
MD5 3aea5cad362ecd8d1597eaa259064b23
BLAKE2b-256 179a2be61607c78a1b31448393271fb497b0e7c5df4ae41fb37dae6c68857dba

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.10-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.10-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 04774348a74f4afe15d049fb7a0f533c0b92b9f77031e6b133e8707d431e3be4
MD5 77074c607010ad3bb715c4eebfa608a4
BLAKE2b-256 146e99047f09f1fa50e51a9184b051626610244c86c544c4e880bf65876d020e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 193bb77c026ecc15d5b1918bfcd74dad9821970d2fdc4ba9d94d9341622d60d2
MD5 f426c95ab83d0f3ac5fa545c1e2e39fd
BLAKE2b-256 5d130ae19f4b0d3c659f6332a4486b447712d3b9459e190b77d27b83b4d8fd53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b08101ceee8d4725766a1738a156370fbb730aefac2fd85d3991ede864e98bc5
MD5 939cba7e98ae6634d205011f42ff04e0
BLAKE2b-256 632742474afd8cfda5c1e225dc5be5f247408ca3aa3d4145afb6194a944fa152

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 979a9f6874730efd8e27df2423d1595b77bba737a1d43aaf441e8b558be5b33e
MD5 c9f74bf50727666b540831d72037e0e8
BLAKE2b-256 c86b91a514067642bdd0f54aa7fecb0185b2d632c021b4e7e45478192cd97db7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0915fd725f145b547484dd05e232f2c0e7c8b120c8ee054f4b67ca6ff46bc23b
MD5 03d8d5ad8cee278d3d4d7562f5a9ff4e
BLAKE2b-256 c25416002c3fc23dbbc0e7d60297f64d942941703ab924e21cf8fa6f08a8db47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 618ee5d2183fc22780393caacb462f0b531b9ba5d4277182b85b19f8188ab04c
MD5 ffef547962489049c59630c958bf7fc9
BLAKE2b-256 8567d11ddfbda6f7c652e53f40efad9ccb63f74124d07748f275900703022271

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.10-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.10-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a4e3a9e725bf05fdb736e2b295370c8ef88151115ff33076dc141e6bb741dc9d
MD5 6814ff60d22c6572ba030642ba9fde2e
BLAKE2b-256 d112670f05e60f58e3b3442f9b24280b393a17dd777d67313d343ecd74d224fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd4e7f98ab617406d7130fb1ff6a68545bedc7073bf0d5513eac14480ee9197d
MD5 6b8d9f7ef40af504c4b5866833dfa9bb
BLAKE2b-256 a917f2d2681befdab767f7479dff5b331c02325b54f56bc3a9d73f75aa295d28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d62053aaa4842c3512b42f2ac8b895031abe86e3ec226c863ae57cfc5585dce9
MD5 2dba3fc031c5128962be948ca4b1b22f
BLAKE2b-256 45f9a0db0b7ef5260a0b7f189c7d0ca040694d0150b11acc8ef7707633bdfea4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4a928a30995b2f7120e4e0dc64fa695b6bb2de435f405771de1d4ec3f84e0f0e
MD5 b1c7c96eedd73cd894d6ed832607335e
BLAKE2b-256 5d9457c5b0b4b655fb3a5c9f33082d5a7d896e4982a4071c526f7d2ab0d5495c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8aff19e0f806aa542638ecc3d8456125adb30d214d605ef8392f95abc293d259
MD5 b4218bc415d4d25ea8158dbb6f1076d0
BLAKE2b-256 3af879811455810453fa155c833b986044bbae5658db45c3cd229212839c3b86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 170a149d0da4866d26e529348753e5130ca05120c407a0fdf72d0a85a039c427
MD5 c2f41716ebef76c69385b7bb8ff0c36f
BLAKE2b-256 77504a6263f46015e498b671020f858efc1bc1e5b7cf2dabf90ac60e77f831fd

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.10-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.10-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 288a3747d8f86dad921d4e0c548e4c5c9a43567d5ba76beade73aea15a48c8e2
MD5 61838d6aec02ef1051e4b02c06312598
BLAKE2b-256 bd422c4b98cdbb32923c057b5a1886f6ad157f5ed987726adb5b033006251fec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b18181102aadd88bcdab9af7e213bf82bd893179622b06ee50b256720c9862f
MD5 17194616fc53ca07fba70b621cea8ade
BLAKE2b-256 ee7761280608b50d717e706b9e8b05c371724b0e5b2fe2f6d1fd7dc72d8546e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5da407ea9cc441b2d48f39ed60f2b3363829008cdb8b80bd848fadfdadc84d47
MD5 5e76b44f4170b8ab12e3c46341bce2ac
BLAKE2b-256 73e1d8d03ea47b2397e950dbf525f14711d4563b2ea0749d990b0dda6a5890d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.10-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 32674b7c27c845f5652471578b0680ffb10361a3e91b2fb4db9db727f23facbd
MD5 cc328f48bffcc25f31990d6cc597946b
BLAKE2b-256 524405683b99e07419cb876bffc57902b96bf366be761b6b695cd2b8528e2c9d

See more details on using hashes here.

Supported by

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