impl: add {pre,post}_assert statements
[m6w6/ext-psi] / psi.d / stdlib.psi
index 1229c9e2d53d1e718cf1cf884ec925cfd1ca8124..63f28685e8bd37a84c29dba2b55b9d534fee0049 100644 (file)
@@ -6,5 +6,27 @@ function psi\abs(int $i) : int {
 function psi\div(int $numerator, int $denominator) : array {
        let numerator = intval($numerator);
        let denominator = intval($denominator);
+       pre_assert denominator != 0;
        return to_array(div, to_int(quot), to_int(rem));
-}
\ No newline at end of file
+}
+
+function psi\ldiv(int $numerator, int $denominator) : array {
+       let numerator = intval($numerator);
+       let denominator = intval($denominator);
+       pre_assert denominator != 0;
+       return to_array(ldiv, to_int(quot), to_int(rem));
+}
+
+function psi\lldiv(int $numerator, int $denominator) : array {
+       let numerator = intval($numerator);
+       let denominator = intval($denominator);
+       pre_assert denominator != 0;
+       return to_array(lldiv, to_int(quot), to_int(rem));
+}
+
+function psi\strtold(string $str, string &$end = null) : float {
+       let nptr = strval($str);
+       let endptr = &NULL;
+       return to_float(strtold);
+       set $end = to_string(*endptr);
+}