()
| 451 | } |
| 452 | |
| 453 | private double doMath() { |
| 454 | interp.getToken(); |
| 455 | if (interp.token!='.') |
| 456 | interp.error("'.' expected"); |
| 457 | interp.getToken(); |
| 458 | if (!(interp.token==WORD||interp.token==NUMERIC_FUNCTION)) |
| 459 | interp.error("Function name expected: "); |
| 460 | String name = interp.tokenString; |
| 461 | if (name.equals("min")) |
| 462 | return Math.min(getFirstArg(), getLastArg()); |
| 463 | else if (name.equals("max")) |
| 464 | return Math.max(getFirstArg(), getLastArg()); |
| 465 | else if (name.equals("pow")) |
| 466 | return Math.pow(getFirstArg(), getLastArg()); |
| 467 | else if (name.equals("atan2")) |
| 468 | return Math.atan2(getFirstArg(), getLastArg()); |
| 469 | else if (name.equals("constrain")) |
| 470 | return Math.min(Math.max(getFirstArg(), getNextArg()), getLastArg()); |
| 471 | else if (name.equals("map")) { |
| 472 | double value = getFirstArg(); |
| 473 | double fromLow = getNextArg(); |
| 474 | double fromHigh = getNextArg(); |
| 475 | double toLow = getNextArg(); |
| 476 | double toHigh = getLastArg(); |
| 477 | return (value-fromLow)*(toHigh-toLow)/(fromHigh-fromLow)+toLow; |
| 478 | } |
| 479 | double arg = getArg(); |
| 480 | if (name.equals("ceil")) |
| 481 | return Math.ceil(arg); |
| 482 | else if (name.equals("abs")) |
| 483 | return Math.abs(arg); |
| 484 | else if (name.equals("cos")) |
| 485 | return Math.cos(arg); |
| 486 | else if (name.equals("exp")) |
| 487 | return Math.exp(arg); |
| 488 | else if (name.equals("floor")) |
| 489 | return Math.floor(arg); |
| 490 | else if (name.equals("log")) |
| 491 | return Math.log(arg); |
| 492 | else if (name.equals("log10")) |
| 493 | return Math.log10(arg); |
| 494 | else if (name.equals("round")) |
| 495 | return Math.round(arg); |
| 496 | else if (name.equals("sin")) |
| 497 | return Math.sin(arg); |
| 498 | else if (name.equals("sqr")) |
| 499 | return arg*arg; |
| 500 | else if (name.equals("sqrt")) |
| 501 | return Math.sqrt(arg); |
| 502 | else if (name.equals("tan")) |
| 503 | return Math.tan(arg); |
| 504 | else if (name.equals("atan")) |
| 505 | return Math.atan(arg); |
| 506 | else if (name.equals("asin")) |
| 507 | return Math.asin(arg); |
| 508 | else if (name.equals("acos")) |
| 509 | return Math.acos(arg); |
| 510 | else if (name.equals("erf")) |
no test coverage detected