public static long subtractL(final long a, final long b) throws DynamicError {
final long surplus = a - b;
if(a < 0 && b > 0) {
if(surplus > 0) {
throw new DynamicError("err:FOAR0002", "long overflows: " + a + " - " + b
+ " = " + surplus);
}
} else if(a > 0 && b < 0) {
if(surplus < 0) {
throw new DynamicError("err:FOAR0002", "long overflows: " + a + " - " + b
+ " = " + surplus);
}
}
return surplus;
}