Skip to content

Commit 6bf1500

Browse files
authored
Merge pull request #337 from hosseinmoein/Hossein/Matrix
Starting on the matrix
2 parents b7b58e9 + 266e347 commit 6bf1500

File tree

8 files changed

+1659
-37
lines changed

8 files changed

+1659
-37
lines changed

docs/HTML/DataFrame.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ <H2 ID="2"><font color="blue">API Reference with code samples <font size="+4">&#
622622
</tr>
623623

624624
<tr class="item" onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">
625-
<td title="These are other functionalities of DataFrame" style="text-align:center;background-color:LightGrey;color:DarkBlue">Gears &nbsp;&nbsp; <font size="+3">&#x2699;</font></td>
625+
<td title="These are other functionalities of DataFrame" style="text-align:center;background-color:LightGrey;color:DarkBlue">Gears &amp; Stuff &nbsp;&nbsp; <font size="+3">&#x2699;</font></td>
626626
</tr>
627627

628628
<tr class="item" onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">

docs/HTML/self_contained.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
It also has some disadvantages:
5252
<UL>
5353
<LI>There might be functionalities that are hard/time-consuming to implement that are already there</LI>
54-
<LI>If you find a battle-test library, the debugging is already done for you</LI>
54+
<LI>If you find a battle-tested library, the debugging is already done for you</LI>
5555
<LI>There might be industry-wide standards/trends that you want to follow by using a reputed library</LI>
5656
</UL>
5757
<BR>

include/DataFrame/DataFrameStatsVisitors.h

+31-31
Original file line numberDiff line numberDiff line change
@@ -6382,16 +6382,12 @@ struct LinearFitVisitor {
63826382
const H &x_begin, const H &x_end,
63836383
const H &y_begin, const H &y_end) {
63846384

6385-
const size_type col_s = std::distance(x_begin, x_end);
6385+
const size_type col_s =
6386+
std::min(std::distance(x_begin, x_end),
6387+
std::distance(y_begin, y_end));
63866388
const auto thread_level = (col_s < ThreadPool::MUL_THR_THHOLD)
63876389
? 0L : ThreadGranularity::get_thread_level();
63886390

6389-
#ifdef HMDF_SANITY_EXCEPTIONS
6390-
if (col_s != size_type(std::distance(y_begin, y_end)))
6391-
throw DataFrameError("LinearFitVisitor: two columns must be "
6392-
"of equal sizes");
6393-
#endif // HMDF_SANITY_EXCEPTIONS
6394-
63956391
value_type sum_x { 0 }; // Sum of all observed x
63966392
value_type sum_y { 0 }; // Sum of all observed y
63976393
value_type sum_x2 { 0 }; // Sum of all observed x squared
@@ -7543,30 +7539,32 @@ is_normal(const V &column, double epsl, bool check_for_standard) {
75437539
svisit.post();
75447540

75457541
const value_type mean = static_cast<value_type>(svisit.get_mean());
7546-
const value_type std = static_cast<value_type>(svisit.get_std());
7547-
const value_type high_band_1 = static_cast<value_type>(mean + std);
7548-
const value_type low_band_1 = static_cast<value_type>(mean - std);
7542+
const value_type stdev = static_cast<value_type>(svisit.get_std());
7543+
const value_type high_band_1 = static_cast<value_type>(mean + stdev);
7544+
const value_type low_band_1 = static_cast<value_type>(mean - stdev);
75497545
double count_1 = 0.0;
75507546
const value_type high_band_2 =
7551-
static_cast<value_type>(mean + std * 2.0);
7552-
const value_type low_band_2 = static_cast<value_type>(mean - std * 2.0);
7547+
static_cast<value_type>(mean + stdev * 2.0);
7548+
const value_type low_band_2 =
7549+
static_cast<value_type>(mean - stdev * 2.0);
75537550
double count_2 = 0.0;
75547551
const value_type high_band_3 =
7555-
static_cast<value_type>(mean + std * 3.0);
7556-
const value_type low_band_3 = static_cast<value_type>(mean - std * 3.0);
7552+
static_cast<value_type>(mean + stdev * 3.0);
7553+
const value_type low_band_3 =
7554+
static_cast<value_type>(mean - stdev * 3.0);
75577555
double count_3 = 0.0;
75587556

7559-
for (auto citer : column) [[likely]] {
7560-
if (citer >= low_band_1 && citer < high_band_1) {
7557+
for (const auto &val : column) [[likely]] {
7558+
if (val >= low_band_1 && val < high_band_1) {
75617559
count_3 += 1;
75627560
count_2 += 1;
75637561
count_1 += 1;
75647562
}
7565-
else if (citer >= low_band_2 && citer < high_band_2) {
7563+
else if (val >= low_band_2 && val < high_band_2) {
75667564
count_3 += 1;
75677565
count_2 += 1;
75687566
}
7569-
else if (citer >= low_band_3 && citer < high_band_3) {
7567+
else if (val >= low_band_3 && val < high_band_3) {
75707568
count_3 += 1;
75717569
}
75727570
}
@@ -7578,7 +7576,7 @@ is_normal(const V &column, double epsl, bool check_for_standard) {
75787576
std::fabs((count_3 / col_s) - 0.997) <= epsl) {
75797577
if (check_for_standard)
75807578
return (std::fabs(mean - 0) <= epsl &&
7581-
std::fabs(std - 1.0) <= epsl);
7579+
std::fabs(stdev - 1.0) <= epsl);
75827580
return (true);
75837581
}
75847582
return (false);
@@ -7597,28 +7595,30 @@ is_lognormal(const V &column, double epsl) {
75977595
StatsVisitor<value_type, int> log_visit;
75987596

75997597
svisit.pre();
7600-
for (auto citer : column) [[likely]] {
7601-
svisit(dummy_idx, static_cast<value_type>(std::log(citer)));
7602-
log_visit(dummy_idx, citer);
7598+
for (auto val : column) [[likely]] {
7599+
svisit(dummy_idx, static_cast<value_type>(std::log(val)));
7600+
log_visit(dummy_idx, val);
76037601
}
76047602
svisit.post();
76057603

76067604
const value_type mean = static_cast<value_type>(svisit.get_mean());
7607-
const value_type std = static_cast<value_type>(svisit.get_std());
7608-
const value_type high_band_1 = static_cast<value_type>(mean + std);
7609-
const value_type low_band_1 = static_cast<value_type>(mean - std);
7605+
const value_type stdev = static_cast<value_type>(svisit.get_std());
7606+
const value_type high_band_1 = static_cast<value_type>(mean + stdev);
7607+
const value_type low_band_1 = static_cast<value_type>(mean - stdev);
76107608
double count_1 = 0.0;
76117609
const value_type high_band_2 =
7612-
static_cast<value_type>(mean + std * 2.0);
7613-
const value_type low_band_2 = static_cast<value_type>(mean - std * 2.0);
7610+
static_cast<value_type>(mean + stdev * 2.0);
7611+
const value_type low_band_2 =
7612+
static_cast<value_type>(mean - stdev * 2.0);
76147613
double count_2 = 0.0;
76157614
const value_type high_band_3 =
7616-
static_cast<value_type>(mean + std * 3.0);
7617-
const value_type low_band_3 = static_cast<value_type>(mean - std * 3.0);
7615+
static_cast<value_type>(mean + stdev * 3.0);
7616+
const value_type low_band_3 =
7617+
static_cast<value_type>(mean - stdev * 3.0);
76187618
double count_3 = 0.0;
76197619

7620-
for (auto citer : column) [[likely]] {
7621-
const auto log_val = std::log(citer);
7620+
for (const auto &val : column) [[likely]] {
7621+
const auto log_val = std::log(val);
76227622

76237623
if (log_val >= low_band_1 && log_val < high_band_1) {
76247624
count_3 += 1;

0 commit comments

Comments
 (0)