Írj be egy matematikai kifejezést (pl. sin(x)*x) - a szerver PHP-ben, egy SAJÁT, kézzel írt kifejezés-parserrel (tokenizálás → szintaxisfa → biztonságos, fehérlistás kiértékelés) mintavételezi a görbét. Nincs eval(): a bemenet SOSEM válik futtatott kódká, csak egy szigorúan fehérlistás matek-függvénykészlet valamelyikének paramétere lehet.
// Fehérlistás dispatch - KIZÁRÓLAG ez a néhány függvény hívható,
// SOSEM dinamikus "$name(...)" hívás vagy eval()
public static function callOne(string $name, float $x): float
{
return match ($name) {
'sin' => sin($x),
'sqrt' => sqrt($x),
'ln' => log($x),
// ...
};
}
// Osztás/maradék fdiv()/fmod()-mal (nullával osztás -> csendes INF/NAN,
// SOSEM DivisionByZeroError), majd EGYSÉGES NaN/Inf-kapu:
'/' => fdiv($left, $right),
...
if (is_nan($result) || is_infinite($result)) {
return null; // szakadt pont a grafikonon, nem hiba
}A szabad változó neve 'x'. Használható konstans: pi, e. Függvények: sin, cos, tan, sqrt, abs, exp, ln, log10, log2, floor, ceil, round, sign, pow(x,n), log(x,alap), min(a,b), max(a,b).
Gyökök (közelítő x-értékek): -9.4248, -6.2832, -3.1416, 0, 3.1416, 6.2832, 9.4248