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.8.tar.gz (67.0 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.8-cp313-cp313-win_amd64.whl (70.8 kB view details)

Uploaded CPython 3.13Windows x86-64

numpy_quaternion-2024.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_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.8-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.8-cp313-cp313-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpy_quaternion-2024.0.8-cp313-cp313-macosx_10_13_x86_64.whl (61.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numpy_quaternion-2024.0.8-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.8-cp312-cp312-win_amd64.whl (70.8 kB view details)

Uploaded CPython 3.12Windows x86-64

numpy_quaternion-2024.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_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.8-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.8-cp312-cp312-macosx_11_0_arm64.whl (55.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpy_quaternion-2024.0.8-cp312-cp312-macosx_10_13_x86_64.whl (61.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numpy_quaternion-2024.0.8-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.8-cp311-cp311-win_amd64.whl (70.8 kB view details)

Uploaded CPython 3.11Windows x86-64

numpy_quaternion-2024.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_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.8-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.8-cp311-cp311-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpy_quaternion-2024.0.8-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.8-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.8-cp310-cp310-win_amd64.whl (70.8 kB view details)

Uploaded CPython 3.10Windows x86-64

numpy_quaternion-2024.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_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.8-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.8-cp310-cp310-macosx_11_0_arm64.whl (55.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

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

File hashes

Hashes for numpy_quaternion-2024.0.8.tar.gz
Algorithm Hash digest
SHA256 764b97a1be816671b5308777efde7dfbcfa9dab0d650d454ce0314e0879434ac
MD5 eee58a1150122a7808a38af50530ee15
BLAKE2b-256 593c0dc1f644316f623fcb3d60f07cc62bfd6bec879fff1d1cd56c376c21511a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 10022a65ac2429b8152f99854e7ee2ede054a5af3d16931c43723f694c2ec580
MD5 a48e5b361b56af13f9d4b0ff568ee2d0
BLAKE2b-256 130eaccf8f6596d2ffe7fe000a9e9f7f09b38782e3c6e7e3981ffcc028ac086f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ec2471dcb3f0342e67d29bfbacb939028e28f3db454c30ec4c7720a1f51ad7b9
MD5 2868d179759dd26f93838cd34ed32ce3
BLAKE2b-256 38e654289204e363505636e60a05b3f7c2b6f800bea022a999896aab927fd017

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.8-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.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11545204eba62a84a63e5e80d97c5305a525f48f6e5206b95bf38b5462db561d
MD5 4f871f9d2486ce2ddad2ad686bac44a4
BLAKE2b-256 f99429b2ec6204b76cf05b725ce16eb9bf83366ff695fae6172de8cd371f0c05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebcdc05b18ef8cb317523f17bd08d36d63c48c52b4d35871bc06500d942501e3
MD5 56e26746fd808fe55e92a89a884ba927
BLAKE2b-256 beaa063839099b24d47b7746468cbe2c2cec1d8533f8a6481a6668df4fcfe0d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 79873e7d57fd83f347438a18a9233b73df5c3c436f137c3fe26c72b98b32962c
MD5 5b87050c8246c12091e1ec9bc2666f65
BLAKE2b-256 c11d7a2bc8dfc997ce312665aabb94f9189ed7b792eec90b8286c4e004cf6361

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 e3743df6ddecd478f8e2bd12b82fa161072d90cf463286ec799040e6dcbfa183
MD5 f7b6118dcc122d425645fb11abf8a6fa
BLAKE2b-256 127ada6925e18e395be0a94ea2cd7636b5d610e5d1d5f0402b8719d76d4da0b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2380a725a74258323220b6e54394b8df7d343e63e09a041d0b1050b868a87ef5
MD5 954fd9ac611b64a934f24d26fc0bb793
BLAKE2b-256 4f9e709c8a543649b2cddd223a3a86ce5295c5a28e2194f56736c10a6c643e2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 01dc4b187b29c75e30bed97f16aa3004090d3121bf630e0f5330512e2dd6314f
MD5 0e363decb5ea1fb577895542161fe8e0
BLAKE2b-256 9184b47c5ebafe2dc57fcc30c0816297ea99b951b1ddc19fbac3b2f036807efa

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.8-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.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a259d52b3f8202e06f7baf5f61daa8f13db14ceb66f8db0e760ac651aed8d65
MD5 906980a7d8c2fe0bf336fc6c0ce1fa22
BLAKE2b-256 fc51663806320ba15cc2fbfd46d274e9a4f303f6c918748120f682d9cf32e164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d94e42758997f52f3b2d9edd7eb6017f8280e1287ec174728353d8145d0a2d86
MD5 908ddadf5a62a8223bacdc6fa2a4c636
BLAKE2b-256 d112a104247d11170678d00cf70efbd3f595147c2feae041b461531668360ab5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c453ce0b91a8bbfe76dc4497208dddcff2d16194c4b61b673b3ab7c73700c515
MD5 75fc2ce80ddb6915c428bbd9ea8ee2db
BLAKE2b-256 6a39a9a53581742464cd3b8a77642b0003c952946699b288e73e5c2cfd089c4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 bbb684330b5fd01c31a8c8468fc70538efd222ed2ff7a9b1b03175c674456d9d
MD5 19b4576b03a36f4b136048184be14b50
BLAKE2b-256 555a4cb390ab47d664e350b562b832a5f63eed9c8ac0bb59780efdda7f7ad951

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bfb6b64fed1aeb1b1c6aa35b448dce7b477d9b6fa4ed01779632ab1453d41b6f
MD5 072c791b51851acc9685052ac0654013
BLAKE2b-256 e0dfb37c67b9e80cc7ed79af178140e1f32be58ac237f59d153a8c96986aaf2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4afae9f037433dedf4b243d111a8593cc17bf9ea32eb064f3e0ff2795f0d8ba8
MD5 5371224e9736d1e19cfa25facf549834
BLAKE2b-256 e0fd17663a3ef4500262fc22aa6354502b4a8a64d9077d31f82bed255c9719c9

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.8-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.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7e0e3f52eaabcc3b7913bc8354144c716a20b2fe0fae79e124224d772e3f6ef
MD5 afefc8a083968fec9fcbdf0722db2462
BLAKE2b-256 536e573d7c966ce8a1228324cda19d1b78cc65ad631ac70873e902f909701d4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01bb3acdf553ee383bbc727ee8d0adec49b1431a4843c1986341120daeebf45d
MD5 f93bb3a772cec199f3aa5fc98ff71a0e
BLAKE2b-256 e026e6bcf53c7f4ab335b010bf46759ef79a1b9e63e642e24532ac730901c58c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7363f4bae3f58831e6a7fac0e65abeccaf2b696f2b1b853b8bb13ee45e7443d0
MD5 31a92669a883c3632d9a8f807c9e18ee
BLAKE2b-256 dcf3f88fe604f0e57a65b2814cc55236fa2e4d1e72a187c8ee69c0ffcac2a10b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 70add0f99f4f92d3d6c692f5f646c44c663749c4de60ff12c8f769e41ab6ff71
MD5 5cce805d909a6f90b35432f53aa6a899
BLAKE2b-256 6969df5b0665adf80bb649683b0689142bef97440784dc219dd62da34cf5e9f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e532967d55b590fe72700716574870c9b835c45cf1ea6782a3e16af274cf8e7a
MD5 1715cfdf9ad5f044161bfe02ac405baf
BLAKE2b-256 accd6f58c208eae246980aec557de5a672ad172b1dc26dc9b163c007188a5ccc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 72ddc41a8fcd6f22ed666f6cd581f15cd83f578a9dfe58e8c057beafb6e131d3
MD5 746c7d61eab567ed5d41391ecd3d6216
BLAKE2b-256 3247448ab33347c901e3a81f04a48ec8819cbf14ef649f8082633735ec176bd6

See more details on using hashes here.

File details

Details for the file numpy_quaternion-2024.0.8-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.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d380d29c5a977ea3d392aa6104bb95686e203e45fd5a9f0e4e6e1291bca50272
MD5 4edd3ed1fbe2875b2349dd371c98d002
BLAKE2b-256 d6c096b62616291161fab35622df7ecf85496d2f477c3b69c659ab8d45fe1301

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c31235c4089ba0b9efb9fce281302ed1a456b46f50019f36cf60f3f73cc4c9d8
MD5 aa9828c0442608b47641b12b36dae8d4
BLAKE2b-256 5da1054e48212b1769c093363c571008b6999af30e86746434389e36dcb9d9cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 776e7326d6c00fd9c7c4fad0d2bdae36a2a81e23cca807b91fc135d8408b9301
MD5 fc580b8b681c1dffc8e3cecef5fc77f3
BLAKE2b-256 139b8d68ce72458f66e9e2db6a8112329e7b85cf6afa52d309f52b59f1437e4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for numpy_quaternion-2024.0.8-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 92fe61f01a3247727ef2a247fc32d0434ead797423fb78a723db37ac0bd3ae71
MD5 de60a3d432f2aaae4ba8f432ef59290e
BLAKE2b-256 20dcee73213c5a7109404a23d784b81d0fe5ff0d5affb0cdd1e691e1f367627d

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