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.7.tar.gz (67.1 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.7-cp313-cp313-win_amd64.whl (70.7 kB view details)

Uploaded CPython 3.13Windows x86-64

numpy_quaternion-2024.0.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (183.2 kB view details)

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

numpy_quaternion-2024.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (200.8 kB view details)

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

numpy_quaternion-2024.0.7-cp313-cp313-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpy_quaternion-2024.0.7-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.7-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.7-cp312-cp312-win_amd64.whl (70.7 kB view details)

Uploaded CPython 3.12Windows x86-64

numpy_quaternion-2024.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (183.1 kB view details)

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

numpy_quaternion-2024.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (200.8 kB view details)

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

numpy_quaternion-2024.0.7-cp312-cp312-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpy_quaternion-2024.0.7-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.7-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.7-cp311-cp311-win_amd64.whl (70.6 kB view details)

Uploaded CPython 3.11Windows x86-64

numpy_quaternion-2024.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (181.3 kB view details)

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

numpy_quaternion-2024.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (199.0 kB view details)

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

numpy_quaternion-2024.0.7-cp311-cp311-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpy_quaternion-2024.0.7-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.7-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.7-cp310-cp310-win_amd64.whl (70.6 kB view details)

Uploaded CPython 3.10Windows x86-64

numpy_quaternion-2024.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (180.4 kB view details)

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

numpy_quaternion-2024.0.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (197.8 kB view details)

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

numpy_quaternion-2024.0.7-cp310-cp310-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numpy_quaternion-2024.0.7-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.7-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.7.tar.gz.

File metadata

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

File hashes

Hashes for numpy_quaternion-2024.0.7.tar.gz
Algorithm Hash digest
SHA256 99f4c401c0330fb15b9c718b1b372248dd22dcd475fc0bd7dcff2fdcb688c257
MD5 90ff0bbbd3a59f00cfc8876900633414
BLAKE2b-256 b2136de81c3ab57104353235fb3d9bc2848b097949a51995f85a05e75df96861

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8882d38cb83c4a26d6ad3871de0e900f4c0038c3fe9215a4ab2a99b7f8a7b649
MD5 a1daf5b39fe2eaaf447d37a7f9beb3a9
BLAKE2b-256 0eee80e3cc553e38ad7fd53efa0e1e71aa012f71349243991de57805a3195990

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae4e0deec584203ce05046b8409ac46b1d6441b77b6e006b9baa487198fb444c
MD5 ccff22e2b8d0ed4f75e03fe86c0d8e48
BLAKE2b-256 cd5f398caf9cfc0c7ea765bf223c05c651a5eb5ee988b44c886e8e02b3794382

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8364545295288bbebdde43e98ee5c89d78f633a8c74f74b96c0aad360bee6b1
MD5 b27689afcca207a101f6549e5f23a5f6
BLAKE2b-256 1a1af1a3a2fb3a7c6b31273441963e8b7ff1ef9c08f5626ff903c0d8f13affd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d5c72da1d8b83e6f6b89c7654cb644640b2ea47ab67438586b716549187c180
MD5 025b5e473324a9afabb9bf601eec1489
BLAKE2b-256 531216b30ee72001c8e77ef75cce4e6909c0e6064e2ffeaaacdd08e60e564ff3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6c622b619f56dde3f3fc14b6ffeaf7262b14fb30e56c6bd8b0a7349f4539e5fb
MD5 0a5aadf840963af16a2c67a51adc5b95
BLAKE2b-256 aa0120ff23f8a056aa8523cae38d72f70b79a82a3d77b6365504c0339062aac1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 4c8f1406f5c45d2d8ebf5eb13590e14b302079f1fc618cb6fe9c7211cd46e423
MD5 a25ada3d8169f7108d73a4f9b3e96127
BLAKE2b-256 7f6ebdca1b8070bb473031c10472db0ca43411e81f9bdd32dfc9ea333aa77233

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 218f8c7a05f5470c3af2103cbb1ea4514f1873a0c1cd892925050bf3fad90baf
MD5 6572e7a584ce1a9a3314c83c28196b1f
BLAKE2b-256 86f250e67c671cc600c247c0b77b119efe1a63cb4fec3f85d2069e8e539f561c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d9039c9af36c3b62254dfc3b81d385230b40fea9185fd4f21ce10fbb228f1f6b
MD5 18bc409b0afa8deebf7ee7c12fc31dea
BLAKE2b-256 6529eb578bbd9440515f41a2d74202db814cfff9536fec8e27b2c3a9276692bb

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90c5eee4decd0734c64b7ceb8d28ab890e3c9788cf29a43a2877b90aa68fb953
MD5 040f5ebf6f34071ec626e3d621df6499
BLAKE2b-256 7e6f382cb16997022fbc4fc3231d0ffc1cfc5b5f066dabfd4176cf8ea02d301a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2ecec730760418601c0aa2a8cabdac4b825bc3530666e3e7dcb64b1c532a97b
MD5 366f0d89aa927eaf6468c9d9219fad3a
BLAKE2b-256 2102b933b8ce8a8c2f16f786f11baec073251816175c6454f2f8e36051c81576

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8aa2a089fec3b69db6fab3ae28f606897c3120cf4390e38685ae85f484d71959
MD5 e53448b96de467641a81d3906d96877f
BLAKE2b-256 19c873a701a540df95f422539235882c0521d20e365a49916544712f5a04d1bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 de3fcf7951712bdb1555397a98cd694dbec69cf583224ade81e9d4b0936563d0
MD5 854207ffa8f1414cafae1424b4f896a1
BLAKE2b-256 f8f5a8648ce88a311bebcd5c8a7743f3085198d9690b14b558666fb469164071

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a41dc7eea3c56f46bf862bc5c6aa073379aeabe52547fde9e72f3995aa913394
MD5 b7f312e2cc6f78ed24d958b643101626
BLAKE2b-256 f8fe41ced77cf9e207f1746e30affcdd1f049da6273a55887a6dfe2c85b7e3fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b1e997672eed5a8b7e31fe6aa16190f59858dd3873837f250bd621974786441c
MD5 42af40c5526e6a889144410e0cf394b0
BLAKE2b-256 f8bad8a0990f93405c854f4189531290f410bc839ec75d3e6cc48f6b87d39187

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0dd12286856f02cd816a8d85c7fcca89d5ad0f138a32c6c0b8e6de9e6d14bf18
MD5 c37a751736acbd7cf224c51bc2166d0f
BLAKE2b-256 111c42783130abe8d714e38c9040c202a12f70b1f68c72a32462966f7c7cd3a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c1d58980e2e3a876871f9470530138130e564f3ffd8b371ab52566e6374638d
MD5 ab5f43cdd419f1ac74c06ee5cd31fda3
BLAKE2b-256 35a1e3747560ff8f6307f4c8f7f9756d07f44cbac421579afd5aeadf62bcaad0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0ca45798d0db0f6bd9308d625e76064c266b30db1af4f5ea26835183617cb26d
MD5 15135f6f9f9bf4ac1b4999511fcc809d
BLAKE2b-256 6bef88b72291615260dfd74fcefab40877617798495e48c44d3a3f7a43619570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e4efe47dd87a5362d648f1051402d448f564e0f14b33a3c48cfad87be5983582
MD5 e99a9bf9ace849a7334e116991e0a403
BLAKE2b-256 ccab4c974b2065950768cf8c0cbeb9a0709ab93447627a90cf32e3642795d7b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3dbc05633869729b76cd8146b902572d5b9cb82ba17e0ab8cacc32f3697bbaf8
MD5 d1a4163d504a29a4fdff71f881fa67de
BLAKE2b-256 54a01492b7f71d36d7b1a5152589e1c7ac4ccac880867f471250d561b690e90a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c612dcb4ce2bad22598b9ec79b107f8bc3c38014481d8b9f62da1d92bb8bd06c
MD5 b449dcc7adcbb3678fc8d7ccb22e3f4a
BLAKE2b-256 652462b52d8a63b5a6c5992c00365ffc20d28f8528f9fd0d9642803de8add353

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f797aceb9755b606b7c8a0a621bb429e7c2a90fb5ac98328d62445d4ce6e770
MD5 b659a8b7980b9befd49428cf083264cd
BLAKE2b-256 9efa853a60e0229f53e1f8f455101e224ba4c3330ec7a7f5a5bebbc2f7cdfbef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af69d6f00bdaafd6b2070c6c1d1dd98a94a8472426fdb445ad12b11930c29e0a
MD5 342d764eb09272b4be5dec0f997753ec
BLAKE2b-256 d4ec211a51287543e5f93aae726683fff37f66b0d4d8270a7b9bd6c50ea25d2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4cab18390df402ed9fffcdfbde02b823270166a731102f21c92db6b3acda9ed9
MD5 d72ba88734a6847a6cc151d4844ed3a0
BLAKE2b-256 e076a539fdab99bc995ba1e5faa266c6676b2caf84fd9f13ac7d7ec9ee32cbe0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3ac9da23e853cac65285cecb350d008c074099f7157053f4376bbcea729b3e1e
MD5 0d3ce3f490bc61783077c4aad4965ca0
BLAKE2b-256 377ec3e2525b22c8b8aa74aea30d4f7def449815884c8896dcf3ad46e950182f

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