Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- type ComplexVector3 a = (Vector3 :*: Complex) a
- dim3 :: Vector3 Integer
- i3 :: Num a => Vector3 a
- j3 :: Num a => Vector3 a
- k3 :: Num a => Vector3 a
- type Matrix3 a = (Vector3 :*: Vector3) a
- vec3 :: (a, a, a) -> Vector3 a
- finite3 :: Vector3 a -> Vec 3 a
- constant3 :: a -> Vector3 a
- vec3Unit :: a -> Scalar (Vector3 a)
- vec3Counit :: Vector3 (Scalar (Vector3 a)) -> Vector3 a
- destructvec3 :: Vector3 a -> (a, a, a)
- setx3 :: s -> Vector3 s -> Vector3 s
- sety3 :: s -> Vector3 s -> Vector3 s
- setz3 :: s -> Vector3 s -> Vector3 s
- set_endo :: Vector3 s -> Vector3 (Endo (Vector3 s))
- set_vector_action :: Vector3 s -> Vector3 (Vector3 s -> Vector3 s)
- update_row3 :: g a -> Vector3 ((Vector3 :*: g) a -> (Vector3 :*: g) a)
- update_column3 :: Applicative f => f a -> Vector3 ((f :*: Vector3) a -> (f :*: Vector3) a)
- removex3 :: Vector3 a -> Vector2 a
- removey3 :: Vector3 a -> Vector2 a
- removez3 :: Vector3 a -> Vector2 a
- remove3 :: Vector3 (Vector3 a -> Vector2 a)
- remove_index3 :: Matrix3 a -> Matrix3 (Matrix2 a)
- cofactor3 :: Num a => Matrix3 a -> Matrix3 a
- adjucate3 :: Num a => Matrix3 a -> Matrix3 a
- inverse3 :: Fractional a => Matrix3 a -> Matrix3 a
- set3 :: Vector3 a -> Vector3 a -> (Vector3 :*: Vector3) a
- swap3 :: (Vector3 :*: Vector3) (Vector3 a -> Vector3 a)
- mul3 :: VectorSpace s => Scalar s -> Vector3 (Vector3 s -> Vector3 s)
- add3Matrix :: VectorSpace a => Scalar a -> ((Vector3 :*: Vector3) :*: Vector3) a -> ((Vector3 :*: Vector3) :*: Vector3) a
- add3 :: VectorSpace s => Scalar s -> (Vector3 :*: Vector3) (Vector3 s -> Vector3 s)
- swapxy3 :: Vector3 a -> Vector3 a
- swapxz3 :: Vector3 a -> Vector3 a
- swapyz3 :: Vector3 a -> Vector3 a
- mul3Matrix :: (Num a, VectorSpace a) => Scalar a -> Vector3 ((Vector3 :*: Vector3) a)
- signs3 :: Integral a => Matrix3 a
- dx3_endo :: Num a => a -> Endo (Vector3 a)
- dy3_endo :: Num a => a -> Endo (Vector3 a)
- dz3_endo :: Num a => a -> Endo (Vector3 a)
- dx3 :: Num a => a -> Vector3 a -> Vector3 a
- dy3 :: Num a => a -> Vector3 a -> Vector3 a
- dz3 :: Num a => a -> Vector3 a -> Vector3 a
- op_dot :: Num b => Vector3 (a -> b) -> a -> b
- applicative_matrix :: Num b => Vector3 (b -> b) -> (Vector3 :*: Vector3) b
- sum_coordinates3 :: Num a => Vector3 a -> a
- cube_norm3 :: Floating a => Vector3 a -> a
- nth_norm3 :: Floating a => a -> Vector3 a -> a
- index3 :: Vector3 (Vector3 a -> a)
- mapBasis :: Num a => (Vector3 a -> Vector3 a) -> Vector3 a -> Vector3 a
- functionMatrix3 :: Num a => (Vector3 a -> Vector3 a) -> Matrix3 a
- splitx :: Vector3 s -> (Vector2 s, Vector1 s)
- splity :: Vector3 s -> (Vector2 s, Vector1 s)
- splitz :: Vector3 s -> (Vector2 s, Vector1 s)
- trace3 :: Num a => Matrix3 a -> a
- vector3 :: [a] -> Vector3 a
- cross_product :: Num a => Vector3 a -> Vector3 a -> Vector3 a
- cross_product3 :: Num a => (Vector2 :*: Vector3) a -> Vector3 a
- xid :: Num a => Vector3 a
- yid :: Num a => Vector3 a
- zid :: Num a => Vector3 a
- identity3 :: Num a => Matrix3 a
- matrix_power3 :: (ConjugateSymmetric a, Num a) => Matrix3 a -> Integer -> Matrix3 a
- vector_indices3 :: Integral a => Vector3 a
- matrix_indices3 :: Integral a => (Vector3 :*: Vector3) (a, a)
- matrix_multiply3 :: (ConjugateSymmetric a, Num a) => Matrix3 a -> Matrix3 a -> Matrix3 a
- dot3 :: (Num a, ConjugateSymmetric a) => Vector3 a -> Vector3 a -> a
- left_multiply3_gen :: (Functor f, Num a, ConjugateSymmetric a) => Vector3 a -> (f :*: Vector3) a -> f a
- right_multiply3_gen :: (VectorSpace (f a), ConjugateSymmetric a, Scalar (f a) ~ a) => (Vector3 :*: f) a -> Vector3 a -> f a
- left_multiply3 :: (Num a, ConjugateSymmetric a) => Vector3 a -> Matrix3 a -> Vector3 a
- right_multiply3 :: (Num a, ConjugateSymmetric a) => Matrix3 a -> Vector3 a -> Vector3 a
- transpose3 :: Num a => Matrix3 a -> Matrix3 a
- transpose3_impl :: Matrix3 a -> Matrix3 a
- outer3 :: (a -> b -> c) -> Vector3 a -> Vector3 b -> Matrix3 c
- zipWithV3 :: (a -> b -> c) -> Vector3 a -> Vector3 b -> Vector3 c
- rotate_x :: Floating a => a -> Matrix3 a
- rotate_y :: Floating a => a -> Matrix3 a
- rotate_z :: Floating a => a -> Matrix3 a
- rotate_coordinates3 :: Vector3 a -> Vector3 a
- zero_codiagonal3 :: Num a => Codiagonal Vector3 a
- diagonal_matrix3 :: Num a => Vector3 a -> (Vector3 :*: Vector3) a
- matrix3 :: Vector3 a -> Codiagonal Vector3 a -> (Vector3 :*: Vector3) a
- codiag3 :: Matrix3 a -> Codiagonal Vector3 a
- codiagonal3 :: Matrix3 a -> Vector2 (Vector2 a, Vector2 a)
- diagonal3 :: Matrix3 a -> Vector3 a
- diagonal_projections3 :: Num a => Vector3 (Index Vector3 a)
- diagonal3x :: Num a => Matrix3 a -> Vector3 a
- diagonal3y :: Num a => Matrix3 a -> Vector3 a
- diagonal3z :: Num a => Matrix3 a -> Vector3 a
- determinant3 :: Num a => Matrix3 a -> a
- determinant3_ :: Num a => Matrix3 a -> a
- gram_schmidt3 :: (Fractional (Scalar a), Num a, InnerProductSpace a, VectorSpace a) => Vector3 a -> Vector3 a
- eigenvalue3 :: (Floating a, Ord a, ConjugateSymmetric a) => (Vector3 :*: Vector3) a -> Vector3 a
- levi_civita3 :: ((Vector3 :*: Vector3) :*: Vector3) Int
- cycle3 :: StreamBuilder str => Vector3 a -> str a
Documentation
destructvec3 :: Vector3 a -> (a, a, a) Source #
update_row3 :: g a -> Vector3 ((Vector3 :*: g) a -> (Vector3 :*: g) a) Source #
update_column3 v is a vector of all update operations that replace one row with v
update_column3 :: Applicative f => f a -> Vector3 ((f :*: Vector3) a -> (f :*: Vector3) a) Source #
update_column3 v is a vector of all update operations that replace one column with v
example use:
update_column3 (Vector3 3 4 5) ycoord3
identity3 == [[1,3,0],[0,4,0],[0,5,1]].
add3Matrix :: VectorSpace a => Scalar a -> ((Vector3 :*: Vector3) :*: Vector3) a -> ((Vector3 :*: Vector3) :*: Vector3) a Source #
mul3Matrix :: (Num a, VectorSpace a) => Scalar a -> Vector3 ((Vector3 :*: Vector3) a) Source #
sum_coordinates3 :: Num a => Vector3 a -> a Source #
cube_norm3 :: Floating a => Vector3 a -> a Source #
cube root of a sum of cubes.
cross_product :: Num a => Vector3 a -> Vector3 a -> Vector3 a Source #
https://en.wikipedia.org/wiki/Cross_product WARNING: a cross product produces an axial vector. https://en.wikipedia.org/wiki/Pseudovector
cross_product3 :: Num a => (Vector2 :*: Vector3) a -> Vector3 a Source #
cross_product3 computes the three dimensional vector that is orthogonal to both rows of the 2x3 vector.
matrix_power3 :: (ConjugateSymmetric a, Num a) => Matrix3 a -> Integer -> Matrix3 a Source #
vector_indices3 :: Integral a => Vector3 a Source #
matrix_multiply3 :: (ConjugateSymmetric a, Num a) => Matrix3 a -> Matrix3 a -> Matrix3 a Source #
left_multiply3_gen :: (Functor f, Num a, ConjugateSymmetric a) => Vector3 a -> (f :*: Vector3) a -> f a Source #
right_multiply3_gen :: (VectorSpace (f a), ConjugateSymmetric a, Scalar (f a) ~ a) => (Vector3 :*: f) a -> Vector3 a -> f a Source #
left_multiply3 :: (Num a, ConjugateSymmetric a) => Vector3 a -> Matrix3 a -> Vector3 a Source #
right_multiply3 :: (Num a, ConjugateSymmetric a) => Matrix3 a -> Vector3 a -> Vector3 a Source #
transpose3_impl :: Matrix3 a -> Matrix3 a Source #
rotate_coordinates3 :: Vector3 a -> Vector3 a Source #
zero_codiagonal3 :: Num a => Codiagonal Vector3 a Source #
determinant3 :: Num a => Matrix3 a -> a Source #
algorithm from http://en.wikipedia.org/wiki/Determinant
determinant3_ :: Num a => Matrix3 a -> a Source #
gram_schmidt3 :: (Fractional (Scalar a), Num a, InnerProductSpace a, VectorSpace a) => Vector3 a -> Vector3 a Source #
eigenvalue3 :: (Floating a, Ord a, ConjugateSymmetric a) => (Vector3 :*: Vector3) a -> Vector3 a Source #
https://en.wikipedia.org/wiki/Eigenvalue_algorithm based on algorithm by Smith, Oliver K.: Eigenvalues of symmetric 3x3 matrix, 1961, Communications of the ACM., doi:10.1145/355578.366316 The algorithm works reasonably when the matrix is real and symmetric.
cycle3 :: StreamBuilder str => Vector3 a -> str a Source #