complementary geometric programming