File tree Expand file tree Collapse file tree 8 files changed +108
-0
lines changed Expand file tree Collapse file tree 8 files changed +108
-0
lines changed Original file line number Diff line number Diff line change @@ -198,3 +198,14 @@ fn test_product() {
198198 let two = Mat2 :: identity ( ) + Mat2 :: identity ( ) ;
199199 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Mat2 >( ) , two * two) ;
200200}
201+
202+ #[ test]
203+ fn test_mat2_is_finite ( ) {
204+ use std:: f32:: INFINITY ;
205+ use std:: f32:: NAN ;
206+ use std:: f32:: NEG_INFINITY ;
207+ assert ! ( Mat2 :: identity( ) . is_finite( ) ) ;
208+ assert ! ( !( Mat2 :: identity( ) * INFINITY ) . is_finite( ) ) ;
209+ assert ! ( !( Mat2 :: identity( ) * NEG_INFINITY ) . is_finite( ) ) ;
210+ assert ! ( !( Mat2 :: identity( ) * NAN ) . is_finite( ) ) ;
211+ }
Original file line number Diff line number Diff line change @@ -262,3 +262,14 @@ fn test_product() {
262262 let two = Mat3 :: identity ( ) + Mat3 :: identity ( ) ;
263263 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Mat3 >( ) , two * two) ;
264264}
265+
266+ #[ test]
267+ fn test_mat3_is_finite ( ) {
268+ use std:: f32:: INFINITY ;
269+ use std:: f32:: NAN ;
270+ use std:: f32:: NEG_INFINITY ;
271+ assert ! ( Mat3 :: identity( ) . is_finite( ) ) ;
272+ assert ! ( !( Mat3 :: identity( ) * INFINITY ) . is_finite( ) ) ;
273+ assert ! ( !( Mat3 :: identity( ) * NEG_INFINITY ) . is_finite( ) ) ;
274+ assert ! ( !( Mat3 :: identity( ) * NAN ) . is_finite( ) ) ;
275+ }
Original file line number Diff line number Diff line change @@ -543,3 +543,14 @@ fn test_product() {
543543 let two = Mat4 :: identity ( ) + Mat4 :: identity ( ) ;
544544 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Mat4 >( ) , two * two) ;
545545}
546+
547+ #[ test]
548+ fn test_mat4_is_finite ( ) {
549+ use std:: f32:: INFINITY ;
550+ use std:: f32:: NAN ;
551+ use std:: f32:: NEG_INFINITY ;
552+ assert ! ( Mat4 :: identity( ) . is_finite( ) ) ;
553+ assert ! ( !( Mat4 :: identity( ) * INFINITY ) . is_finite( ) ) ;
554+ assert ! ( !( Mat4 :: identity( ) * NEG_INFINITY ) . is_finite( ) ) ;
555+ assert ! ( !( Mat4 :: identity( ) * NAN ) . is_finite( ) ) ;
556+ }
Original file line number Diff line number Diff line change @@ -402,3 +402,16 @@ fn test_product() {
402402 let two = quat ( 2.0 , 2.0 , 2.0 , 2.0 ) . normalize ( ) ;
403403 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Quat >( ) , two * two) ;
404404}
405+
406+ #[ test]
407+ fn test_quat_is_finite ( ) {
408+ use std:: f32:: INFINITY ;
409+ use std:: f32:: NAN ;
410+ use std:: f32:: NEG_INFINITY ;
411+ assert ! ( Quat :: from_xyzw( 0.0 , 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
412+ assert ! ( Quat :: from_xyzw( -1e-10 , 1.0 , 1e10 , 42.0 ) . is_finite( ) ) ;
413+ assert ! ( !Quat :: from_xyzw( INFINITY , 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
414+ assert ! ( !Quat :: from_xyzw( 0.0 , NAN , 0.0 , 0.0 ) . is_finite( ) ) ;
415+ assert ! ( !Quat :: from_xyzw( 0.0 , 0.0 , NEG_INFINITY , 0.0 ) . is_finite( ) ) ;
416+ assert ! ( !Quat :: from_xyzw( 0.0 , 0.0 , 0.0 , NAN ) . is_finite( ) ) ;
417+ }
Original file line number Diff line number Diff line change @@ -518,3 +518,16 @@ fn test_product() {
518518 let two = Vec2 :: new ( 2.0 , 2.0 ) ;
519519 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Vec2 >( ) , two * two) ;
520520}
521+
522+ #[ test]
523+ fn test_vec2_is_finite ( ) {
524+ use std:: f32:: INFINITY ;
525+ use std:: f32:: NAN ;
526+ use std:: f32:: NEG_INFINITY ;
527+ assert ! ( Vec2 :: new( 0.0 , 0.0 ) . is_finite( ) ) ;
528+ assert ! ( Vec2 :: new( -1e-10 , 1e10 ) . is_finite( ) ) ;
529+ assert ! ( !Vec2 :: new( INFINITY , 0.0 ) . is_finite( ) ) ;
530+ assert ! ( !Vec2 :: new( 0.0 , NAN ) . is_finite( ) ) ;
531+ assert ! ( !Vec2 :: new( 0.0 , NEG_INFINITY ) . is_finite( ) ) ;
532+ assert ! ( !Vec2 :: new( INFINITY , NEG_INFINITY ) . is_finite( ) ) ;
533+ }
Original file line number Diff line number Diff line change @@ -566,3 +566,16 @@ fn test_product() {
566566 let two = Vec3 :: new ( 2.0 , 2.0 , 2.0 ) ;
567567 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Vec3 >( ) , two * two) ;
568568}
569+
570+ #[ test]
571+ fn test_vec3_is_finite ( ) {
572+ use std:: f32:: INFINITY ;
573+ use std:: f32:: NAN ;
574+ use std:: f32:: NEG_INFINITY ;
575+ assert ! ( Vec3 :: new( 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
576+ assert ! ( Vec3 :: new( -1e-10 , 1.0 , 1e10 ) . is_finite( ) ) ;
577+ assert ! ( !Vec3 :: new( INFINITY , 0.0 , 0.0 ) . is_finite( ) ) ;
578+ assert ! ( !Vec3 :: new( 0.0 , NAN , 0.0 ) . is_finite( ) ) ;
579+ assert ! ( !Vec3 :: new( 0.0 , 0.0 , NEG_INFINITY ) . is_finite( ) ) ;
580+ assert ! ( !Vec3 :: splat( NAN ) . is_finite( ) ) ;
581+ }
Original file line number Diff line number Diff line change @@ -604,3 +604,26 @@ fn test_product() {
604604 let two = Vec3A :: new ( 2.0 , 2.0 , 2.0 ) ;
605605 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Vec3A >( ) , two * two) ;
606606}
607+
608+ #[ test]
609+ fn test_vec3a_is_finite ( ) {
610+ use std:: f32:: INFINITY ;
611+ use std:: f32:: NAN ;
612+ use std:: f32:: NEG_INFINITY ;
613+ assert ! ( Vec3A :: new( 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
614+ assert ! ( Vec3A :: new( -1e-10 , 1.0 , 1e10 ) . is_finite( ) ) ;
615+ assert ! ( !Vec3A :: new( INFINITY , 0.0 , 0.0 ) . is_finite( ) ) ;
616+ assert ! ( !Vec3A :: new( 0.0 , NAN , 0.0 ) . is_finite( ) ) ;
617+ assert ! ( !Vec3A :: new( 0.0 , 0.0 , NEG_INFINITY ) . is_finite( ) ) ;
618+ assert ! ( !Vec3A :: splat( NAN ) . is_finite( ) ) ;
619+
620+ {
621+ // Check that the implicit fourth element (in simd) does not affect `is_finite()`:
622+ let mut v = Vec3A :: splat ( NAN ) ;
623+ assert ! ( !v. is_finite( ) ) ;
624+ v. x = 42.0 ;
625+ v. y = 42.0 ;
626+ v. z = 42.0 ;
627+ assert ! ( v. is_finite( ) ) ;
628+ }
629+ }
Original file line number Diff line number Diff line change @@ -638,3 +638,16 @@ fn test_product() {
638638 let two = Vec4 :: new ( 2.0 , 2.0 , 2.0 , 2.0 ) ;
639639 assert_eq ! ( vec![ two, two] . iter( ) . product:: <Vec4 >( ) , two * two) ;
640640}
641+
642+ #[ test]
643+ fn test_vec4_is_finite ( ) {
644+ use std:: f32:: INFINITY ;
645+ use std:: f32:: NAN ;
646+ use std:: f32:: NEG_INFINITY ;
647+ assert ! ( Vec4 :: new( 0.0 , 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
648+ assert ! ( Vec4 :: new( -1e-10 , 1.0 , 1e10 , 42.0 ) . is_finite( ) ) ;
649+ assert ! ( !Vec4 :: new( INFINITY , 0.0 , 0.0 , 0.0 ) . is_finite( ) ) ;
650+ assert ! ( !Vec4 :: new( 0.0 , NAN , 0.0 , 0.0 ) . is_finite( ) ) ;
651+ assert ! ( !Vec4 :: new( 0.0 , 0.0 , NEG_INFINITY , 0.0 ) . is_finite( ) ) ;
652+ assert ! ( !Vec4 :: new( 0.0 , 0.0 , 0.0 , NAN ) . is_finite( ) ) ;
653+ }
You can’t perform that action at this time.
0 commit comments