@@ -577,11 +577,7 @@ void test_median_absolute_deviation(ExecutionPolicy&& exec)
577577 v = {-1 , 1 };
578578 m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end (), 0 );
579579 BOOST_TEST_EQ (m, 1 );
580- // The median is zero, so coincides with the default:
581- m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
582- BOOST_TEST_EQ (m, 1 );
583-
584- m = boost::math::statistics::median_absolute_deviation (exec, v);
580+ m = boost::math::statistics::median_absolute_deviation (exec, v, 0 );
585581 BOOST_TEST_EQ (m, 1 );
586582
587583
@@ -614,6 +610,65 @@ void test_median_absolute_deviation(ExecutionPolicy&& exec)
614610 u[5 ] = -3 ;
615611 m = boost::math::statistics::median_absolute_deviation (exec, u, 0 );
616612 BOOST_TEST_EQ (m, 2 );
613+
614+
615+ v = {-1 , 2 , -3 , 4 , -5 , 6 , -7 };
616+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
617+ BOOST_TEST_EQ (m, 4 );
618+
619+ g = std::mt19937 (12 );
620+ std::shuffle (v.begin (), v.end (), g);
621+ m = boost::math::statistics::median_absolute_deviation (exec, v);
622+ BOOST_TEST_EQ (m, 4 );
623+
624+ v = {1 , -2 , -3 , 3 , -4 , -5 };
625+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
626+ BOOST_TEST_EQ (m, 2 );
627+ std::shuffle (v.begin (), v.end (), g);
628+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
629+ BOOST_TEST_EQ (m, 2 );
630+
631+ v = {-1 };
632+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
633+ BOOST_TEST_EQ (m, 0 );
634+
635+ v = {-1 , 1 };
636+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
637+ BOOST_TEST_EQ (m, 1 );
638+
639+ m = boost::math::statistics::median_absolute_deviation (exec, v);
640+ BOOST_TEST_EQ (m, 1 );
641+
642+
643+ v = {2 , -4 };
644+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
645+ BOOST_TEST_EQ (m, 3 );
646+
647+ v = {1 , -1 , 1 };
648+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
649+ BOOST_TEST_EQ (m, 0 );
650+
651+ v = {1 , 2 , -3 };
652+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
653+ BOOST_TEST_EQ (m, 1 );
654+ std::shuffle (v.begin (), v.end (), g);
655+ m = boost::math::statistics::median_absolute_deviation (exec, v.begin (), v.end ());
656+ BOOST_TEST_EQ (m, 1 );
657+
658+ w = {1 , 2 , -3 };
659+ m = boost::math::statistics::median_absolute_deviation (exec, w);
660+ BOOST_TEST_EQ (m, 1 );
661+
662+ // boost.ublas vector?
663+ boost::numeric::ublas::vector<Real> u2 (6 );
664+ u2[0 ] = 1 ;
665+ u2[1 ] = 2 ;
666+ u2[2 ] = -3 ;
667+ u2[3 ] = 1 ;
668+ u2[4 ] = 2 ;
669+ u2[5 ] = -3 ;
670+ m = boost::math::statistics::median_absolute_deviation (exec, u2);
671+ BOOST_TEST_EQ (m, 1 );
617672}
618673
619674
0 commit comments