(cmd, expr)
| 1089 | |
| 1090 | /* return true if the string after cmd can be evaluated as JS */ |
| 1091 | function handle_directive(cmd, expr) { |
| 1092 | var param, prec1, expBits1; |
| 1093 | |
| 1094 | if (cmd === "h" || cmd === "?" || cmd == "help") { |
| 1095 | help(); |
| 1096 | } else if (cmd === "load") { |
| 1097 | var filename = expr.substring(cmd.length + 1).trim(); |
| 1098 | if (filename.lastIndexOf(".") <= filename.lastIndexOf("/")) |
| 1099 | filename += ".js"; |
| 1100 | std.loadScript(filename); |
| 1101 | return false; |
| 1102 | } else if (cmd === "x") { |
| 1103 | hex_mode = true; |
| 1104 | } else if (cmd === "d") { |
| 1105 | hex_mode = false; |
| 1106 | } else if (cmd === "t") { |
| 1107 | show_time = !show_time; |
| 1108 | } else if (has_bignum && cmd === "p") { |
| 1109 | param = expr.substring(cmd.length + 1).trim().split(" "); |
| 1110 | if (param.length === 1 && param[0] === "") { |
| 1111 | std.puts("BigFloat precision=" + prec + " bits (~" + |
| 1112 | Math.floor(prec / log2_10) + |
| 1113 | " digits), exponent size=" + expBits + " bits\n"); |
| 1114 | } else if (param[0] === "f16") { |
| 1115 | prec = 11; |
| 1116 | expBits = 5; |
| 1117 | } else if (param[0] === "f32") { |
| 1118 | prec = 24; |
| 1119 | expBits = 8; |
| 1120 | } else if (param[0] === "f64") { |
| 1121 | prec = 53; |
| 1122 | expBits = 11; |
| 1123 | } else if (param[0] === "f128") { |
| 1124 | prec = 113; |
| 1125 | expBits = 15; |
| 1126 | } else { |
| 1127 | prec1 = parseInt(param[0]); |
| 1128 | if (param.length >= 2) |
| 1129 | expBits1 = parseInt(param[1]); |
| 1130 | else |
| 1131 | expBits1 = BigFloatEnv.expBitsMax; |
| 1132 | if (Number.isNaN(prec1) || |
| 1133 | prec1 < BigFloatEnv.precMin || |
| 1134 | prec1 > BigFloatEnv.precMax) { |
| 1135 | std.puts("Invalid precision\n"); |
| 1136 | return false; |
| 1137 | } |
| 1138 | if (Number.isNaN(expBits1) || |
| 1139 | expBits1 < BigFloatEnv.expBitsMin || |
| 1140 | expBits1 > BigFloatEnv.expBitsMax) { |
| 1141 | std.puts("Invalid exponent bits\n"); |
| 1142 | return false; |
| 1143 | } |
| 1144 | prec = prec1; |
| 1145 | expBits = expBits1; |
| 1146 | } |
| 1147 | return false; |
| 1148 | } else if (has_bignum && cmd === "digits") { |
no test coverage detected