Cantor is a highperformance floating point math library.
The idiomatic way to add together two 2vectors in Clojure is
> (map + [1 2] [3 4])
(4 6)
Sadly, this is quite slow. Cantor defines operators which work efficiently across a variety of types. The above operation, in Cantor, is accomplished thus:
> (add (vec2 1 2) (vec2 3 4))
[ x=4.0 y=6.0 ]
This is roughly 1020x faster than the idiomatic approach. These operators also work on normal numbers:
> (add 1 2)
3
The available operators include:
 add
 sub
 mul

(mul (vec2 1 2) 2)
=>[ x=2.0 y=4.0 ]

(mul (vec3 1 2 3) (vec3 4 5 6))
=>[ x=4.0 y=7.0 z=9.0 ]

 div

(div (vec3 2 4 6) 2)
=>[ x=1.0 y=2.0 z=3.0 ]

(div (vec2 4 8) (vec2 1 2))
=>[ x=4.0 y=4.0 ]

 dot

(dot (vec2 1 0) (vec2 0 1))
=>0.0

 polar

(polar (vec2 1 1))
=>[ theta=45 r=1.414 ]

 map*

(map* #(+ % 1) (vec3 1 2 3))
=>[ x=2.0 y=3.0 z=4.0 ]

 cartesian

(cartesian (polar2 45 1))
=>[ x=0.707 y=0.707 ]

(cartesian 45)
=>[ x=0.707 y=0.707 ]

Complete documentation can be found here.