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:
 25year shingles reduced 25% for being overlay, and then they’re already five years old
 25*.755: 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.