Adding functions to padmath
The simple padmath replacement for MathPad works for almost everything I used MathPad for. Every once in a while, however, I need a function that bc doesn’t have but that MathPad did. Three of the most common things I end up needing are π for determining area, and abs and trunc for getting the absolute value or to drop the fractions from a value.
The bc program does support creating functions, so I’ve added those three items to the prepended text that, previously, just set the system to use four decimal points.
Replace “print WRITE "scale=4\n";” with:
[toggle code]
- #functions
- print WRITE <<'ENDFUNCTIONS';
- #padmath values
- pi = 3.1416
- #padmath functions
-
define abs(value) {
-
if (value < 0) {
- return -value
-
} else {
- return value
- }
-
if (value < 0) {
- }
-
define trunc(value) {
- old_scale=scale
- scale=0
- int_value=value/1
- scale=old_scale
- return int_value
- }
- #not in MathPad
-
define ceiling(value) {
- return -floor(-value);
- }
-
define floor(value) {
- int_value = trunc(value)
-
if (value != int_value && value < 0) {
- int_value = int_value -1
- }
- return int_value
- }
- scale=4
- ENDFUNCTIONS
So I can now do something like this because I’m looking for a year:
- --25-year shingles reduced 25% for being overlay, and then they’re already five years old
- 25*.75-5: 13.75
- 2012+trunc(#): 2025
Or, calculate the area of a circle:
- diameter = 9
- radius = diameter/2
- pi*radius^2: 63.6174
Doing this I also got carried away and added ceiling and floor to the mix, because just using trunc isn’t always exactly right. Using either of those extra functions will make the pad incompatible with MathPad, however.
In response to A simple math pad in Perl: I finally upgraded to Lion at the office; that means no more Mark Widholm MathPad. I got a simple replacement working using SilverService and Perl.