simple-vec3: Three-dimensional vectors of doubles with basic operations

[ bsd3, library, math, numerical ] [ Propose Tags ]

Simple three-dimensional vectors of doubles with basic vector and matrix operations, supporting Data.Vector.Unboxed and Data.Vector.Storable.


[Skip to Readme]
Versions 0.1.0.0, 0.1.0.1, 0.2, 0.3, 0.3.1, 0.4, 0.4.0.1, 0.4.0.2, 0.4.0.3, 0.4.0.4, 0.4.0.5, 0.4.0.6, 0.4.0.7, 0.4.0.8
Change log CHANGELOG.md
Dependencies base (<5), QuickCheck (<2.12), vector (<0.13) [details]
License BSD-3-Clause
Author Dmitry Dzhus
Maintainer dima@dzhus.org
Category Math, Numerical
Home page https://github.com/dzhus/simple-vec3#readme
Bug tracker https://github.com/dzhus/simple-vec3/issues
Source repo head: git clone https://github.com/dzhus/simple-vec3
Uploaded by DmitryDzhus at Sat Jul 21 11:55:46 UTC 2018
Distributions LTSHaskell:0.4.0.8, NixOS:0.4.0.8, Stackage:0.4.0.8
Downloads 1611 total (38 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-07-21 [all 1 reports]
Hackage Matrix CI

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for simple-vec3-0.4.0.8

[back to package description]

simple-vec3

Travis CI build status Hackage Hackage deps

Simple three-dimensional vectors of doubles with basic vector and matrix operations, supporting Data.Vector.Unboxed and Data.Vector.Storable.

>>> let v1 = (-1, 0.0,  0.2) :: TVec3
>>> let v2 = ( 1, 2.3,  5.0) :: TVec3
>>> let v3 = ( 1,   1, -0.2) :: TVec3

-- Add two vectors:
>>> v1 <+> v2
(0.0, 2.3, 5.2)

-- Dot product:
>>> v1 .* v2
0.0

-- Multiply by a scalar:
>>> v1 .^ 5
(-5.0, 0.0, 1.0)

-- Cross product:
>>> v1 >< v3
(-0.2, 0.0, -1.0)

-- Matrix-vector product:
>>> diag 2 `mxv` v2
(2.0, 4.6, 10.0)

Please consult the Hackage page for simple-vec3 for full documentation.

The package provides two different implementations for Vec3 type class, which differ in storage scheme. Benchmarks are included for both. You most likely want to use CVec3 which is based on contiguous storage scheme and offers the best performance.

simple-vec3 benchmarks

Alternatives

This package was written to explore and benchmark different array storage schemes in Haskell, as supported by vector library. Several alternatives with more extensive APIs exist: