|
| #define | VEC_H 4 |
| |
| #define | EXPAND2(v) (v)[0], (v)[1] |
| |
| #define | EXPAND3(v) (v)[0], (v)[1], (v)[2] |
| |
| #define | EXPAND4(v) (v)[0], (v)[1], (v)[2], (v)[3] |
| |
| #define | SET2(to, from) |
| |
| #define | SETMAT2(to, from) |
| |
| #define | ROUNDVEC2(to, from) |
| |
| #define | ROUNDMAT2(to, from) |
| |
| #define | FILLVEC2(v, s) |
| |
| #define | FILLMAT2(m, s) |
| |
| #define | ZEROVEC2(v) |
| |
| #define | ISZEROVEC2(v) |
| |
| #define | EQVEC2(v, w) |
| |
| #define | EQMAT2(m1, m2) |
| |
| #define | ZEROMAT2(m) |
| |
| #define | IDENTMAT2(m) |
| |
| #define | TRANSPOSE2(to, from) |
| |
| #define | VPSXV2(to, v, s, w) |
| |
| #define | VPVXS2(to, v, w, s) |
| |
| #define | VPV2(to, v, w) |
| |
| #define | VMV2(to, v, w) |
| |
| #define | MPM2(to, m1, m2) |
| |
| #define | MMM2(to, m1, m2) |
| |
| #define | SXV2(to, s, from) |
| |
| #define | SXM2(to, s, from) |
| |
| #define | MV2(to, from) |
| |
| #define | MM2(to, from) |
| |
| #define | VXS2(to, from, s) |
| |
| #define | VDS2(to, from, s) |
| |
| #define | MXS2(to, from, s) |
| |
| #define | MDS2(to, from, s) |
| |
| #define | MXM2(to, m1, m2) |
| |
| #define | VXM2(to, v, m) |
| |
| #define | MXV2(to, m, v) |
| |
| #define | VMODS2(to, v, s) |
| |
| #define | VMODV2(to, v0, v1) |
| |
| #define | VDIVS2(to, v, s) |
| |
| #define | VDIVV2(to, v0, v1) |
| |
| #define | VMINS2(to, v, s) |
| |
| #define | VMINV2(to, v0, v1) |
| |
| #define | VMAXS2(to, v, s) |
| |
| #define | VMAXV2(to, v0, v1) |
| |
| #define | LERP2(to, v0, v1, t) |
| |
| #define | TRACE2(m) |
| |
| #define | DOT2(v, w) |
| |
| #define | NORMSQRD2(v) |
| |
| #define | DISTSQRD2(v, w) |
| |
| #define | _DOTcol2(v, m, j) |
| |
| #define | _SETcol2(v, m, j) |
| |
| #define | _MXVcol2(to, m, M, j) |
| |
| #define | _DET2(v0, v1, i0, i1) |
| |
| #define | XV2(to, v1) |
| |
| #define | V2XM3(to2, v2, m3) |
| |
| #define | M3XV2(to2, m3, v2) |
| |
| #define | _DET1(v0, i0) ((v0)[i0]) |
| |
| #define | VXV2(v0, v1) (_DET2(v0,v1,0,1)) |
| |
| #define | DET2(m) (VXV2((m)[0],(m)[1])) |
| |
| #define | SMODS1(a, b) ((((a)%(b)+(b))%(b))) |
| |
| #define | SDIVS1(a, b) ((((a)-SMODS1(a,b))/(b))) |
| |
| #define | SMINS1(a, b) (((a) < (b) ? (a) : (b))) |
| |
| #define | SMAXS1(a, b) (((a) > (b) ? (a) : (b))) |
| |
| #define | ADJOINT2(to, m) |
| |
| #define | _ADJOINTcol2(to, col, m, i1) |
| |
| #define | __ADJOINTcol2(to, col, m, i1) |
| |
| #define | SET3(to, from) |
| |
| #define | SETMAT3(to, from) |
| |
| #define | ROUNDVEC3(to, from) |
| |
| #define | ROUNDMAT3(to, from) |
| |
| #define | FILLVEC3(v, s) |
| |
| #define | FILLMAT3(m, s) |
| |
| #define | ZEROVEC3(v) |
| |
| #define | ISZEROVEC3(v) |
| |
| #define | EQVEC3(v, w) |
| |
| #define | EQMAT3(m1, m2) |
| |
| #define | ZEROMAT3(m) |
| |
| #define | IDENTMAT3(m) |
| |
| #define | TRANSPOSE3(to, from) |
| |
| #define | VPSXV3(to, v, s, w) |
| |
| #define | VPVXS3(to, v, w, s) |
| |
| #define | VPV3(to, v, w) |
| |
| #define | VMV3(to, v, w) |
| |
| #define | MPM3(to, m1, m2) |
| |
| #define | MMM3(to, m1, m2) |
| |
| #define | SXV3(to, s, from) |
| |
| #define | SXM3(to, s, from) |
| |
| #define | MV3(to, from) |
| |
| #define | MM3(to, from) |
| |
| #define | VXS3(to, from, s) |
| |
| #define | VDS3(to, from, s) |
| |
| #define | MXS3(to, from, s) |
| |
| #define | MDS3(to, from, s) |
| |
| #define | MXM3(to, m1, m2) |
| |
| #define | VXM3(to, v, m) |
| |
| #define | MXV3(to, m, v) |
| |
| #define | VMODS3(to, v, s) |
| |
| #define | VMODV3(to, v0, v1) |
| |
| #define | VDIVS3(to, v, s) |
| |
| #define | VDIVV3(to, v0, v1) |
| |
| #define | VMINS3(to, v, s) |
| |
| #define | VMINV3(to, v0, v1) |
| |
| #define | VMAXS3(to, v, s) |
| |
| #define | VMAXV3(to, v0, v1) |
| |
| #define | LERP3(to, v0, v1, t) |
| |
| #define | TRACE3(m) |
| |
| #define | DOT3(v, w) |
| |
| #define | NORMSQRD3(v) |
| |
| #define | DISTSQRD3(v, w) |
| |
| #define | _DOTcol3(v, m, j) |
| |
| #define | _SETcol3(v, m, j) |
| |
| #define | _MXVcol3(to, m, M, j) |
| |
| #define | _DET3(v0, v1, v2, i0, i1, i2) |
| |
| #define | VXV3(to, v1, v2) |
| |
| #define | SET3from2(to, from, pad) |
| |
| #define | SETMAT3from2(to, from, pad0, pad1) |
| |
| #define | M2XM3(to3, m2, m3) |
| |
| #define | M3XM2(to3, m3, m2) |
| |
| #define | V3XM4(to3, v3, m4) |
| |
| #define | M4XV3(to3, m4, v3) |
| |
| #define | VXVXV3(v0, v1, v2) (_DET3(v0,v1,v2,0,1,2)) |
| |
| #define | DET3(m) (VXVXV3((m)[0],(m)[1],(m)[2])) |
| |
| #define | ADJOINT3(to, m) |
| |
| #define | _ADJOINTcol3(to, col, m, i1, i2) |
| |
| #define | __ADJOINTcol3(to, col, m, i1, i2) |
| |
| #define | SET4(to, from) |
| |
| #define | SETMAT4(to, from) |
| |
| #define | ROUNDVEC4(to, from) |
| |
| #define | ROUNDMAT4(to, from) |
| |
| #define | FILLVEC4(v, s) |
| |
| #define | FILLMAT4(m, s) |
| |
| #define | ZEROVEC4(v) |
| |
| #define | ISZEROVEC4(v) |
| |
| #define | EQVEC4(v, w) |
| |
| #define | EQMAT4(m1, m2) |
| |
| #define | ZEROMAT4(m) |
| |
| #define | IDENTMAT4(m) |
| |
| #define | TRANSPOSE4(to, from) |
| |
| #define | VPSXV4(to, v, s, w) |
| |
| #define | VPVXS4(to, v, w, s) |
| |
| #define | VPV4(to, v, w) |
| |
| #define | VMV4(to, v, w) |
| |
| #define | MPM4(to, m1, m2) |
| |
| #define | MMM4(to, m1, m2) |
| |
| #define | SXV4(to, s, from) |
| |
| #define | SXM4(to, s, from) |
| |
| #define | MV4(to, from) |
| |
| #define | MM4(to, from) |
| |
| #define | VXS4(to, from, s) |
| |
| #define | VDS4(to, from, s) |
| |
| #define | MXS4(to, from, s) |
| |
| #define | MDS4(to, from, s) |
| |
| #define | MXM4(to, m1, m2) |
| |
| #define | VXM4(to, v, m) |
| |
| #define | MXV4(to, m, v) |
| |
| #define | VMODS4(to, v, s) |
| |
| #define | VMODV4(to, v0, v1) |
| |
| #define | VDIVS4(to, v, s) |
| |
| #define | VDIVV4(to, v0, v1) |
| |
| #define | VMINS4(to, v, s) |
| |
| #define | VMINV4(to, v0, v1) |
| |
| #define | VMAXS4(to, v, s) |
| |
| #define | VMAXV4(to, v0, v1) |
| |
| #define | LERP4(to, v0, v1, t) |
| |
| #define | TRACE4(m) |
| |
| #define | DOT4(v, w) |
| |
| #define | NORMSQRD4(v) |
| |
| #define | DISTSQRD4(v, w) |
| |
| #define | _DOTcol4(v, m, j) |
| |
| #define | _SETcol4(v, m, j) |
| |
| #define | _MXVcol4(to, m, M, j) |
| |
| #define | _DET4(v0, v1, v2, v3, i0, i1, i2, i3) |
| |
| #define | VXVXV4(to, v1, v2, v3) |
| |
| #define | SET4from3(to, from, pad) |
| |
| #define | SETMAT4from3(to, from, pad0, pad1) |
| |
| #define | M3XM4(to4, m3, m4) |
| |
| #define | M4XM3(to4, m4, m3) |
| |
| #define | VXVXVXV4(v0, v1, v2, v3) (_DET4(v0,v1,v2,v3,0,1,2,3)) |
| |
| #define | DET4(m) (VXVXVXV4((m)[0],(m)[1],(m)[2],(m)[3])) |
| |
| #define | ADJOINT4(to, m) |
| |
| #define | _ADJOINTcol4(to, col, m, i1, i2, i3) |
| |
| #define | __ADJOINTcol4(to, col, m, i1, i2, i3) |
| |
| #define | TRANSPOSE2safe(type, to, from) |
| |
| #define | TRANSPOSE2d(to, from) TRANSPOSE2safe(double,to,from) |
| |
| #define | TRANSPOSE2i(to, from) TRANSPOSE2safe(int,to,from) |
| |
| #define | TRANSPOSE2l(to, from) TRANSPOSE2safe(long,to,from) |
| |
| #define | TRANSPOSE2r(to, from) TRANSPOSE2safe(real,to,from) |
| |
| #define | MXM2safe(type, to, m1, m2) |
| |
| #define | MXM2d(to, m1, m2) MXM2safe(double,to,m1,m2) |
| |
| #define | MXM2i(to, m1, m2) MXM2safe(int,to,m1,m2) |
| |
| #define | MXM2l(to, m1, m2) MXM2safe(long,to,m1,m2) |
| |
| #define | MXM2r(to, m1, m2) MXM2safe(real,to,m1,m2) |
| |
| #define | VXM2safe(type, to, v, m) |
| |
| #define | VXM2d(to, v, m) VXM2safe(double,to,v,m) |
| |
| #define | VXM2i(to, v, m) VXM2safe(int,to,v,m) |
| |
| #define | VXM2l(to, v, m) VXM2safe(long,to,v,m) |
| |
| #define | VXM2r(to, v, m) VXM2safe(real,to,v,m) |
| |
| #define | MXV2safe(type, to, m, v) |
| |
| #define | MXV2d(to, m, v) MXV2safe(double,to,m,v) |
| |
| #define | MXV2i(to, m, v) MXV2safe(int,to,m,v) |
| |
| #define | MXV2l(to, m, v) MXV2safe(long,to,m,v) |
| |
| #define | MXV2r(to, m, v) MXV2safe(real,to,m,v) |
| |
| #define | XV2safe(type, to, v1) |
| |
| #define | XV2d(to, v1) XV2safe(double,to,v1) |
| |
| #define | XV2i(to, v1) XV2safe(int,to,v1) |
| |
| #define | XV2l(to, v1) XV2safe(long,to,v1) |
| |
| #define | XV2r(to, v1) XV2safe(real,to,v1) |
| |
| #define | V2XM3safe(type, to2, v2, m3) |
| |
| #define | V2XM3d(to2, v2, m3) V2XM3safe(double,to2,v2,m3) |
| |
| #define | V2XM3i(to2, v2, m3) V2XM3safe(int,to2,v2,m3) |
| |
| #define | V2XM3l(to2, v2, m3) V2XM3safe(long,to2,v2,m3) |
| |
| #define | V2XM3r(to2, v2, m3) V2XM3safe(real,to2,v2,m3) |
| |
| #define | M3XV2safe(type, to2, m3, v2) |
| |
| #define | M3XV2d(to2, m3, v2) M3XV2safe(double,to2,m3,v2) |
| |
| #define | M3XV2i(to2, m3, v2) M3XV2safe(int,to2,m3,v2) |
| |
| #define | M3XV2l(to2, m3, v2) M3XV2safe(long,to2,m3,v2) |
| |
| #define | M3XV2r(to2, m3, v2) M3XV2safe(real,to2,m3,v2) |
| |
| #define | ADJOINT2safe(type, to, m) |
| |
| #define | ADJOINT2d(to, m) ADJOINT2safe(double,to,m) |
| |
| #define | ADJOINT2i(to, m) ADJOINT2safe(int,to,m) |
| |
| #define | ADJOINT2l(to, m) ADJOINT2safe(long,to,m) |
| |
| #define | ADJOINT2r(to, m) ADJOINT2safe(real,to,m) |
| |
| #define | INVERTMAT2safe(type, to, from) |
| |
| #define | INVERTMAT2d(to, from) INVERTMAT2safe(double,to,from) |
| |
| #define | INVERTMAT2i(to, from) INVERTMAT2safe(int,to,from) |
| |
| #define | INVERTMAT2l(to, from) INVERTMAT2safe(long,to,from) |
| |
| #define | INVERTMAT2r(to, from) INVERTMAT2safe(real,to,from) |
| |
| #define | TRANSPOSE3safe(type, to, from) |
| |
| #define | TRANSPOSE3d(to, from) TRANSPOSE3safe(double,to,from) |
| |
| #define | TRANSPOSE3i(to, from) TRANSPOSE3safe(int,to,from) |
| |
| #define | TRANSPOSE3l(to, from) TRANSPOSE3safe(long,to,from) |
| |
| #define | TRANSPOSE3r(to, from) TRANSPOSE3safe(real,to,from) |
| |
| #define | MXM3safe(type, to, m1, m2) |
| |
| #define | MXM3d(to, m1, m2) MXM3safe(double,to,m1,m2) |
| |
| #define | MXM3i(to, m1, m2) MXM3safe(int,to,m1,m2) |
| |
| #define | MXM3l(to, m1, m2) MXM3safe(long,to,m1,m2) |
| |
| #define | MXM3r(to, m1, m2) MXM3safe(real,to,m1,m2) |
| |
| #define | VXM3safe(type, to, v, m) |
| |
| #define | VXM3d(to, v, m) VXM3safe(double,to,v,m) |
| |
| #define | VXM3i(to, v, m) VXM3safe(int,to,v,m) |
| |
| #define | VXM3l(to, v, m) VXM3safe(long,to,v,m) |
| |
| #define | VXM3r(to, v, m) VXM3safe(real,to,v,m) |
| |
| #define | MXV3safe(type, to, m, v) |
| |
| #define | MXV3d(to, m, v) MXV3safe(double,to,m,v) |
| |
| #define | MXV3i(to, m, v) MXV3safe(int,to,m,v) |
| |
| #define | MXV3l(to, m, v) MXV3safe(long,to,m,v) |
| |
| #define | MXV3r(to, m, v) MXV3safe(real,to,m,v) |
| |
| #define | VXV3safe(type, to, v1, v2) |
| |
| #define | VXV3d(to, v1, v2) VXV3safe(double,to,v1,v2) |
| |
| #define | VXV3i(to, v1, v2) VXV3safe(int,to,v1,v2) |
| |
| #define | VXV3l(to, v1, v2) VXV3safe(long,to,v1,v2) |
| |
| #define | VXV3r(to, v1, v2) VXV3safe(real,to,v1,v2) |
| |
| #define | M2XM3safe(type, to3, m2, m3) |
| |
| #define | M2XM3d(to3, m2, m3) M2XM3safe(double,to3,m2,m3) |
| |
| #define | M2XM3i(to3, m2, m3) M2XM3safe(int,to3,m2,m3) |
| |
| #define | M2XM3l(to3, m2, m3) M2XM3safe(long,to3,m2,m3) |
| |
| #define | M2XM3r(to3, m2, m3) M2XM3safe(real,to3,m2,m3) |
| |
| #define | M3XM2safe(type, to3, m3, m2) |
| |
| #define | M3XM2d(to3, m3, m2) M3XM2safe(double,to3,m3,m2) |
| |
| #define | M3XM2i(to3, m3, m2) M3XM2safe(int,to3,m3,m2) |
| |
| #define | M3XM2l(to3, m3, m2) M3XM2safe(long,to3,m3,m2) |
| |
| #define | M3XM2r(to3, m3, m2) M3XM2safe(real,to3,m3,m2) |
| |
| #define | V3XM4safe(type, to3, v3, m4) |
| |
| #define | V3XM4d(to3, v3, m4) V3XM4safe(double,to3,v3,m4) |
| |
| #define | V3XM4i(to3, v3, m4) V3XM4safe(int,to3,v3,m4) |
| |
| #define | V3XM4l(to3, v3, m4) V3XM4safe(long,to3,v3,m4) |
| |
| #define | V3XM4r(to3, v3, m4) V3XM4safe(real,to3,v3,m4) |
| |
| #define | M4XV3safe(type, to3, m4, v3) |
| |
| #define | M4XV3d(to3, m4, v3) M4XV3safe(double,to3,m4,v3) |
| |
| #define | M4XV3i(to3, m4, v3) M4XV3safe(int,to3,m4,v3) |
| |
| #define | M4XV3l(to3, m4, v3) M4XV3safe(long,to3,m4,v3) |
| |
| #define | M4XV3r(to3, m4, v3) M4XV3safe(real,to3,m4,v3) |
| |
| #define | ADJOINT3safe(type, to, m) |
| |
| #define | ADJOINT3d(to, m) ADJOINT3safe(double,to,m) |
| |
| #define | ADJOINT3i(to, m) ADJOINT3safe(int,to,m) |
| |
| #define | ADJOINT3l(to, m) ADJOINT3safe(long,to,m) |
| |
| #define | ADJOINT3r(to, m) ADJOINT3safe(real,to,m) |
| |
| #define | INVERTMAT3safe(type, to, from) |
| |
| #define | INVERTMAT3d(to, from) INVERTMAT3safe(double,to,from) |
| |
| #define | INVERTMAT3i(to, from) INVERTMAT3safe(int,to,from) |
| |
| #define | INVERTMAT3l(to, from) INVERTMAT3safe(long,to,from) |
| |
| #define | INVERTMAT3r(to, from) INVERTMAT3safe(real,to,from) |
| |
| #define | TRANSPOSE4safe(type, to, from) |
| |
| #define | TRANSPOSE4d(to, from) TRANSPOSE4safe(double,to,from) |
| |
| #define | TRANSPOSE4i(to, from) TRANSPOSE4safe(int,to,from) |
| |
| #define | TRANSPOSE4l(to, from) TRANSPOSE4safe(long,to,from) |
| |
| #define | TRANSPOSE4r(to, from) TRANSPOSE4safe(real,to,from) |
| |
| #define | MXM4safe(type, to, m1, m2) |
| |
| #define | MXM4d(to, m1, m2) MXM4safe(double,to,m1,m2) |
| |
| #define | MXM4i(to, m1, m2) MXM4safe(int,to,m1,m2) |
| |
| #define | MXM4l(to, m1, m2) MXM4safe(long,to,m1,m2) |
| |
| #define | MXM4r(to, m1, m2) MXM4safe(real,to,m1,m2) |
| |
| #define | VXM4safe(type, to, v, m) |
| |
| #define | VXM4d(to, v, m) VXM4safe(double,to,v,m) |
| |
| #define | VXM4i(to, v, m) VXM4safe(int,to,v,m) |
| |
| #define | VXM4l(to, v, m) VXM4safe(long,to,v,m) |
| |
| #define | VXM4r(to, v, m) VXM4safe(real,to,v,m) |
| |
| #define | MXV4safe(type, to, m, v) |
| |
| #define | MXV4d(to, m, v) MXV4safe(double,to,m,v) |
| |
| #define | MXV4i(to, m, v) MXV4safe(int,to,m,v) |
| |
| #define | MXV4l(to, m, v) MXV4safe(long,to,m,v) |
| |
| #define | MXV4r(to, m, v) MXV4safe(real,to,m,v) |
| |
| #define | VXVXV4safe(type, to, v1, v2, v3) |
| |
| #define | VXVXV4d(to, v1, v2, v3) VXVXV4safe(double,to,v1,v2,v3) |
| |
| #define | VXVXV4i(to, v1, v2, v3) VXVXV4safe(int,to,v1,v2,v3) |
| |
| #define | VXVXV4l(to, v1, v2, v3) VXVXV4safe(long,to,v1,v2,v3) |
| |
| #define | VXVXV4r(to, v1, v2, v3) VXVXV4safe(real,to,v1,v2,v3) |
| |
| #define | M3XM4safe(type, to4, m3, m4) |
| |
| #define | M3XM4d(to4, m3, m4) M3XM4safe(double,to4,m3,m4) |
| |
| #define | M3XM4i(to4, m3, m4) M3XM4safe(int,to4,m3,m4) |
| |
| #define | M3XM4l(to4, m3, m4) M3XM4safe(long,to4,m3,m4) |
| |
| #define | M3XM4r(to4, m3, m4) M3XM4safe(real,to4,m3,m4) |
| |
| #define | M4XM3safe(type, to4, m4, m3) |
| |
| #define | M4XM3d(to4, m4, m3) M4XM3safe(double,to4,m4,m3) |
| |
| #define | M4XM3i(to4, m4, m3) M4XM3safe(int,to4,m4,m3) |
| |
| #define | M4XM3l(to4, m4, m3) M4XM3safe(long,to4,m4,m3) |
| |
| #define | M4XM3r(to4, m4, m3) M4XM3safe(real,to4,m4,m3) |
| |
| #define | ADJOINT4safe(type, to, m) |
| |
| #define | ADJOINT4d(to, m) ADJOINT4safe(double,to,m) |
| |
| #define | ADJOINT4i(to, m) ADJOINT4safe(int,to,m) |
| |
| #define | ADJOINT4l(to, m) ADJOINT4safe(long,to,m) |
| |
| #define | ADJOINT4r(to, m) ADJOINT4safe(real,to,m) |
| |
| #define | INVERTMAT4safe(type, to, from) |
| |
| #define | INVERTMAT4d(to, from) INVERTMAT4safe(double,to,from) |
| |
| #define | INVERTMAT4i(to, from) INVERTMAT4safe(int,to,from) |
| |
| #define | INVERTMAT4l(to, from) INVERTMAT4safe(long,to,from) |
| |
| #define | INVERTMAT4r(to, from) INVERTMAT4safe(real,to,from) |
| |