added M_PI definition