Use abs function

This commit is contained in:
Brendan Zabarauskas 2012-11-12 11:52:32 +10:00
parent 1a60dfa095
commit 16ba5ccb9b

View file

@ -4,6 +4,7 @@ use ptr::to_unsafe_ptr;
use vec::raw::buf_as_slice; use vec::raw::buf_as_slice;
use std::cmp::FuzzyEq; use std::cmp::FuzzyEq;
use funs::common::*;
use funs::exp::Exp; use funs::exp::Exp;
use math::*; use math::*;
use ncast::*; use ncast::*;
@ -720,7 +721,7 @@ pub impl<T:Copy Num NumCast FuzzyEq> Mat4<T>: NumericMatrix<T, Vec4<T>> {
} }
} }
pub impl<T:Copy Num NumCast FuzzyEq Ord> Mat4<T>: NumericMatrix_NxN<T> { pub impl<T:Copy Num NumCast FuzzyEq Signed Ord> Mat4<T>: NumericMatrix_NxN<T> {
#[inline(always)] #[inline(always)]
pure fn add_m(other: &Mat4<T>) -> Mat4<T> { pure fn add_m(other: &Mat4<T>) -> Mat4<T> {
Mat4::from_cols(self[0].add_v(&other[0]), Mat4::from_cols(self[0].add_v(&other[0]),
@ -779,16 +780,7 @@ pub impl<T:Copy Num NumCast FuzzyEq Ord> Mat4<T>: NumericMatrix_NxN<T> {
for uint::range(0, 4) |j| { for uint::range(0, 4) |j| {
let mut i1 = j; let mut i1 = j;
for uint::range(j + 1, 4) |i| { for uint::range(j + 1, 4) |i| {
// There should really be a generic abs function if abs(&a[i][j]) > abs(&a[i1][j]) {
let one = a[i][j];
let two = a[i1][j];
if one < _0 && two < _0 && -one > -two {
i1 = i;
} else if one > _0 && two > _0 && one > two {
i1 = i;
} else if one < _0 && two > _0 && -one > two {
i1 = i;
} else if one > _0 && two < _0 && one > -two {
i1 = i; i1 = i;
} }
} }