use Machine::Epsilon for machine accuracy