public function getFunction($x)
{
foreach ($this->intervals as $i => $interval) {
$a = $interval[0];
$b = $interval[1];
$aOpen = $interval[2] ?? false;
$bOpen = $interval[3] ?? false;
// Four permutations: open-open, open-closed, closed-open, closed-closed
if ($aOpen && $bOpen) {
if ($x > $a && $x < $b) {
return $this->functions[$i];
}
} elseif ($aOpen && !$bOpen) {
if ($x > $a && $x <= $b) {
return $this->functions[$i];
}
} elseif (!$aOpen && $bOpen) {
if ($x >= $a && $x < $b) {
return $this->functions[$i];
}
} elseif (!$aOpen && !$bOpen) {
if ($x >= $a && $x <= $b) {
return $this->functions[$i];
}
}
}
return false;
}