Module Phantom_algebra.Core

include Interface.S
type +_ dim
val dim_to_int : 'a dim ‑> int
type +_ rank
module Rank : sig ... end
type (+'dim, +'rank) t
val pp : Format.formatter ‑> ('dim, 'rank) t ‑> unit
type +'c scalar = ('a Type_functions.one, 'b Type_functions.z) t constraint 'c = 'a * 'b
type +'c vec2 = ('a Type_functions.two, 'b Type_functions.one) t constraint 'c = 'a * 'b
type +'c vec3 = ('a Type_functions.three, 'b Type_functions.one) t constraint 'c = 'a * 'b
type +'c vec4 = ('a Type_functions.four, 'b Type_functions.one) t constraint 'c = 'a * 'b
type +'c mat2 = ('a Type_functions.two, 'b Type_functions.two) t constraint 'c = 'a * 'b
type +'c mat3 = ('a Type_functions.three, 'b Type_functions.two) t constraint 'c = 'a * 'b
type +'c mat4 = ('a Type_functions.four, 'b Type_functions.two) t constraint 'c = 'a * 'b
val scalar : Interface.k ‑> ('a * 'b) scalar
val (~+) : Interface.k ‑> ('a * 'b) scalar
val vec2 : Interface.k ‑> Interface.k ‑> ('a * 'b) vec2
val vec3 : Interface.k ‑> Interface.k ‑> Interface.k ‑> ('a * 'b) vec3
val vec4 : Interface.k ‑> Interface.k ‑> Interface.k ‑> Interface.k ‑> ('a * 'b) vec4
val mat2 : ('a * 'b) vec2 ‑> ('c * 'd) vec2 ‑> ('e * 'f) mat2
val mat3 : ('a * 'b) vec3 ‑> ('c * 'd) vec3 ‑> ('e * 'f) vec3 ‑> ('g * 'h) mat3
val mat4 : ('a * 'b) vec4 ‑> ('c * 'd) vec4 ‑> ('e * 'f) vec4 ‑> ('g * 'h) vec4 ‑> ('i * 'j) mat4
val vec2' : ([< `one of 'a | `two of 'b ], [< `one of 'c | `zero of 'd ]) t ‑> ('e * 'f) vec2
val vec3' : ([< `one of 'a | `three of 'b | `two of 'c ], [< `one of 'd | `zero of 'e ]) t ‑> ('f * 'g) vec3
val vec4' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], [< `one of 'e | `zero of 'f ]) t ‑> ('g * 'h) vec4
val (|+|) : (([< `one of 'dim2 * [< `one of 'dim3 * 'a Type_functions.two | `three of 'dim3 * 'a Type_functions.four | `two of 'dim3 * 'a Type_functions.three ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.two | `three of 'dim3 * 'a Type_functions.four | `two of 'dim3 * 'a Type_functions.three ] | `three of 'dim2 * [< `one of 'dim3 * 'a Type_functions.four ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.four ] | `two of 'dim2 * [< `one of 'dim3 * 'a Type_functions.three | `two of 'dim3 * 'a Type_functions.four ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.three | `two of 'dim3 * 'a Type_functions.four ] ], 'dim2, 'dim3, 'a) Type_functions.nat_sum, [< `one of 'b | `zero of 'c ]) t ‑> ('dim2, [< `one of 'd | `zero of 'e ]) t ‑> ('dim3, 'f Type_functions.one) t
val map : (Interface.k ‑> Interface.k) ‑> ('dim, 'rank) t ‑> ('dim, 'rank) t
val map2 : (Interface.k ‑> Interface.k ‑> Interface.k) ‑> ('dim, 'rank) t ‑> ('dim, 'rank) t ‑> ('dim, 'rank) t
val (+) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2, 'rank3, 'dim1, 'dim2, 'dim3, 'a * 'b * 'c) Type_functions.sum) t ‑> ('dim2, 'rank2) t ‑> ('dim3, 'rank3) t
val (<+>) : ('dim, 'rank) t ‑> ('dim, 'rank) t ‑> ('dim, 'rank) t
val (~-) : ('dim, 'rank) t ‑> ('dim, 'rank) t
val (-) : ('a, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.z * 'c Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.z * 'c Type_functions.one ] ], 'rank2, 'rank3, 'dim1, 'dim2, 'dim3, 'b * 'c * 'd) Type_functions.sum) t ‑> ('a, 'rank2) t ‑> ('a, 'rank3) t
val (<->) : ('dim, 'rank) t ‑> ('dim, 'rank) t ‑> ('dim, 'rank) t
val (*) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 ] | `two of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2, 'rank3, 'dim1, 'dim2, 'dim3, 'a * 'b * 'c) Type_functions.product) t ‑> ('dim2, 'rank2) t ‑> ('dim3, 'rank3) t
val (/) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim2 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim2 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2, 'rank3, 'dim1, 'dim2, 'dim3, 'a * 'b * 'c) Type_functions.div) t ‑> ('dim2, 'rank2) t ‑> ('dim3, 'rank3) t
val (**) : ('dim, 'rank) t ‑> int ‑> ('dim, 'rank) t
val exp : ('dim, 'rank) t ‑> ('dim, 'rank) t
val (|*|) : ('dim, 'rank) t ‑> ('dim, 'rank) t ‑> Interface.k
val norm : ('dim, 'rank) t ‑> Interface.k
val normalize : ('dim, 'rank) t ‑> ('dim, 'rank) t
val orthonormalize : ('dim, 'a Type_functions.one) t list ‑> ('dim, 'b Type_functions.one) t list
val distance : ('dim, 'rank) t ‑> ('dim, 'rank) t ‑> Interface.k
val norm_1 : ('dim, 'rank) t ‑> Interface.k
val norm_q : float ‑> ('dim, 'rank) t ‑> Interface.k
val cross : (([< `three of 'dim2 * 'rank2 * 'b Type_functions.three * 'c Type_functions.one * 'dim2 * 'rank2 * 'b Type_functions.three * 'c Type_functions.one | `two of 'dim2 * 'rank2 * 'b * 'c Type_functions.z * 'dim2 * 'rank2 * 'b * 'c Type_functions.z ] as a, 'dim2 * 'rank2, 'c * 'b) Type_functions.cross, 'd Type_functions.one) t ‑> ('a, 'e Type_functions.one) t ‑> ('dim2, 'rank2) t
val (^) : ('dim, 'a Type_functions.one) t ‑> ('dim, 'b Type_functions.one) t ‑> ('dim, 'c Type_functions.two) t
val commutator : ('dim, 'a Type_functions.two) t ‑> ('dim, 'b Type_functions.two) t ‑> ('dim, 'c Type_functions.two) t
val anticommutator : ('dim, 'a Type_functions.two) t ‑> ('dim, 'b Type_functions.two) t ‑> ('dim, 'c Type_functions.two) t
val trace : ('dim, 'a Type_functions.two) t ‑> Interface.k
val det : ('dim, 'a Type_functions.two) t ‑> Interface.k
val transpose : ('dim, 'a Type_functions.two) t ‑> ('dim, 'b Type_functions.two) t
type (+'dim, +'len, +'rank, +'group) index
val (&) : ('dim, ([< `one of 'len2 * [< `one of 'len3 * 'a Type_functions.two | `three of 'len3 * 'a Type_functions.four | `two of 'len3 * 'a Type_functions.three ] * 'len2 * [< `one of 'len3 * 'a Type_functions.two | `three of 'len3 * 'a Type_functions.four | `two of 'len3 * 'a Type_functions.three ] | `three of 'len2 * [< `one of 'len3 * 'a Type_functions.four ] * 'len2 * [< `one of 'len3 * 'a Type_functions.four ] | `two of 'len2 * [< `one of 'len3 * 'a Type_functions.three | `two of 'len3 * 'a Type_functions.four ] * 'len2 * [< `one of 'len3 * 'a Type_functions.three | `two of 'len3 * 'a Type_functions.four ] ], 'len2, 'len3, 'a) Type_functions.simple_sum, 'rank, 'group) index ‑> ('dim, 'len2, 'rank, 'group) index ‑> ('dim, 'len3, 'rank, 'group) index
val x' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.one, [ `xyzw ]) index
val y' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.one, [ `xyzw ]) index
val z' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.one, [ `xyzw ]) index
val w' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.one, [ `xyzw ]) index
val xx' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.two, [ `xyzw ]) index
val yx' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `xyzw ]) index
val zx' : ([< `four | `three of 'a ], 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val wx' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val xy' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `xyzw ]) index
val yy' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `xyzw ]) index
val zy' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `xyzw ]) index
val wy' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val xz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `xyzw ]) index
val yz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `xyzw ]) index
val zz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `xyzw ]) index
val wz' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val xw' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val yw' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val zw' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val ww' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `xyzw ]) index
val r' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.one, [ `rgba ]) index
val g' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.one, [ `rgba ]) index
val b' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.one, [ `rgba ]) index
val a' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.one, [ `rgba ]) index
val rr' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.two, [ `rgba ]) index
val gr' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `rgba ]) index
val br' : ([< `four | `three of 'a ], 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val ar' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val rg' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `rgba ]) index
val gg' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `rgba ]) index
val bg' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `rgba ]) index
val ag' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val rb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `rgba ]) index
val gb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `rgba ]) index
val bb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `rgba ]) index
val ab' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val ra' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val ga' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val ba' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val aa' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `rgba ]) index
val s' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.one, [ `stpq ]) index
val t' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.one, [ `stpq ]) index
val p' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.one, [ `stpq ]) index
val q' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.one, [ `stpq ]) index
val ss' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one, 'f Type_functions.two, [ `stpq ]) index
val ts' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `stpq ]) index
val ps' : ([< `four | `three of 'a ], 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val qs' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val st' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `stpq ]) index
val tt' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one, 'e Type_functions.two, [ `stpq ]) index
val pt' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `stpq ]) index
val qt' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val sp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `stpq ]) index
val tp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `stpq ]) index
val pp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one, 'd Type_functions.two, [ `stpq ]) index
val qp' : ([< 'a Type_functions.four ], 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val sq' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val tq' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val pq' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val qq' : ('a Type_functions.four, 'b Type_functions.one, 'c Type_functions.two, [ `stpq ]) index
val slice : ('dim1, ([< `one of 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] * 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] | `two of 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] * 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] ], 'rank2, 'rank3, 'dim1, 'dim3, 'len, 'a * 'b) Type_functions.superindexing) t ‑> ('dim1, 'len, 'rank2, 'group) index ‑> ('dim3, 'rank3) t
val (.%[]) : ('dim1, ([< `one of 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] * 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] | `two of 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] * 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] ], 'rank2, 'rank3, 'dim1, 'dim3, 'len, 'a * 'b) Type_functions.superindexing) t ‑> ('dim1, 'len, 'rank2, 'group) index ‑> ('dim3, 'rank3) t
val get : ('dim, 'rank) t ‑> ('dim, 'a Type_functions.one, 'rank, 'group) index ‑> Interface.k
val (.%()) : ('dim, 'rank) t ‑> ('dim, 'a Type_functions.one, 'rank, 'group) index ‑> Interface.k
val zero : 'dim dim ‑> 'rank rank ‑> ('dim, 'rank) t
val id : 'dim dim ‑> 'rank rank ‑> ('dim, 'rank) t
val eye : 'a dim ‑> ('a, 'b Type_functions.two) t
val diag : ('dim, 'a Type_functions.one) t ‑> ('dim, 'b Type_functions.two) t
val rotation : ('dim, 'a Type_functions.one) t ‑> ('dim, 'b Type_functions.one) t ‑> Interface.k ‑> ('dim, 'c Type_functions.two) t
val rank_match : [< `one of 'b * 'r | `two of 'c * 'r | `zero of 'a * 'r ] rank ‑> ('d Type_functions.z rank ‑> 'a) ‑> ('e Type_functions.one rank ‑> 'b) ‑> ('f Type_functions.two rank ‑> 'c) ‑> 'r
val dim_match : [< `four of 'd * 'r | `one of 'a * 'r | `three of 'c * 'r | `two of 'b * 'r ] dim ‑> ('e Type_functions.one dim ‑> 'a) ‑> ('f Type_functions.two dim ‑> 'b) ‑> ('g Type_functions.three dim ‑> 'c) ‑> ('h Type_functions.four dim ‑> 'd) ‑> 'r
val clone_2 : ([< `four of 'dim1 * 'dim2 * 'a Type_functions.four * 'b Type_functions.four | `one of 'dim1 * 'dim2 * 'c Type_functions.one * 'd Type_functions.one | `three of 'dim1 * 'dim2 * 'e Type_functions.three * 'f Type_functions.three | `two of 'dim1 * 'dim2 * 'g Type_functions.two * 'h Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'i Type_functions.one * 'j Type_functions.one | `two of 'rank1 * 'rank2 * 'k Type_functions.two * 'l Type_functions.two | `zero of 'rank1 * 'rank2 * 'm Type_functions.z * 'n Type_functions.z ]) t ‑> ('dim1, 'rank1) t * ('dim2, 'rank2) t
val clone_3 : ([< `four of 'dim1 * 'dim2 * 'dim3 * 'a Type_functions.four * 'b Type_functions.four * 'c Type_functions.four | `one of 'dim1 * 'dim2 * 'dim3 * 'd Type_functions.one * 'e Type_functions.one * 'f Type_functions.one | `three of 'dim1 * 'dim2 * 'dim3 * 'g Type_functions.three * 'h Type_functions.three * 'i Type_functions.three | `two of 'dim1 * 'dim2 * 'dim3 * 'j Type_functions.two * 'k Type_functions.two * 'l Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'rank3 * 'm Type_functions.one * 'n Type_functions.one * 'o Type_functions.one | `two of 'rank1 * 'rank2 * 'rank3 * 'p Type_functions.two * 'q Type_functions.two * 'r Type_functions.two | `zero of 'rank1 * 'rank2 * 'rank3 * 's Type_functions.z * 't Type_functions.z * 'u Type_functions.z ]) t ‑> ('dim1, 'rank1) t * ('dim2, 'rank2) t * ('dim3, 'rank3) t
val clone_7 : ([< `four of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'a Type_functions.four * 'b Type_functions.four * 'c Type_functions.four * 'd Type_functions.four * 'e Type_functions.four * 'f Type_functions.four * 'g Type_functions.four | `one of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'h Type_functions.one * 'i Type_functions.one * 'j Type_functions.one * 'k Type_functions.one * 'l Type_functions.one * 'm Type_functions.one * 'n Type_functions.one | `three of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'o Type_functions.three * 'p Type_functions.three * 'q Type_functions.three * 'r Type_functions.three * 's Type_functions.three * 't Type_functions.three * 'u Type_functions.three | `two of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'v Type_functions.two * 'w Type_functions.two * 'x Type_functions.two * 'y Type_functions.two * 'z Type_functions.two * 'a1 Type_functions.two * 'b1 Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'c1 Type_functions.one * 'd1 Type_functions.one * 'e1 Type_functions.one * 'f1 Type_functions.one * 'g1 Type_functions.one * 'h1 Type_functions.one * 'i1 Type_functions.one | `two of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'j1 Type_functions.two * 'k1 Type_functions.two * 'l1 Type_functions.two * 'm1 Type_functions.two * 'n1 Type_functions.two * 'o1 Type_functions.two * 'p1 Type_functions.two | `zero of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'q1 Type_functions.z * 'r1 Type_functions.z * 's1 Type_functions.z * 't1 Type_functions.z * 'u1 Type_functions.z * 'v1 Type_functions.z * 'w1 Type_functions.z ]) t ‑> ('dim1, 'rank1) t * ('dim2, 'rank2) t * ('dim3, 'rank3) t * ('dim4, 'rank4) t * ('dim5, 'rank5) t * ('dim6, 'rank6) t * ('dim7, 'rank7) t