signed multiplication with overflow support