sig
exception Different_dimensions of int * int
module type Dimension = sig val length : int end
module type V =
sig
type t
val dimension : int
val get : Vector.V.t -> int -> float
val set : Vector.V.t -> int -> float -> unit
val make : float -> Vector.V.t
val from_array : float array -> Vector.V.t
val to_array : Vector.V.t -> float array
val add : Vector.V.t -> Vector.V.t -> Vector.V.t
val sub : Vector.V.t -> Vector.V.t -> Vector.V.t
val mul : Vector.V.t -> Vector.V.t -> Vector.V.t
val muls : Vector.V.t -> float -> Vector.V.t
val dot_product : Vector.V.t -> Vector.V.t -> float
val magnitude : Vector.V.t -> float
val unit_vector : Vector.V.t -> Vector.V.t
end
module Make : functor (Dim : Dimension) -> V
module DimThree : Dimension
module Three : V
val cross_product : Three.t -> Three.t -> Three.t
end